FFmpeg
Macros | Functions
hevcdsp_init.c File Reference
#include "config.h"
#include "libavutil/cpu.h"
#include "libavutil/mem_internal.h"
#include "libavutil/x86/asm.h"
#include "libavutil/x86/cpu.h"
#include "libavcodec/get_bits.h"
#include "libavcodec/hevcdsp.h"
#include "libavcodec/x86/hevcdsp.h"

Go to the source code of this file.

Macros

#define LFC_FUNC(DIR, DEPTH, OPT)   void ff_hevc_ ## DIR ## _loop_filter_chroma_ ## DEPTH ## _ ## OPT(uint8_t *pix, ptrdiff_t stride, int *tc, uint8_t *no_p, uint8_t *no_q);
 
#define LFL_FUNC(DIR, DEPTH, OPT)   void ff_hevc_ ## DIR ## _loop_filter_luma_ ## DEPTH ## _ ## OPT(uint8_t *pix, ptrdiff_t stride, int beta, int *tc, uint8_t *no_p, uint8_t *no_q);
 
#define LFC_FUNCS(type, depth, opt)
 
#define LFL_FUNCS(type, depth, opt)
 
#define IDCT_DC_FUNCS(W, opt)
 
#define IDCT_FUNCS(opt)
 
#define mc_rep_func(name, bitd, step, W, opt)
 
#define mc_rep_uni_func(name, bitd, step, W, opt)
 
#define mc_rep_bi_func(name, bitd, step, W, opt)
 
#define mc_rep_funcs(name, bitd, step, W, opt)
 
#define mc_rep_func2(name, bitd, step1, step2, W, opt)
 
#define mc_rep_uni_func2(name, bitd, step1, step2, W, opt)
 
#define mc_rep_bi_func2(name, bitd, step1, step2, W, opt)
 
#define mc_rep_funcs2(name, bitd, step1, step2, W, opt)
 
#define SAO_BAND_FILTER_FUNCS(bitd, opt)
 
#define SAO_BAND_INIT(bitd, opt)
 
#define SAO_EDGE_FILTER_FUNCS(bitd, opt)
 
#define SAO_EDGE_INIT(bitd, opt)
 
#define EPEL_LINKS(pointer, my, mx, fname, bitd, opt)
 
#define QPEL_LINKS(pointer, my, mx, fname, bitd, opt)
 

Functions

 IDCT_DC_FUNCS (4x4, mmxext)
 
 IDCT_DC_FUNCS (8x8, mmxext)
 
 IDCT_DC_FUNCS (8x8, sse2)
 
 IDCT_DC_FUNCS (16x16, sse2)
 
 IDCT_DC_FUNCS (32x32, sse2)
 
 IDCT_DC_FUNCS (16x16, avx2)
 
 IDCT_DC_FUNCS (32x32, avx2)
 
void ff_hevc_dsp_init_x86 (HEVCDSPContext *c, const int bit_depth)
 

Macro Definition Documentation

◆ LFC_FUNC

#define LFC_FUNC (   DIR,
  DEPTH,
  OPT 
)    void ff_hevc_ ## DIR ## _loop_filter_chroma_ ## DEPTH ## _ ## OPT(uint8_t *pix, ptrdiff_t stride, int *tc, uint8_t *no_p, uint8_t *no_q);

Definition at line 32 of file hevcdsp_init.c.

◆ LFL_FUNC

#define LFL_FUNC (   DIR,
  DEPTH,
  OPT 
)    void ff_hevc_ ## DIR ## _loop_filter_luma_ ## DEPTH ## _ ## OPT(uint8_t *pix, ptrdiff_t stride, int beta, int *tc, uint8_t *no_p, uint8_t *no_q);

Definition at line 35 of file hevcdsp_init.c.

◆ LFC_FUNCS

#define LFC_FUNCS (   type,
  depth,
  opt 
)
Value:
LFC_FUNC(h, depth, opt) \
LFC_FUNC(v, depth, opt)

Definition at line 38 of file hevcdsp_init.c.

◆ LFL_FUNCS

