FFmpeg
Macros | Functions | Variables
hevc_mc_uni_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_MC(PEL, DIR, WIDTH, TAP, DIR1, FILT_DIR)
 
#define UNI_MC_HV(PEL, WIDTH, TAP)
 

Functions

static av_always_inline void common_hz_8t_64w_lsx (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
static av_always_inline void common_vt_8t_8w_lsx (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
static av_always_inline void common_vt_8t_16w_lsx (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height, int32_t width)
 
static void common_vt_8t_24w_lsx (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
static void common_vt_8t_32w_lsx (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
static void common_vt_8t_48w_lsx (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
static void common_vt_8t_64w_lsx (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
static av_always_inline void hevc_hv_8t_8x2_lsx (const 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 width)
 
static void hevc_hv_8t_8w_lsx (const 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)
 
static void hevc_hv_8t_16w_lsx (const 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)
 
static void hevc_hv_8t_24w_lsx (const 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)
 
static void hevc_hv_8t_32w_lsx (const 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)
 
static void hevc_hv_8t_48w_lsx (const 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)
 
static void hevc_hv_8t_64w_lsx (const 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)
 
static av_always_inline void common_vt_4t_24w_lsx (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
static av_always_inline void common_vt_4t_32w_lsx (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
static av_always_inline void hevc_hv_4t_8x2_lsx (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter_x, const int8_t *filter_y)
 
static av_always_inline void hevc_hv_4t_8multx4_lsx (const 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 width8mult)
 
static av_always_inline void hevc_hv_4t_8x6_lsx (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter_x, const int8_t *filter_y)
 
static av_always_inline void hevc_hv_4t_8multx4mult_lsx (const 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 width8mult)
 
static void hevc_hv_4t_8w_lsx (const 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)
 
static av_always_inline void hevc_hv_4t_12w_lsx (const 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)
 
static void hevc_hv_4t_16w_lsx (const 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)
 
static void hevc_hv_4t_24w_lsx (const 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)
 
static void hevc_hv_4t_32w_lsx (const 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)
 
 UNI_MC (qpel, h, 64, 8, hz, mx)
 
 UNI_MC (qpel, v, 24, 8, vt, my)
 
 UNI_MC (qpel, v, 32, 8, vt, my)
 
 UNI_MC (qpel, v, 48, 8, vt, my)
 
 UNI_MC (qpel, v, 64, 8, vt, my)
 
 UNI_MC (epel, v, 24, 4, vt, my)
 
 UNI_MC (epel, v, 32, 4, vt, my)
 
 UNI_MC_HV (qpel, 8, 8)
 
 UNI_MC_HV (qpel, 16, 8)
 
 UNI_MC_HV (qpel, 24, 8)
 
 UNI_MC_HV (qpel, 32, 8)
 
 UNI_MC_HV (qpel, 48, 8)
 
 UNI_MC_HV (qpel, 64, 8)
 
 UNI_MC_HV (epel, 8, 4)
 
 UNI_MC_HV (epel, 12, 4)
 
 UNI_MC_HV (epel, 16, 4)
 
 UNI_MC_HV (epel, 24, 4)
 
 UNI_MC_HV (epel, 32, 4)
 

Variables

static const uint8_t ff_hevc_mask_arr [16 *3]
 

Macro Definition Documentation

◆ UNI_MC

#define UNI_MC (   PEL,
  DIR,
  WIDTH,
  TAP,
  DIR1,
  FILT_DIR 
)
Value:
void ff_hevc_put_hevc_uni_##PEL##_##DIR##WIDTH##_8_lsx(uint8_t *dst, \
ptrdiff_t dst_stride, \
const uint8_t *src, \
ptrdiff_t src_stride, \
int height, \
intptr_t mx, \
intptr_t my, \
int width) \
{ \
const int8_t *filter = ff_hevc_##PEL##_filters[FILT_DIR]; \
\
common_##DIR1##_##TAP##t_##WIDTH##w_lsx(src, src_stride, dst, dst_stride, \
}

Definition at line 1366 of file hevc_mc_uni_lsx.c.

◆ UNI_MC_HV

#define UNI_MC_HV (   PEL,
  WIDTH,
  TAP 
)
Value:
void ff_hevc_put_hevc_uni_##PEL##_hv##WIDTH##_8_lsx(uint8_t *dst, \
ptrdiff_t dst_stride, \
const uint8_t *src, \
ptrdiff_t src_stride, \
int height, \
intptr_t mx, \
intptr_t my, \
int width) \
{ \
const int8_t *filter_x = ff_hevc_##PEL##_filters[mx]; \
const int8_t *filter_y = ff_hevc_##PEL##_filters[my]; \
\
hevc_hv_##TAP##t_##WIDTH##w_lsx(src, src_stride, dst, dst_stride, \
filter_x, filter_y, height); \
}

Definition at line 1394 of file hevc_mc_uni_lsx.c.

Function Documentation

◆ common_hz_8t_64w_lsx()

static av_always_inline void common_hz_8t_64w_lsx ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 36 of file hevc_mc_uni_lsx.c.

◆ common_vt_8t_8w_lsx()

static av_always_inline void common_vt_8t_8w_lsx ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 128 of file hevc_mc_uni_lsx.c.

Referenced by common_vt_8t_24w_lsx().

◆ common_vt_8t_16w_lsx()

static av_always_inline void common_vt_8t_16w_lsx ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height,
int32_t  width 
)
static

◆ common_vt_8t_24w_lsx()

static void common_vt_8t_24w_lsx ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 307 of file hevc_mc_uni_lsx.c.

◆ common_vt_8t_32w_lsx()

static void common_vt_8t_32w_lsx ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 316 of file hevc_mc_uni_lsx.c.

◆ common_vt_8t_48w_lsx()

static void common_vt_8t_48w_lsx ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 323 of file hevc_mc_uni_lsx.c.

◆ common_vt_8t_64w_lsx()

static void common_vt_8t_64w_lsx ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 330 of file hevc_mc_uni_lsx.c.

◆ hevc_hv_8t_8x2_lsx()

static av_always_inline void hevc_hv_8t_8x2_lsx ( const 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  width 
)
static

◆ hevc_hv_8t_8w_lsx()

static void hevc_hv_8t_8w_lsx ( const 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 
)
static

Definition at line 499 of file hevc_mc_uni_lsx.c.

◆ hevc_hv_8t_16w_lsx()

static void hevc_hv_8t_16w_lsx ( const 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 
)
static

Definition at line 507 of file hevc_mc_uni_lsx.c.

◆ hevc_hv_8t_24w_lsx()

static void hevc_hv_8t_24w_lsx ( const 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 
)
static

Definition at line 515 of file hevc_mc_uni_lsx.c.

◆ hevc_hv_8t_32w_lsx()

static void hevc_hv_8t_32w_lsx ( const 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 
)
static

Definition at line 523 of file hevc_mc_uni_lsx.c.

◆ hevc_hv_8t_48w_lsx()

static void hevc_hv_8t_48w_lsx ( const 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 
)
static

Definition at line 531 of file hevc_mc_uni_lsx.c.

◆ hevc_hv_8t_64w_lsx()

static void hevc_hv_8t_64w_lsx ( const 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 
)
static

Definition at line 539 of file hevc_mc_uni_lsx.c.

◆ common_vt_4t_24w_lsx()

static av_always_inline void common_vt_4t_24w_lsx ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 548 of file hevc_mc_uni_lsx.c.

◆ common_vt_4t_32w_lsx()

static av_always_inline void common_vt_4t_32w_lsx ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 654 of file hevc_mc_uni_lsx.c.

◆ hevc_hv_4t_8x2_lsx()

static av_always_inline void hevc_hv_4t_8x2_lsx ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter_x,
const int8_t *  filter_y 
)
static

Definition at line 748 of file hevc_mc_uni_lsx.c.

Referenced by hevc_hv_4t_8w_lsx().

◆ hevc_hv_4t_8multx4_lsx()

static av_always_inline void hevc_hv_4t_8multx4_lsx ( const 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  width8mult 
)
static

Definition at line 809 of file hevc_mc_uni_lsx.c.

Referenced by hevc_hv_4t_16w_lsx(), and hevc_hv_4t_8w_lsx().

◆ hevc_hv_4t_8x6_lsx()

static av_always_inline void hevc_hv_4t_8x6_lsx ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter_x,
const int8_t *  filter_y 
)
static

