Revision 8dbe5856 libavcodec/h264dsp.c
libavcodec/h264dsp.c | ||
---|---|---|
29 | 29 |
#include "avcodec.h" |
30 | 30 |
#include "h264dsp.h" |
31 | 31 |
|
32 |
#define BIT_DEPTH 8 |
|
32 | 33 |
#include "h264dsp_internal.h" |
34 |
#undef BIT_DEPTH |
|
33 | 35 |
|
34 |
void ff_h264dsp_init(H264DSPContext *c) |
|
35 |
{ |
|
36 |
c->h264_idct_add= ff_h264_idct_add_c; |
|
37 |
c->h264_idct8_add= ff_h264_idct8_add_c; |
|
38 |
c->h264_idct_dc_add= ff_h264_idct_dc_add_c; |
|
39 |
c->h264_idct8_dc_add= ff_h264_idct8_dc_add_c; |
|
40 |
c->h264_idct_add16 = ff_h264_idct_add16_c; |
|
41 |
c->h264_idct8_add4 = ff_h264_idct8_add4_c; |
|
42 |
c->h264_idct_add8 = ff_h264_idct_add8_c; |
|
43 |
c->h264_idct_add16intra= ff_h264_idct_add16intra_c; |
|
44 |
c->h264_luma_dc_dequant_idct= ff_h264_luma_dc_dequant_idct_c; |
|
45 |
c->h264_chroma_dc_dequant_idct= ff_h264_chroma_dc_dequant_idct_c; |
|
36 |
#define BIT_DEPTH 9 |
|
37 |
#include "h264dsp_internal.h" |
|
38 |
#undef BIT_DEPTH |
|
39 |
|
|
40 |
#define BIT_DEPTH 10 |
|
41 |
#include "h264dsp_internal.h" |
|
42 |
#undef BIT_DEPTH |
|
46 | 43 |
|
47 |
c->weight_h264_pixels_tab[0]= weight_h264_pixels16x16_c; |
|
48 |
c->weight_h264_pixels_tab[1]= weight_h264_pixels16x8_c; |
|
49 |
c->weight_h264_pixels_tab[2]= weight_h264_pixels8x16_c; |
|
50 |
c->weight_h264_pixels_tab[3]= weight_h264_pixels8x8_c; |
|
51 |
c->weight_h264_pixels_tab[4]= weight_h264_pixels8x4_c; |
|
52 |
c->weight_h264_pixels_tab[5]= weight_h264_pixels4x8_c; |
|
53 |
c->weight_h264_pixels_tab[6]= weight_h264_pixels4x4_c; |
|
54 |
c->weight_h264_pixels_tab[7]= weight_h264_pixels4x2_c; |
|
55 |
c->weight_h264_pixels_tab[8]= weight_h264_pixels2x4_c; |
|
56 |
c->weight_h264_pixels_tab[9]= weight_h264_pixels2x2_c; |
|
57 |
c->biweight_h264_pixels_tab[0]= biweight_h264_pixels16x16_c; |
|
58 |
c->biweight_h264_pixels_tab[1]= biweight_h264_pixels16x8_c; |
|
59 |
c->biweight_h264_pixels_tab[2]= biweight_h264_pixels8x16_c; |
|
60 |
c->biweight_h264_pixels_tab[3]= biweight_h264_pixels8x8_c; |
|
61 |
c->biweight_h264_pixels_tab[4]= biweight_h264_pixels8x4_c; |
|
62 |
c->biweight_h264_pixels_tab[5]= biweight_h264_pixels4x8_c; |
|
63 |
c->biweight_h264_pixels_tab[6]= biweight_h264_pixels4x4_c; |
|
64 |
c->biweight_h264_pixels_tab[7]= biweight_h264_pixels4x2_c; |
|
65 |
c->biweight_h264_pixels_tab[8]= biweight_h264_pixels2x4_c; |
|
66 |
c->biweight_h264_pixels_tab[9]= biweight_h264_pixels2x2_c; |
|
44 |
void ff_h264dsp_init(H264DSPContext *c, const int bit_depth) |
|
45 |
{ |
|
46 |
#undef FUNC |
|
47 |
#define FUNC(a, depth) a ## _ ## depth ## _c |
|
67 | 48 |
|
68 |
c->h264_v_loop_filter_luma= h264_v_loop_filter_luma_c; |
|
69 |
c->h264_h_loop_filter_luma= h264_h_loop_filter_luma_c; |
|
70 |
c->h264_v_loop_filter_luma_intra= h264_v_loop_filter_luma_intra_c; |
|
71 |
c->h264_h_loop_filter_luma_intra= h264_h_loop_filter_luma_intra_c; |
|
72 |
c->h264_v_loop_filter_chroma= h264_v_loop_filter_chroma_c; |
|
73 |
c->h264_h_loop_filter_chroma= h264_h_loop_filter_chroma_c; |
|
74 |
c->h264_v_loop_filter_chroma_intra= h264_v_loop_filter_chroma_intra_c; |
|
75 |
c->h264_h_loop_filter_chroma_intra= h264_h_loop_filter_chroma_intra_c; |
|
49 |
#define H264_DSP(depth) \ |
|
50 |
c->h264_idct_add = FUNC(ff_h264_idct_add , depth);\ |
|
51 |
c->h264_idct8_add = FUNC(ff_h264_idct8_add , depth);\ |
|
52 |
c->h264_idct_dc_add = FUNC(ff_h264_idct_dc_add , depth);\ |
|
53 |
c->h264_idct8_dc_add = FUNC(ff_h264_idct8_dc_add , depth);\ |
|
54 |
c->h264_idct_add16 = FUNC(ff_h264_idct_add16 , depth);\ |
|
55 |
c->h264_idct8_add4 = FUNC(ff_h264_idct8_add4 , depth);\ |
|
56 |
c->h264_idct_add8 = FUNC(ff_h264_idct_add8 , depth);\ |
|
57 |
c->h264_idct_add16intra = FUNC(ff_h264_idct_add16intra , depth);\ |
|
58 |
c->h264_luma_dc_dequant_idct = FUNC(ff_h264_luma_dc_dequant_idct , depth);\ |
|
59 |
c->h264_chroma_dc_dequant_idct = FUNC(ff_h264_chroma_dc_dequant_idct , depth);\ |
|
60 |
\ |
|
61 |
c->weight_h264_pixels_tab[0] = FUNC( weight_h264_pixels16x16 , depth);\ |
|
62 |
c->weight_h264_pixels_tab[1] = FUNC( weight_h264_pixels16x8 , depth);\ |
|
63 |
c->weight_h264_pixels_tab[2] = FUNC( weight_h264_pixels8x16 , depth);\ |
|
64 |
c->weight_h264_pixels_tab[3] = FUNC( weight_h264_pixels8x8 , depth);\ |
|
65 |
c->weight_h264_pixels_tab[4] = FUNC( weight_h264_pixels8x4 , depth);\ |
|
66 |
c->weight_h264_pixels_tab[5] = FUNC( weight_h264_pixels4x8 , depth);\ |
|
67 |
c->weight_h264_pixels_tab[6] = FUNC( weight_h264_pixels4x4 , depth);\ |
|
68 |
c->weight_h264_pixels_tab[7] = FUNC( weight_h264_pixels4x2 , depth);\ |
|
69 |
c->weight_h264_pixels_tab[8] = FUNC( weight_h264_pixels2x4 , depth);\ |
|
70 |
c->weight_h264_pixels_tab[9] = FUNC( weight_h264_pixels2x2 , depth);\ |
|
71 |
c->biweight_h264_pixels_tab[0] = FUNC(biweight_h264_pixels16x16 , depth);\ |
|
72 |
c->biweight_h264_pixels_tab[1] = FUNC(biweight_h264_pixels16x8 , depth);\ |
|
73 |
c->biweight_h264_pixels_tab[2] = FUNC(biweight_h264_pixels8x16 , depth);\ |
|
74 |
c->biweight_h264_pixels_tab[3] = FUNC(biweight_h264_pixels8x8 , depth);\ |
|
75 |
c->biweight_h264_pixels_tab[4] = FUNC(biweight_h264_pixels8x4 , depth);\ |
|
76 |
c->biweight_h264_pixels_tab[5] = FUNC(biweight_h264_pixels4x8 , depth);\ |
|
77 |
c->biweight_h264_pixels_tab[6] = FUNC(biweight_h264_pixels4x4 , depth);\ |
|
78 |
c->biweight_h264_pixels_tab[7] = FUNC(biweight_h264_pixels4x2 , depth);\ |
|
79 |
c->biweight_h264_pixels_tab[8] = FUNC(biweight_h264_pixels2x4 , depth);\ |
|
80 |
c->biweight_h264_pixels_tab[9] = FUNC(biweight_h264_pixels2x2 , depth);\ |
|
81 |
\ |
|
82 |
c->h264_v_loop_filter_luma = FUNC(h264_v_loop_filter_luma , depth);\ |
|
83 |
c->h264_h_loop_filter_luma = FUNC(h264_h_loop_filter_luma , depth);\ |
|
84 |
c->h264_v_loop_filter_luma_intra = FUNC(h264_v_loop_filter_luma_intra , depth);\ |
|
85 |
c->h264_h_loop_filter_luma_intra = FUNC(h264_h_loop_filter_luma_intra , depth);\ |
|
86 |
c->h264_v_loop_filter_chroma = FUNC(h264_v_loop_filter_chroma , depth);\ |
|
87 |
c->h264_h_loop_filter_chroma = FUNC(h264_h_loop_filter_chroma , depth);\ |
|
88 |
c->h264_v_loop_filter_chroma_intra = FUNC(h264_v_loop_filter_chroma_intra, depth);\ |
|
89 |
c->h264_h_loop_filter_chroma_intra = FUNC(h264_h_loop_filter_chroma_intra, depth);\ |
|
76 | 90 |
c->h264_loop_filter_strength= NULL; |
77 | 91 |
|
78 |
if (ARCH_ARM) ff_h264dsp_init_arm(c); |
|
79 |
if (HAVE_ALTIVEC) ff_h264dsp_init_ppc(c); |
|
80 |
if (HAVE_MMX) ff_h264dsp_init_x86(c); |
|
92 |
switch (bit_depth) { |
|
93 |
case 9: |
|
94 |
H264_DSP(9); |
|
95 |
break; |
|
96 |
case 10: |
|
97 |
H264_DSP(10); |
|
98 |
break; |
|
99 |
default: |
|
100 |
H264_DSP(8); |
|
101 |
break; |
|
102 |
} |
|
103 |
|
|
104 |
if (ARCH_ARM) ff_h264dsp_init_arm(c, bit_depth); |
|
105 |
if (HAVE_ALTIVEC) ff_h264dsp_init_ppc(c, bit_depth); |
|
106 |
if (HAVE_MMX) ff_h264dsp_init_x86(c, bit_depth); |
|
81 | 107 |
} |
Also available in: Unified diff