#define LFL_FUNCS (   type,
  depth,
  opt 
)
Value:
LFL_FUNC(h, depth, opt) \
LFL_FUNC(v, depth, opt)

Definition at line 42 of file hevcdsp_init.c.

◆ IDCT_DC_FUNCS

#define IDCT_DC_FUNCS (   W,
  opt 
)
Value:
void ff_hevc_idct_ ## W ## _dc_8_ ## opt(int16_t *coeffs); \
void ff_hevc_idct_ ## W ## _dc_10_ ## opt(int16_t *coeffs); \
void ff_hevc_idct_ ## W ## _dc_12_ ## opt(int16_t *coeffs)

Definition at line 62 of file hevcdsp_init.c.

◆ IDCT_FUNCS

#define IDCT_FUNCS (   opt)
Value:
void ff_hevc_idct_4x4_8_ ## opt(int16_t *coeffs, int col_limit); \
void ff_hevc_idct_4x4_10_ ## opt(int16_t *coeffs, int col_limit); \
void ff_hevc_idct_8x8_8_ ## opt(int16_t *coeffs, int col_limit); \
void ff_hevc_idct_8x8_10_ ## opt(int16_t *coeffs, int col_limit); \
void ff_hevc_idct_16x16_8_ ## opt(int16_t *coeffs, int col_limit); \
void ff_hevc_idct_16x16_10_ ## opt(int16_t *coeffs, int col_limit); \
void ff_hevc_idct_32x32_8_ ## opt(int16_t *coeffs, int col_limit); \
void ff_hevc_idct_32x32_10_ ## opt(int16_t *coeffs, int col_limit);

Definition at line 75 of file hevcdsp_init.c.

◆ mc_rep_func

#define mc_rep_func (   name,
  bitd,
  step,
  W,
  opt 
)
Value:
void ff_hevc_put_hevc_##name##W##_##bitd##_##opt(int16_t *_dst, \
uint8_t *_src, ptrdiff_t _srcstride, int height, \
intptr_t mx, intptr_t my, int width) \
{ \
int i; \
uint8_t *src; \
int16_t *dst; \
for (i = 0; i < W; i += step) { \
src = _src + (i * ((bitd + 7) / 8)); \
dst = _dst + i; \
ff_hevc_put_hevc_##name##step##_##bitd##_##opt(dst, src, _srcstride, height, mx, my, width); \
} \
}

Definition at line 88 of file hevcdsp_init.c.

◆ mc_rep_uni_func

#define mc_rep_uni_func (   name,
  bitd,
  step,
  W,
  opt 
)
Value:
void ff_hevc_put_hevc_uni_##name##W##_##bitd##_##opt(uint8_t *_dst, ptrdiff_t dststride, \
uint8_t *_src, ptrdiff_t _srcstride, int height, \
intptr_t mx, intptr_t my, int width) \
{ \
int i; \
uint8_t *src; \
uint8_t *dst; \
for (i = 0; i < W; i += step) { \
src = _src + (i * ((bitd + 7) / 8)); \
dst = _dst + (i * ((bitd + 7) / 8)); \
ff_hevc_put_hevc_uni_##name##step##_##bitd##_##opt(dst, dststride, src, _srcstride, \
height, mx, my, width); \
} \
}

Definition at line 102 of file hevcdsp_init.c.

◆ mc_rep_bi_func

#define mc_rep_bi_func (   name,
  bitd,
  step,
  W,
  opt 
)
Value:
void ff_hevc_put_hevc_bi_##name##W##_##bitd##_##opt(uint8_t *_dst, ptrdiff_t dststride, uint8_t *_src, \
ptrdiff_t _srcstride, int16_t* _src2, \
int height, intptr_t mx, intptr_t my, int width) \
{ \
int i; \
uint8_t *src; \
uint8_t *dst; \
int16_t *src2; \
for (i = 0; i < W ; i += step) { \
src = _src + (i * ((bitd + 7) / 8)); \
dst = _dst + (i * ((bitd + 7) / 8)); \
src2 = _src2 + i; \
ff_hevc_put_hevc_bi_##name##step##_##bitd##_##opt(dst, dststride, src, _srcstride, src2, \
height, mx, my, width); \
} \
}