Definition at line 905 of file hevc_mc_uni_lsx.c.

Referenced by hevc_hv_4t_8w_lsx().

◆ hevc_hv_4t_8multx4mult_lsx()

static av_always_inline void hevc_hv_4t_8multx4mult_lsx ( const 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  width8mult 
)
static

◆ hevc_hv_4t_8w_lsx()

static void hevc_hv_4t_8w_lsx ( const 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 
)
static

Definition at line 1131 of file hevc_mc_uni_lsx.c.

◆ hevc_hv_4t_12w_lsx()

static av_always_inline void hevc_hv_4t_12w_lsx ( const 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 
)
static

Definition at line 1149 of file hevc_mc_uni_lsx.c.

◆ hevc_hv_4t_16w_lsx()

static void hevc_hv_4t_16w_lsx ( const 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 
)
static

Definition at line 1337 of file hevc_mc_uni_lsx.c.

◆ hevc_hv_4t_24w_lsx()

static void hevc_hv_4t_24w_lsx ( const 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 
)
static

Definition at line 1350 of file hevc_mc_uni_lsx.c.

◆ hevc_hv_4t_32w_lsx()

static void hevc_hv_4t_32w_lsx ( const 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 
)
static

Definition at line 1358 of file hevc_mc_uni_lsx.c.

