68 const int chroma_format_idc)
71 #define FUNC(a, depth) a ## _ ## depth ## _c 73 #define ADDPX_DSP(depth) \ 74 c->h264_add_pixels4_clear = FUNC(ff_h264_add_pixels4, depth);\ 75 c->h264_add_pixels8_clear = FUNC(ff_h264_add_pixels8, depth) 77 if (bit_depth > 8 && bit_depth <= 16) {
83 #define H264_DSP(depth) \ 84 c->h264_idct_add= FUNC(ff_h264_idct_add, depth);\ 85 c->h264_idct8_add= FUNC(ff_h264_idct8_add, depth);\ 86 c->h264_idct_dc_add= FUNC(ff_h264_idct_dc_add, depth);\ 87 c->h264_idct8_dc_add= FUNC(ff_h264_idct8_dc_add, depth);\ 88 c->h264_idct_add16 = FUNC(ff_h264_idct_add16, depth);\ 89 c->h264_idct8_add4 = FUNC(ff_h264_idct8_add4, depth);\ 90 if (chroma_format_idc <= 1)\ 91 c->h264_idct_add8 = FUNC(ff_h264_idct_add8, depth);\ 93 c->h264_idct_add8 = FUNC(ff_h264_idct_add8_422, depth);\ 94 c->h264_idct_add16intra= FUNC(ff_h264_idct_add16intra, depth);\ 95 c->h264_luma_dc_dequant_idct= FUNC(ff_h264_luma_dc_dequant_idct, depth);\ 96 if (chroma_format_idc <= 1)\ 97 c->h264_chroma_dc_dequant_idct= FUNC(ff_h264_chroma_dc_dequant_idct, depth);\ 99 c->h264_chroma_dc_dequant_idct= FUNC(ff_h264_chroma422_dc_dequant_idct, depth);\ 101 c->weight_h264_pixels_tab[0]= FUNC(weight_h264_pixels16, depth);\ 102 c->weight_h264_pixels_tab[1]= FUNC(weight_h264_pixels8, depth);\ 103 c->weight_h264_pixels_tab[2]= FUNC(weight_h264_pixels4, depth);\ 104 c->weight_h264_pixels_tab[3]= FUNC(weight_h264_pixels2, depth);\ 105 c->biweight_h264_pixels_tab[0]= FUNC(biweight_h264_pixels16, depth);\ 106 c->biweight_h264_pixels_tab[1]= FUNC(biweight_h264_pixels8, depth);\ 107 c->biweight_h264_pixels_tab[2]= FUNC(biweight_h264_pixels4, depth);\ 108 c->biweight_h264_pixels_tab[3]= FUNC(biweight_h264_pixels2, depth);\ 110 c->h264_v_loop_filter_luma= FUNC(h264_v_loop_filter_luma, depth);\ 111 c->h264_h_loop_filter_luma= FUNC(h264_h_loop_filter_luma, depth);\ 112 c->h264_h_loop_filter_luma_mbaff= FUNC(h264_h_loop_filter_luma_mbaff, depth);\ 113 c->h264_v_loop_filter_luma_intra= FUNC(h264_v_loop_filter_luma_intra, depth);\ 114 c->h264_h_loop_filter_luma_intra= FUNC(h264_h_loop_filter_luma_intra, depth);\ 115 c->h264_h_loop_filter_luma_mbaff_intra= FUNC(h264_h_loop_filter_luma_mbaff_intra, depth);\ 116 c->h264_v_loop_filter_chroma= FUNC(h264_v_loop_filter_chroma, depth);\ 117 if (chroma_format_idc <= 1)\ 118 c->h264_h_loop_filter_chroma= FUNC(h264_h_loop_filter_chroma, depth);\ 120 c->h264_h_loop_filter_chroma= FUNC(h264_h_loop_filter_chroma422, depth);\ 121 if (chroma_format_idc <= 1)\ 122 c->h264_h_loop_filter_chroma_mbaff= FUNC(h264_h_loop_filter_chroma_mbaff, depth);\ 124 c->h264_h_loop_filter_chroma_mbaff= FUNC(h264_h_loop_filter_chroma422_mbaff, depth);\ 125 c->h264_v_loop_filter_chroma_intra= FUNC(h264_v_loop_filter_chroma_intra, depth);\ 126 if (chroma_format_idc <= 1)\ 127 c->h264_h_loop_filter_chroma_intra= FUNC(h264_h_loop_filter_chroma_intra, depth);\ 129 c->h264_h_loop_filter_chroma_intra= FUNC(h264_h_loop_filter_chroma422_intra, depth);\ 130 if (chroma_format_idc <= 1)\ 131 c->h264_h_loop_filter_chroma_mbaff_intra= FUNC(h264_h_loop_filter_chroma_mbaff_intra, depth);\ 133 c->h264_h_loop_filter_chroma_mbaff_intra= FUNC(h264_h_loop_filter_chroma422_mbaff_intra, depth);\ 134 c->h264_loop_filter_strength= NULL;
Macro definitions for various function/variable attributes.
#define av_assert0(cond)
assert() equivalent, that is always enabled.
av_cold void ff_h264dsp_init_arm(H264DSPContext *c, const int bit_depth, const int chroma_format_idc)
Undefined Behavior In the C some operations are like signed integer dereferencing freed accessing outside allocated Undefined Behavior must not occur in a C it is not safe even if the output of undefined operations is unused The unsafety may seem nit picking but Optimizing compilers have in fact optimized code on the assumption that no undefined Behavior occurs Optimizing code based on wrong assumptions can and has in some cases lead to effects beyond the output of computations The signed integer overflow problem in speed critical code Code which is highly optimized and works with signed integers sometimes has the problem that often the output of the computation does not c
void ff_h264dsp_init_mips(H264DSPContext *c, const int bit_depth, const int chroma_format_idc)
int(* startcode_find_candidate)(const uint8_t *buf, int size)
Search buf from the start for up to size bytes.
H.264 / AVC / MPEG-4 part10 DSP functions.
av_cold void ff_h264dsp_init_aarch64(H264DSPContext *c, const int bit_depth, const int chroma_format_idc)
simple assert() macros that are a bit more flexible than ISO C assert().
Accelerated start code search function for start codes common to MPEG-1/2/4 video, VC-1, H.264/5.
Context for storing H.264 DSP functions.
static void bit_depth(AudioStatsContext *s, uint64_t mask, uint64_t imask, AVRational *depth)
av_cold void ff_h264dsp_init_ppc(H264DSPContext *c, const int bit_depth, const int chroma_format_idc)
H.264 / AVC / MPEG-4 part10 DSP functions.
int ff_startcode_find_candidate_c(const uint8_t *buf, int size)
Libavcodec external API header.
common internal and external API header
void ff_h264dsp_init_x86(H264DSPContext *c, const int bit_depth, const int chroma_format_idc)
av_cold void ff_h264dsp_init(H264DSPContext *c, const int bit_depth, const int chroma_format_idc)