Definition at line 117 of file hevcdsp_init.c.

◆ mc_rep_funcs

#define mc_rep_funcs (   name,
  bitd,
  step,
  W,
  opt 
)
Value:
mc_rep_func(name, bitd, step, W, opt) \
mc_rep_uni_func(name, bitd, step, W, opt) \
mc_rep_bi_func(name, bitd, step, W, opt)

Definition at line 135 of file hevcdsp_init.c.

◆ mc_rep_func2

#define mc_rep_func2 (   name,
  bitd,
  step1,
  step2,
  W,
  opt 
)
Value:
void ff_hevc_put_hevc_##name##W##_##bitd##_##opt(int16_t *dst, \
uint8_t *src, ptrdiff_t _srcstride, int height, \
intptr_t mx, intptr_t my, int width) \
{ \
ff_hevc_put_hevc_##name##step1##_##bitd##_##opt(dst, src, _srcstride, height, mx, my, width); \
ff_hevc_put_hevc_##name##step2##_##bitd##_##opt(dst + step1, src + (step1 * ((bitd + 7) / 8)), \
_srcstride, height, mx, my, width); \
}

Definition at line 140 of file hevcdsp_init.c.

◆ mc_rep_uni_func2

#define mc_rep_uni_func2 (   name,
  bitd,
  step1,
  step2,
  W,
  opt 
)
Value:
void ff_hevc_put_hevc_uni_##name##W##_##bitd##_##opt(uint8_t *dst, ptrdiff_t dststride, \
uint8_t *src, ptrdiff_t _srcstride, int height, \
intptr_t mx, intptr_t my, int width) \
{ \
ff_hevc_put_hevc_uni_##name##step1##_##bitd##_##opt(dst, dststride, src, _srcstride, height, mx, my, width);\
ff_hevc_put_hevc_uni_##name##step2##_##bitd##_##opt(dst + (step1 * ((bitd + 7) / 8)), dststride, \
src + (step1 * ((bitd + 7) / 8)), _srcstride, \
height, mx, my, width); \
}

Definition at line 149 of file hevcdsp_init.c.

◆ mc_rep_bi_func2

#define mc_rep_bi_func2 (   name,
  bitd,
  step1,
  step2,
  W,
  opt 
)
Value:
void ff_hevc_put_hevc_bi_##name##W##_##bitd##_##opt(uint8_t *dst, ptrdiff_t dststride, uint8_t *src, \
ptrdiff_t _srcstride, int16_t* src2, \
int height, intptr_t mx, intptr_t my, int width) \
{ \
ff_hevc_put_hevc_bi_##name##step1##_##bitd##_##opt(dst, dststride, src, _srcstride, src2, height, mx, my, width);\
ff_hevc_put_hevc_bi_##name##step2##_##bitd##_##opt(dst + (step1 * ((bitd + 7) / 8)), dststride, \
src + (step1 * ((bitd + 7) / 8)), _srcstride, \
src2 + step1, height, mx, my, width); \
}

Definition at line 159 of file hevcdsp_init.c.

◆ mc_rep_funcs2

#define mc_rep_funcs2 (   name,
  bitd,
  step1,
  step2,
  W,
  opt 
)
Value:
mc_rep_func2(name, bitd, step1, step2, W, opt) \
mc_rep_uni_func2(name, bitd, step1, step2, W, opt) \
mc_rep_bi_func2(name, bitd, step1, step2, W, opt)

Definition at line 170 of file hevcdsp_init.c.

◆ SAO_BAND_FILTER_FUNCS

