Mercurial > libavcodec.hg
comparison dsputil.h @ 3568:945caa35ee9a libavcodec
sse and 3dnow implementations of float->int conversion and mdct windowing.
15% faster vorbis.
author | lorenm |
---|---|
date | Thu, 10 Aug 2006 19:06:25 +0000 |
parents | 5ea82888103e |
children | f549d1e685f7 |
comparison
equal
deleted
inserted
replaced
3567:1f8730f62765 | 3568:945caa35ee9a |
---|---|
56 void ff_h264_idct8_dc_add_c(uint8_t *dst, DCTELEM *block, int stride); | 56 void ff_h264_idct8_dc_add_c(uint8_t *dst, DCTELEM *block, int stride); |
57 void ff_h264_idct_dc_add_c(uint8_t *dst, DCTELEM *block, int stride); | 57 void ff_h264_idct_dc_add_c(uint8_t *dst, DCTELEM *block, int stride); |
58 void ff_h264_lowres_idct_add_c(uint8_t *dst, int stride, DCTELEM *block); | 58 void ff_h264_lowres_idct_add_c(uint8_t *dst, int stride, DCTELEM *block); |
59 void ff_h264_lowres_idct_put_c(uint8_t *dst, int stride, DCTELEM *block); | 59 void ff_h264_lowres_idct_put_c(uint8_t *dst, int stride, DCTELEM *block); |
60 | 60 |
61 void ff_vector_fmul_add_add_c(float *dst, const float *src0, const float *src1, | |
62 const float *src2, int src3, int blocksize, int step); | |
63 void ff_float_to_int16_c(int16_t *dst, const float *src, int len); | |
64 | |
61 /* encoding scans */ | 65 /* encoding scans */ |
62 extern const uint8_t ff_alternate_horizontal_scan[64]; | 66 extern const uint8_t ff_alternate_horizontal_scan[64]; |
63 extern const uint8_t ff_alternate_vertical_scan[64]; | 67 extern const uint8_t ff_alternate_vertical_scan[64]; |
64 extern const uint8_t ff_zigzag_direct[64]; | 68 extern const uint8_t ff_zigzag_direct[64]; |
65 extern const uint8_t ff_zigzag248_direct[64]; | 69 extern const uint8_t ff_zigzag248_direct[64]; |
305 void (*h263_v_loop_filter)(uint8_t *src, int stride, int qscale); | 309 void (*h263_v_loop_filter)(uint8_t *src, int stride, int qscale); |
306 void (*h263_h_loop_filter)(uint8_t *src, int stride, int qscale); | 310 void (*h263_h_loop_filter)(uint8_t *src, int stride, int qscale); |
307 | 311 |
308 void (*h261_loop_filter)(uint8_t *src, int stride); | 312 void (*h261_loop_filter)(uint8_t *src, int stride); |
309 | 313 |
314 /* assume len is a multiple of 4, and arrays are 16-byte aligned */ | |
310 void (*vorbis_inverse_coupling)(float *mag, float *ang, int blocksize); | 315 void (*vorbis_inverse_coupling)(float *mag, float *ang, int blocksize); |
316 void (*vector_fmul)(float *dst, const float *src, int len); | |
317 /* assume len is a multiple of 8, and arrays are 16-byte aligned */ | |
318 void (*vector_fmul_reverse)(float *dst, const float *src0, const float *src1, int len); | |
319 /* assume len is a multiple of 8, and src arrays are 16-byte aligned */ | |
320 void (*vector_fmul_add_add)(float *dst, const float *src0, const float *src1, const float *src2, int src3, int len, int step); | |
321 | |
322 /* C version: convert floats from the range [384.0,386.0] to ints in [-32768,32767] | |
323 * asm versions: convert floats from [-32768.0,32767.0] without rescaling */ | |
324 void (*float_to_int16)(int16_t *dst, const float *src, int len); | |
311 | 325 |
312 /* (I)DCT */ | 326 /* (I)DCT */ |
313 void (*fdct)(DCTELEM *block/* align 16*/); | 327 void (*fdct)(DCTELEM *block/* align 16*/); |
314 void (*fdct248)(DCTELEM *block/* align 16*/); | 328 void (*fdct248)(DCTELEM *block/* align 16*/); |
315 | 329 |