◆ UNI_MC() [1/7]

UNI_MC ( qpel  ,
h  ,
64  ,
,
hz  ,
mx   
)

◆ UNI_MC() [2/7]

UNI_MC ( qpel  ,
,
24  ,
,
vt  ,
my   
)

◆ UNI_MC() [3/7]

UNI_MC ( qpel  ,
,
32  ,
,
vt  ,
my   
)

◆ UNI_MC() [4/7]

UNI_MC ( qpel  ,
,
48  ,
,
vt  ,
my   
)

◆ UNI_MC() [5/7]

UNI_MC ( qpel  ,
,
64  ,
,
vt  ,
my   
)

◆ UNI_MC() [6/7]

UNI_MC ( epel  ,
,
24  ,
,
vt  ,
my   
)

◆ UNI_MC() [7/7]

UNI_MC ( epel  ,
,
32  ,
,
vt  ,
my   
)

◆ UNI_MC_HV() [1/11]

UNI_MC_HV ( qpel  ,
,
 
)

◆ UNI_MC_HV() [2/11]

UNI_MC_HV ( qpel  ,
16  ,
 
)

◆ UNI_MC_HV() [3/11]

UNI_MC_HV ( qpel  ,
24  ,
 
)

◆ UNI_MC_HV() [4/11]

UNI_MC_HV ( qpel  ,
32  ,
 
)

◆ UNI_MC_HV() [5/11]

UNI_MC_HV ( qpel  ,
48  ,
 
)

◆ UNI_MC_HV() [6/11]

UNI_MC_HV ( qpel  ,
64  ,
 
)

◆ UNI_MC_HV() [7/11]

UNI_MC_HV ( epel  ,
,
 
)

◆ UNI_MC_HV() [8/11]

UNI_MC_HV ( epel  ,
12  ,
 
)

◆ UNI_MC_HV() [9/11]

UNI_MC_HV ( epel  ,
16  ,
 
)

◆ UNI_MC_HV() [10/11]

UNI_MC_HV ( epel  ,
24  ,
 
)

◆ UNI_MC_HV() [11/11]

UNI_MC_HV ( epel  ,
32  ,
 
)

Variable Documentation

◆ ff_hevc_mask_arr

const uint8_t ff_hevc_mask_arr[16 *3]
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,
8, 9, 9, 10, 10, 11, 11, 12, 24, 25, 25, 26, 26, 27, 27, 28
}

Definition at line 26 of file hevc_mc_uni_lsx.c.

Referenced by common_hz_8t_64w_lsx(), hevc_hv_4t_12w_lsx(), hevc_hv_4t_8multx4_lsx(), hevc_hv_4t_8multx4mult_lsx(), hevc_hv_4t_8x2_lsx(), hevc_hv_4t_8x6_lsx(), and hevc_hv_8t_8x2_lsx().

filter
filter_frame For filters that do not use the this method is called when a frame is pushed to the filter s input It can be called at any time except in a reentrant way If the input frame is enough to produce then the filter should push the output frames on the output link immediately As an exception to the previous rule if the input frame is enough to produce several output frames then the filter needs output only at least one per link The additional frames can be left buffered in the filter
Definition: filter_design.txt:228
width
#define width
WIDTH
#define WIDTH
Definition: c93.c:44
height
#define height
_
#define _
src
INIT_CLIP pixel * src
Definition: h264pred_template.c:418