#define SAO_BAND_FILTER_FUNCS (   bitd,
  opt 
)
Value:
void ff_hevc_sao_band_filter_8_##bitd##_##opt(uint8_t *_dst, uint8_t *_src, ptrdiff_t _stride_dst, ptrdiff_t _stride_src, \
int16_t *sao_offset_val, int sao_left_class, int width, int height); \
void ff_hevc_sao_band_filter_16_##bitd##_##opt(uint8_t *_dst, uint8_t *_src, ptrdiff_t _stride_dst, ptrdiff_t _stride_src, \
int16_t *sao_offset_val, int sao_left_class, int width, int height); \
void ff_hevc_sao_band_filter_32_##bitd##_##opt(uint8_t *_dst, uint8_t *_src, ptrdiff_t _stride_dst, ptrdiff_t _stride_src, \
int16_t *sao_offset_val, int sao_left_class, int width, int height); \
void ff_hevc_sao_band_filter_48_##bitd##_##opt(uint8_t *_dst, uint8_t *_src, ptrdiff_t _stride_dst, ptrdiff_t _stride_src, \
int16_t *sao_offset_val, int sao_left_class, int width, int height); \
void ff_hevc_sao_band_filter_64_##bitd##_##opt(uint8_t *_dst, uint8_t *_src, ptrdiff_t _stride_dst, ptrdiff_t _stride_src, \
int16_t *sao_offset_val, int sao_left_class, int width, int height);

Definition at line 632 of file hevcdsp_init.c.

◆ SAO_BAND_INIT

#define SAO_BAND_INIT (   bitd,
  opt 
)
Value:
do { \
c->sao_band_filter[0] = ff_hevc_sao_band_filter_8_##bitd##_##opt; \
c->sao_band_filter[1] = ff_hevc_sao_band_filter_16_##bitd##_##opt; \
c->sao_band_filter[2] = ff_hevc_sao_band_filter_32_##bitd##_##opt; \
c->sao_band_filter[3] = ff_hevc_sao_band_filter_48_##bitd##_##opt; \
c->sao_band_filter[4] = ff_hevc_sao_band_filter_64_##bitd##_##opt; \
} while (0)

Definition at line 654 of file hevcdsp_init.c.

◆ SAO_EDGE_FILTER_FUNCS

#define SAO_EDGE_FILTER_FUNCS (   bitd,
  opt 
)
Value:
void ff_hevc_sao_edge_filter_8_##bitd##_##opt(uint8_t *_dst, uint8_t *_src, ptrdiff_t stride_dst, int16_t *sao_offset_val, \
int eo, int width, int height); \
void ff_hevc_sao_edge_filter_16_##bitd##_##opt(uint8_t *_dst, uint8_t *_src, ptrdiff_t stride_dst, int16_t *sao_offset_val, \
int eo, int width, int height); \
void ff_hevc_sao_edge_filter_32_##bitd##_##opt(uint8_t *_dst, uint8_t *_src, ptrdiff_t stride_dst, int16_t *sao_offset_val, \
int eo, int width, int height); \
void ff_hevc_sao_edge_filter_48_##bitd##_##opt(uint8_t *_dst, uint8_t *_src, ptrdiff_t stride_dst, int16_t *sao_offset_val, \
int eo, int width, int height); \
void ff_hevc_sao_edge_filter_64_##bitd##_##opt(uint8_t *_dst, uint8_t *_src, ptrdiff_t stride_dst, int16_t *sao_offset_val, \
int eo, int width, int height); \

Definition at line 662 of file hevcdsp_init.c.

◆ SAO_EDGE_INIT

#define SAO_EDGE_INIT (   bitd,
  opt 
)
Value:
do { \
c->sao_edge_filter[0] = ff_hevc_sao_edge_filter_8_##bitd##_##opt; \
c->sao_edge_filter[1] = ff_hevc_sao_edge_filter_16_##bitd##_##opt; \
c->sao_edge_filter[2] = ff_hevc_sao_edge_filter_32_##bitd##_##opt; \
c->sao_edge_filter[3] = ff_hevc_sao_edge_filter_48_##bitd##_##opt; \
c->sao_edge_filter[4] = ff_hevc_sao_edge_filter_64_##bitd##_##opt; \
} while (0)

Definition at line 681 of file hevcdsp_init.c.

◆ EPEL_LINKS

