FFmpeg
Macros | Functions | Variables
hevc_mc_uniw_lsx.c File Reference
#include "libavutil/loongarch/loongson_intrinsics.h"
#include "hevcdsp_lsx.h"

Go to the source code of this file.

Macros

#define UNI_W_MC_HV(PEL, WIDTH, TAP)
 

Functions

static av_always_inline void hevc_hv_8t_8x2_lsx (uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter_x, const int8_t *filter_y, int32_t height, int32_t weight, int32_t offset, int32_t rnd_val, int32_t width)
 
static void hevc_hv_8t_8w_lsx (uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter_x, const int8_t *filter_y, int32_t height, int32_t weight, int32_t offset, int32_t rnd_val)
 
static void hevc_hv_8t_16w_lsx (uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter_x, const int8_t *filter_y, int32_t height, int32_t weight, int32_t offset, int32_t rnd_val)
 
static void hevc_hv_8t_24w_lsx (uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter_x, const int8_t *filter_y, int32_t height, int32_t weight, int32_t offset, int32_t rnd_val)
 
static void hevc_hv_8t_32w_lsx (uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter_x, const int8_t *filter_y, int32_t height, int32_t weight, int32_t offset, int32_t rnd_val)
 
static void hevc_hv_8t_48w_lsx (uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter_x, const int8_t *filter_y, int32_t height, int32_t weight, int32_t offset, int32_t rnd_val)
 
static void hevc_hv_8t_64w_lsx (uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter_x, const int8_t *filter_y, int32_t height, int32_t weight, int32_t offset, int32_t rnd_val)
 
 UNI_W_MC_HV (qpel, 8, 8)
 
 UNI_W_MC_HV (qpel, 16, 8)
 
 UNI_W_MC_HV (qpel, 24, 8)
 
 UNI_W_MC_HV (qpel, 32, 8)
 
 UNI_W_MC_HV (qpel, 48, 8)
 
 UNI_W_MC_HV (qpel, 64, 8)
 

Variables

static const uint8_t ff_hevc_mask_arr [16 *2]
 

Macro Definition Documentation

◆ UNI_W_MC_HV

#define UNI_W_MC_HV (   PEL,
  WIDTH,
  TAP 
)
Value:
void ff_hevc_put_hevc_uni_w_##PEL##_hv##WIDTH##_8_lsx(uint8_t *dst, \
ptrdiff_t dst_stride, \
uint8_t *src, \
ptrdiff_t src_stride, \
int height, \
int denom, \
int weight, \
int offset, \
intptr_t mx, \
intptr_t my, \
int width) \
{ \
const int8_t *filter_x = ff_hevc_##PEL##_filters[mx - 1]; \
const int8_t *filter_y = ff_hevc_##PEL##_filters[my - 1]; \
int shift = denom + 14 - 8; \
\
hevc_hv_##TAP##t_##WIDTH##w_lsx(src, src_stride, dst, dst_stride, filter_x,\
filter_y, height, weight, offset, shift); \
}

Definition at line 270 of file hevc_mc_uniw_lsx.c.

Function Documentation

◆ hevc_hv_8t_8x2_lsx()

static av_always_inline void hevc_hv_8t_8x2_lsx ( uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter_x,
const int8_t *  filter_y,
int32_t  height,
int32_t  weight,
int32_t  offset,
int32_t  rnd_val,
int32_t  width 
)
static

◆ hevc_hv_8t_8w_lsx()

static void hevc_hv_8t_8w_lsx ( uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter_x,
const int8_t *  filter_y,
int32_t  height,
int32_t  weight,
int32_t  offset,
int32_t  rnd_val 
)
static

Definition at line 210 of file hevc_mc_uniw_lsx.c.

◆ hevc_hv_8t_16w_lsx()

static void hevc_hv_8t_16w_lsx ( uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter_x,
const int8_t *  filter_y,
int32_t  height,
int32_t  weight,
int32_t  offset,
int32_t  rnd_val 
)
static

Definition at line 220 of file hevc_mc_uniw_lsx.c.

◆ hevc_hv_8t_24w_lsx()

static void hevc_hv_8t_24w_lsx ( uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter_x,
const int8_t *  filter_y,
int32_t  height,
int32_t  weight,
int32_t  offset,
int32_t  rnd_val 
)
static

Definition at line 230 of file hevc_mc_uniw_lsx.c.

◆ hevc_hv_8t_32w_lsx()

static void hevc_hv_8t_32w_lsx ( uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter_x,
const int8_t *  filter_y,
int32_t  height,
int32_t  weight,
int32_t  offset,
int32_t  rnd_val 
)
static

Definition at line 240 of file hevc_mc_uniw_lsx.c.

◆ hevc_hv_8t_48w_lsx()

static void hevc_hv_8t_48w_lsx ( uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter_x,
const int8_t *  filter_y,
int32_t  height,
int32_t  weight,
int32_t  offset,
int32_t  rnd_val 
)
static

Definition at line 250 of file hevc_mc_uniw_lsx.c.

◆ hevc_hv_8t_64w_lsx()

static void hevc_hv_8t_64w_lsx ( uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter_x,
const int8_t *  filter_y,
int32_t  height,
int32_t  weight,
int32_t  offset,
int32_t  rnd_val 
)
static

Definition at line 260 of file hevc_mc_uniw_lsx.c.

◆ UNI_W_MC_HV() [1/6]

UNI_W_MC_HV ( qpel  ,
,
 
)

◆ UNI_W_MC_HV() [2/6]

UNI_W_MC_HV ( qpel  ,
16  ,
 
)

◆ UNI_W_MC_HV() [3/6]

UNI_W_MC_HV ( qpel  ,
24  ,
 
)

◆ UNI_W_MC_HV() [4/6]

UNI_W_MC_HV ( qpel  ,
32  ,
 
)

◆ UNI_W_MC_HV() [5/6]

UNI_W_MC_HV ( qpel  ,
48  ,
 
)

◆ UNI_W_MC_HV() [6/6]

UNI_W_MC_HV ( qpel  ,
64  ,
 
)

Variable Documentation

◆ ff_hevc_mask_arr

const uint8_t ff_hevc_mask_arr[16 *2]
static
Initial value:
= {
0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8,
0, 1, 1, 2, 2, 3, 3, 4, 16, 17, 17, 18, 18, 19, 19, 20
}

Definition at line 26 of file hevc_mc_uniw_lsx.c.

Referenced by hevc_hv_8t_8x2_lsx().

width
#define width
weight
static int weight(int i, int blen, int offset)
Definition: diracdec.c:1562
WIDTH
#define WIDTH
Definition: c93.c:44
height
#define height
offset
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf offset
Definition: writing_filters.txt:86
shift
static int shift(int a, int b)
Definition: sonic.c:88
src
INIT_CLIP pixel * src
Definition: h264pred_template.c:418