comparison arm/dsputil_init_neon.c @ 11499:2a4dc3c0b012 libavcodec

Move H264 dsputil functions into their own struct This moves the H264-specific functions from DSPContext to the new H264DSPContext. The code is made conditional on CONFIG_H264DSP which is set by the codecs requiring it. The qpel and chroma MC functions are not moved as these are used by non-h264 code.
author mru
date Tue, 16 Mar 2010 01:17:00 +0000
parents e71b0be9ac79
children f7281af560fe
comparison
equal deleted inserted replaced
11498:8e889ce0d616 11499:2a4dc3c0b012
128 void ff_put_h264_chroma_mc2_neon(uint8_t *, uint8_t *, int, int, int, int); 128 void ff_put_h264_chroma_mc2_neon(uint8_t *, uint8_t *, int, int, int, int);
129 129
130 void ff_avg_h264_chroma_mc8_neon(uint8_t *, uint8_t *, int, int, int, int); 130 void ff_avg_h264_chroma_mc8_neon(uint8_t *, uint8_t *, int, int, int, int);
131 void ff_avg_h264_chroma_mc4_neon(uint8_t *, uint8_t *, int, int, int, int); 131 void ff_avg_h264_chroma_mc4_neon(uint8_t *, uint8_t *, int, int, int, int);
132 void ff_avg_h264_chroma_mc2_neon(uint8_t *, uint8_t *, int, int, int, int); 132 void ff_avg_h264_chroma_mc2_neon(uint8_t *, uint8_t *, int, int, int, int);
133
134 void ff_h264_v_loop_filter_luma_neon(uint8_t *pix, int stride, int alpha,
135 int beta, int8_t *tc0);
136 void ff_h264_h_loop_filter_luma_neon(uint8_t *pix, int stride, int alpha,
137 int beta, int8_t *tc0);
138 void ff_h264_v_loop_filter_chroma_neon(uint8_t *pix, int stride, int alpha,
139 int beta, int8_t *tc0);
140 void ff_h264_h_loop_filter_chroma_neon(uint8_t *pix, int stride, int alpha,
141 int beta, int8_t *tc0);
142
143 void ff_weight_h264_pixels_16x16_neon(uint8_t *ds, int stride, int log2_den,
144 int weight, int offset);
145 void ff_weight_h264_pixels_16x8_neon(uint8_t *ds, int stride, int log2_den,
146 int weight, int offset);
147 void ff_weight_h264_pixels_8x16_neon(uint8_t *ds, int stride, int log2_den,
148 int weight, int offset);
149 void ff_weight_h264_pixels_8x8_neon(uint8_t *ds, int stride, int log2_den,
150 int weight, int offset);
151 void ff_weight_h264_pixels_8x4_neon(uint8_t *ds, int stride, int log2_den,
152 int weight, int offset);
153 void ff_weight_h264_pixels_4x8_neon(uint8_t *ds, int stride, int log2_den,
154 int weight, int offset);
155 void ff_weight_h264_pixels_4x4_neon(uint8_t *ds, int stride, int log2_den,
156 int weight, int offset);
157 void ff_weight_h264_pixels_4x2_neon(uint8_t *ds, int stride, int log2_den,
158 int weight, int offset);
159
160 void ff_biweight_h264_pixels_16x16_neon(uint8_t *dst, uint8_t *src, int stride,
161 int log2_den, int weightd, int weights,
162 int offset);
163 void ff_biweight_h264_pixels_16x8_neon(uint8_t *dst, uint8_t *src, int stride,
164 int log2_den, int weightd, int weights,
165 int offset);
166 void ff_biweight_h264_pixels_8x16_neon(uint8_t *dst, uint8_t *src, int stride,
167 int log2_den, int weightd, int weights,
168 int offset);
169 void ff_biweight_h264_pixels_8x8_neon(uint8_t *dst, uint8_t *src, int stride,
170 int log2_den, int weightd, int weights,
171 int offset);
172 void ff_biweight_h264_pixels_8x4_neon(uint8_t *dst, uint8_t *src, int stride,
173 int log2_den, int weightd, int weights,
174 int offset);
175 void ff_biweight_h264_pixels_4x8_neon(uint8_t *dst, uint8_t *src, int stride,
176 int log2_den, int weightd, int weights,
177 int offset);
178 void ff_biweight_h264_pixels_4x4_neon(uint8_t *dst, uint8_t *src, int stride,
179 int log2_den, int weightd, int weights,
180 int offset);
181 void ff_biweight_h264_pixels_4x2_neon(uint8_t *dst, uint8_t *src, int stride,
182 int log2_den, int weightd, int weights,
183 int offset);
184
185 void ff_h264_idct_add_neon(uint8_t *dst, DCTELEM *block, int stride);
186 void ff_h264_idct_dc_add_neon(uint8_t *dst, DCTELEM *block, int stride);
187 void ff_h264_idct_add16_neon(uint8_t *dst, const int *block_offset,
188 DCTELEM *block, int stride,
189 const uint8_t nnzc[6*8]);
190 void ff_h264_idct_add16intra_neon(uint8_t *dst, const int *block_offset,
191 DCTELEM *block, int stride,
192 const uint8_t nnzc[6*8]);
193 void ff_h264_idct_add8_neon(uint8_t **dest, const int *block_offset,
194 DCTELEM *block, int stride,
195 const uint8_t nnzc[6*8]);
196 133
197 void ff_vp3_v_loop_filter_neon(uint8_t *, int, int *); 134 void ff_vp3_v_loop_filter_neon(uint8_t *, int, int *);
198 void ff_vp3_h_loop_filter_neon(uint8_t *, int, int *); 135 void ff_vp3_h_loop_filter_neon(uint8_t *, int, int *);
199 136
200 void ff_vector_fmul_neon(float *dst, const float *src, int len); 137 void ff_vector_fmul_neon(float *dst, const float *src, int len);
350 c->avg_h264_qpel_pixels_tab[1][11] = ff_avg_h264_qpel8_mc32_neon; 287 c->avg_h264_qpel_pixels_tab[1][11] = ff_avg_h264_qpel8_mc32_neon;
351 c->avg_h264_qpel_pixels_tab[1][12] = ff_avg_h264_qpel8_mc03_neon; 288 c->avg_h264_qpel_pixels_tab[1][12] = ff_avg_h264_qpel8_mc03_neon;
352 c->avg_h264_qpel_pixels_tab[1][13] = ff_avg_h264_qpel8_mc13_neon; 289 c->avg_h264_qpel_pixels_tab[1][13] = ff_avg_h264_qpel8_mc13_neon;
353 c->avg_h264_qpel_pixels_tab[1][14] = ff_avg_h264_qpel8_mc23_neon; 290 c->avg_h264_qpel_pixels_tab[1][14] = ff_avg_h264_qpel8_mc23_neon;
354 c->avg_h264_qpel_pixels_tab[1][15] = ff_avg_h264_qpel8_mc33_neon; 291 c->avg_h264_qpel_pixels_tab[1][15] = ff_avg_h264_qpel8_mc33_neon;
355
356 c->h264_v_loop_filter_luma = ff_h264_v_loop_filter_luma_neon;
357 c->h264_h_loop_filter_luma = ff_h264_h_loop_filter_luma_neon;
358 c->h264_v_loop_filter_chroma = ff_h264_v_loop_filter_chroma_neon;
359 c->h264_h_loop_filter_chroma = ff_h264_h_loop_filter_chroma_neon;
360
361 c->weight_h264_pixels_tab[0] = ff_weight_h264_pixels_16x16_neon;
362 c->weight_h264_pixels_tab[1] = ff_weight_h264_pixels_16x8_neon;
363 c->weight_h264_pixels_tab[2] = ff_weight_h264_pixels_8x16_neon;
364 c->weight_h264_pixels_tab[3] = ff_weight_h264_pixels_8x8_neon;
365 c->weight_h264_pixels_tab[4] = ff_weight_h264_pixels_8x4_neon;
366 c->weight_h264_pixels_tab[5] = ff_weight_h264_pixels_4x8_neon;
367 c->weight_h264_pixels_tab[6] = ff_weight_h264_pixels_4x4_neon;
368 c->weight_h264_pixels_tab[7] = ff_weight_h264_pixels_4x2_neon;
369
370 c->biweight_h264_pixels_tab[0] = ff_biweight_h264_pixels_16x16_neon;
371 c->biweight_h264_pixels_tab[1] = ff_biweight_h264_pixels_16x8_neon;
372 c->biweight_h264_pixels_tab[2] = ff_biweight_h264_pixels_8x16_neon;
373 c->biweight_h264_pixels_tab[3] = ff_biweight_h264_pixels_8x8_neon;
374 c->biweight_h264_pixels_tab[4] = ff_biweight_h264_pixels_8x4_neon;
375 c->biweight_h264_pixels_tab[5] = ff_biweight_h264_pixels_4x8_neon;
376 c->biweight_h264_pixels_tab[6] = ff_biweight_h264_pixels_4x4_neon;
377 c->biweight_h264_pixels_tab[7] = ff_biweight_h264_pixels_4x2_neon;
378
379 c->h264_idct_add = ff_h264_idct_add_neon;
380 c->h264_idct_dc_add = ff_h264_idct_dc_add_neon;
381 c->h264_idct_add16 = ff_h264_idct_add16_neon;
382 c->h264_idct_add16intra = ff_h264_idct_add16intra_neon;
383 c->h264_idct_add8 = ff_h264_idct_add8_neon;
384 } 292 }
385 293
386 if (CONFIG_VP3_DECODER) { 294 if (CONFIG_VP3_DECODER) {
387 c->vp3_v_loop_filter = ff_vp3_v_loop_filter_neon; 295 c->vp3_v_loop_filter = ff_vp3_v_loop_filter_neon;
388 c->vp3_h_loop_filter = ff_vp3_h_loop_filter_neon; 296 c->vp3_h_loop_filter = ff_vp3_h_loop_filter_neon;