#define EPEL_LINKS (   pointer,
  my,
  mx,
  fname,
  bitd,
  opt 
)
Value:
PEL_LINK(pointer, 1, my , mx , fname##4 , bitd, opt ); \
PEL_LINK(pointer, 2, my , mx , fname##6 , bitd, opt ); \
PEL_LINK(pointer, 3, my , mx , fname##8 , bitd, opt ); \
PEL_LINK(pointer, 4, my , mx , fname##12, bitd, opt ); \
PEL_LINK(pointer, 5, my , mx , fname##16, bitd, opt ); \
PEL_LINK(pointer, 6, my , mx , fname##24, bitd, opt ); \
PEL_LINK(pointer, 7, my , mx , fname##32, bitd, opt ); \
PEL_LINK(pointer, 8, my , mx , fname##48, bitd, opt ); \
PEL_LINK(pointer, 9, my , mx , fname##64, bitd, opt )

Definition at line 689 of file hevcdsp_init.c.

◆ QPEL_LINKS

#define QPEL_LINKS (   pointer,
  my,
  mx,
  fname,
  bitd,
  opt 
)
Value:
PEL_LINK(pointer, 1, my , mx , fname##4 , bitd, opt ); \
PEL_LINK(pointer, 3, my , mx , fname##8 , bitd, opt ); \
PEL_LINK(pointer, 4, my , mx , fname##12, bitd, opt ); \
PEL_LINK(pointer, 5, my , mx , fname##16, bitd, opt ); \
PEL_LINK(pointer, 6, my , mx , fname##24, bitd, opt ); \
PEL_LINK(pointer, 7, my , mx , fname##32, bitd, opt ); \
PEL_LINK(pointer, 8, my , mx , fname##48, bitd, opt ); \
PEL_LINK(pointer, 9, my , mx , fname##64, bitd, opt )

Definition at line 699 of file hevcdsp_init.c.

Function Documentation

◆ IDCT_DC_FUNCS() [1/7]

IDCT_DC_FUNCS ( 4x4  ,
mmxext   
)

◆ IDCT_DC_FUNCS() [2/7]

IDCT_DC_FUNCS ( 8x8  ,
mmxext   
)

◆ IDCT_DC_FUNCS() [3/7]

IDCT_DC_FUNCS ( 8x8  ,
sse2   
)

◆ IDCT_DC_FUNCS() [4/7]

IDCT_DC_FUNCS ( 16x16  ,
sse2   
)

◆ IDCT_DC_FUNCS() [5/7]

IDCT_DC_FUNCS ( 32x32  ,
sse2   
)

◆ IDCT_DC_FUNCS() [6/7]

IDCT_DC_FUNCS ( 16x16  ,
avx2   
)

◆ IDCT_DC_FUNCS() [7/7]

IDCT_DC_FUNCS ( 32x32  ,
avx2   
)

◆ ff_hevc_dsp_init_x86()

void ff_hevc_dsp_init_x86 ( HEVCDSPContext c,
const int  bit_depth 
)

Definition at line 709 of file hevcdsp_init.c.

Referenced by ff_hevc_dsp_init().

name
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 default minimum maximum flags name is the option name
Definition: writing_filters.txt:88
mc_rep_func2
#define mc_rep_func2(name, bitd, step1, step2, W, opt)
Definition: hevcdsp_init.c:140
step
trying all byte sequences megabyte in length and selecting the best looking sequence will yield cases to try But a word about which is also called distortion Distortion can be quantified by almost any quality measurement one chooses the sum of squared differences is used but more complex methods that consider psychovisual effects can be used as well It makes no difference in this discussion First step
Definition: rate_distortion.txt:58
W
@ W
Definition: vf_addroi.c:26
mc_rep_func
#define mc_rep_func(name, bitd, step, W, opt)
Definition: hevcdsp_init.c:88
width
#define width
PEL_LINK
#define PEL_LINK(dst, idx1, idx2, idx3, name, D, opt)
Definition: hevcdsp.h:32
src
#define src
Definition: vp8dsp.c:255
LFL_FUNC
#define LFL_FUNC(DIR, DEPTH, OPT)
Definition: hevcdsp_init.c:35
height
#define height
LFC_FUNC
#define LFC_FUNC(DIR, DEPTH, OPT)
Definition: hevcdsp_init.c:32
i
#define i(width, name, range_min, range_max)
Definition: cbs_h2645.c:271
_
#define _
h
h
Definition: vp9dsp_template.c:2038