[FFmpeg-devel] [PATCH] QCELP decoder
Kenan Gillet
kenan.gillet
Wed Nov 12 18:33:36 CET 2008
Hi,
On Nov 11, 2008, at 10:00 AM, Michael Niedermayer wrote:
>> /**
>> + * Initialize the speech codec according to the specification.
>> + *
>> + * TIA/EIA/IS-733 2.4.9
>> + */
>> +static av_cold int qcelp_decode_init(AVCodecContext *avctx) {
>> + QCELPContext *q = avctx->priv_data;
>> + int i;
>> +
>> + avctx->sample_fmt = SAMPLE_FMT_FLT;
>> +
>> + for (i = 0; i < 10; i++)
>> + q->prev_lspf[i] = (i + 1) / 11.;
>> +
>
>> + q->bandwith_expansion_coeff[0] = -
>> QCELP_BANDWITH_EXPANSION_COEFF;
>> + for (i = 1; i < 10; i++) {
>> + q->bandwith_expansion_coeff[i] = q-
>> >bandwith_expansion_coeff[i-1]
>> + *
>> QCELP_BANDWITH_EXPANSION_COEFF;
>
> this seem to be 10 constants, thus they do not need to be in each
> context
recalculating the coeffs looks as fast ot a little bit faster so I
will just drop this table.
benchmark:
ffmpeg -i codeblue-interrupt01.mov codeblue-interrupt01.wav
on Core 2 Duo
FFmpeg version SVN-r15797, Copyright (c) 2000-2008 Fabrice Bellard, et
al.
configuration:
libavutil 49.12. 0 / 49.12. 0
libavcodec 52. 3. 0 / 52. 3. 0
libavformat 52.23. 1 / 52.23. 1
libavdevice 52. 1. 0 / 52. 1. 0
built on Nov 11 2008 12:52:53, gcc: 4.2.1 (Apple Inc. build 5564)
Coeff in qcelp_bandwith_expansion_coeff
116400 dezicycles in benchmark_qcelp_lspf2lpc, 1 runs, 0 skips
67560 dezicycles in benchmark_qcelp_lspf2lpc, 2 runs, 0 skips
42300 dezicycles in benchmark_qcelp_lspf2lpc, 4 runs, 0 skips
29550 dezicycles in benchmark_qcelp_lspf2lpc, 8 runs, 0 skips
22867 dezicycles in benchmark_qcelp_lspf2lpc, 16 runs, 0 skips
19286 dezicycles in benchmark_qcelp_lspf2lpc, 32 runs, 0 skips
17386 dezicycles in benchmark_qcelp_lspf2lpc, 64 runs, 0 skips
16455 dezicycles in benchmark_qcelp_lspf2lpc, 128 runs, 0 skips
15909 dezicycles in benchmark_qcelp_lspf2lpc, 256 runs, 0 skips
15727 dezicycles in benchmark_qcelp_lspf2lpc, 512 runs, 0 skips
15590 dezicycles in benchmark_qcelp_lspf2lpc, 1024 runs, 0 skips
15514 dezicycles in benchmark_qcelp_lspf2lpc, 2048 runs, 0 skips
130080 dezicycles in benchmark_qcelp_lspf2lpc, 1 runs, 0 skips
74460 dezicycles in benchmark_qcelp_lspf2lpc, 2 runs, 0 skips
45750 dezicycles in benchmark_qcelp_lspf2lpc, 4 runs, 0 skips
31320 dezicycles in benchmark_qcelp_lspf2lpc, 8 runs, 0 skips
23722 dezicycles in benchmark_qcelp_lspf2lpc, 16 runs, 0 skips
19721 dezicycles in benchmark_qcelp_lspf2lpc, 32 runs, 0 skips
17615 dezicycles in benchmark_qcelp_lspf2lpc, 64 runs, 0 skips
16662 dezicycles in benchmark_qcelp_lspf2lpc, 128 runs, 0 skips
16080 dezicycles in benchmark_qcelp_lspf2lpc, 256 runs, 0 skips
15814 dezicycles in benchmark_qcelp_lspf2lpc, 512 runs, 0 skips
15639 dezicycles in benchmark_qcelp_lspf2lpc, 1024 runs, 0 skips
15523 dezicycles in benchmark_qcelp_lspf2lpc, 2047 runs, 1 skips
100200 dezicycles in benchmark_qcelp_lspf2lpc, 1 runs, 0 skips
59460 dezicycles in benchmark_qcelp_lspf2lpc, 2 runs, 0 skips
38310 dezicycles in benchmark_qcelp_lspf2lpc, 4 runs, 0 skips
27585 dezicycles in benchmark_qcelp_lspf2lpc, 8 runs, 0 skips
21840 dezicycles in benchmark_qcelp_lspf2lpc, 16 runs, 0 skips
18768 dezicycles in benchmark_qcelp_lspf2lpc, 32 runs, 0 skips
17141 dezicycles in benchmark_qcelp_lspf2lpc, 64 runs, 0 skips
16278 dezicycles in benchmark_qcelp_lspf2lpc, 128 runs, 0 skips
15859 dezicycles in benchmark_qcelp_lspf2lpc, 256 runs, 0 skips
15709 dezicycles in benchmark_qcelp_lspf2lpc, 512 runs, 0 skips
15581 dezicycles in benchmark_qcelp_lspf2lpc, 1024 runs, 0 skips
15515 dezicycles in benchmark_qcelp_lspf2lpc, 2047 runs, 1 skips
121440 dezicycles in benchmark_qcelp_lspf2lpc, 1 runs, 0 skips
70020 dezicycles in benchmark_qcelp_lspf2lpc, 2 runs, 0 skips
43440 dezicycles in benchmark_qcelp_lspf2lpc, 4 runs, 0 skips
30120 dezicycles in benchmark_qcelp_lspf2lpc, 8 runs, 0 skips
23317 dezicycles in benchmark_qcelp_lspf2lpc, 16 runs, 0 skips
19848 dezicycles in benchmark_qcelp_lspf2lpc, 32 runs, 0 skips
17709 dezicycles in benchmark_qcelp_lspf2lpc, 64 runs, 0 skips
16587 dezicycles in benchmark_qcelp_lspf2lpc, 128 runs, 0 skips
16037 dezicycles in benchmark_qcelp_lspf2lpc, 256 runs, 0 skips
15810 dezicycles in benchmark_qcelp_lspf2lpc, 512 runs, 0 skips
15647 dezicycles in benchmark_qcelp_lspf2lpc, 1024 runs, 0 skips
15563 dezicycles in benchmark_qcelp_lspf2lpc, 2047 runs, 1 skips
137640 dezicycles in benchmark_qcelp_lspf2lpc, 1 runs, 0 skips
78360 dezicycles in benchmark_qcelp_lspf2lpc, 2 runs, 0 skips
47760 dezicycles in benchmark_qcelp_lspf2lpc, 4 runs, 0 skips
32310 dezicycles in benchmark_qcelp_lspf2lpc, 8 runs, 0 skips
24262 dezicycles in benchmark_qcelp_lspf2lpc, 16 runs, 0 skips
20002 dezicycles in benchmark_qcelp_lspf2lpc, 32 runs, 0 skips
17812 dezicycles in benchmark_qcelp_lspf2lpc, 64 runs, 0 skips
16775 dezicycles in benchmark_qcelp_lspf2lpc, 128 runs, 0 skips
16125 dezicycles in benchmark_qcelp_lspf2lpc, 256 runs, 0 skips
15837 dezicycles in benchmark_qcelp_lspf2lpc, 512 runs, 0 skips
15644 dezicycles in benchmark_qcelp_lspf2lpc, 1024 runs, 0 skips
15554 dezicycles in benchmark_qcelp_lspf2lpc, 2046 runs, 2 skips
Coeffs recalculated everytime in qcelp_lspf2lpc
121320 dezicycles in benchmark_qcelp_lspf2lpc, 1 runs, 0 skips
70260 dezicycles in benchmark_qcelp_lspf2lpc, 2 runs, 0 skips
43380 dezicycles in benchmark_qcelp_lspf2lpc, 4 runs, 0 skips
30300 dezicycles in benchmark_qcelp_lspf2lpc, 8 runs, 0 skips
23257 dezicycles in benchmark_qcelp_lspf2lpc, 16 runs, 0 skips
19383 dezicycles in benchmark_qcelp_lspf2lpc, 32 runs, 0 skips
17375 dezicycles in benchmark_qcelp_lspf2lpc, 64 runs, 0 skips
16358 dezicycles in benchmark_qcelp_lspf2lpc, 128 runs, 0 skips
15916 dezicycles in benchmark_qcelp_lspf2lpc, 256 runs, 0 skips
15682 dezicycles in benchmark_qcelp_lspf2lpc, 512 runs, 0 skips
15521 dezicycles in benchmark_qcelp_lspf2lpc, 1024 runs, 0 skips
15441 dezicycles in benchmark_qcelp_lspf2lpc, 2048 runs, 0 skips
131160 dezicycles in benchmark_qcelp_lspf2lpc, 1 runs, 0 skips
75120 dezicycles in benchmark_qcelp_lspf2lpc, 2 runs, 0 skips
45900 dezicycles in benchmark_qcelp_lspf2lpc, 4 runs, 0 skips
31230 dezicycles in benchmark_qcelp_lspf2lpc, 8 runs, 0 skips
23700 dezicycles in benchmark_qcelp_lspf2lpc, 16 runs, 0 skips
19590 dezicycles in benchmark_qcelp_lspf2lpc, 32 runs, 0 skips
17480 dezicycles in benchmark_qcelp_lspf2lpc, 64 runs, 0 skips
16523 dezicycles in benchmark_qcelp_lspf2lpc, 128 runs, 0 skips
15989 dezicycles in benchmark_qcelp_lspf2lpc, 256 runs, 0 skips
15707 dezicycles in benchmark_qcelp_lspf2lpc, 512 runs, 0 skips
15518 dezicycles in benchmark_qcelp_lspf2lpc, 1024 runs, 0 skips
15442 dezicycles in benchmark_qcelp_lspf2lpc, 2047 runs, 1 skips
134400 dezicycles in benchmark_qcelp_lspf2lpc, 1 runs, 0 skips
77100 dezicycles in benchmark_qcelp_lspf2lpc, 2 runs, 0 skips
46830 dezicycles in benchmark_qcelp_lspf2lpc, 4 runs, 0 skips
31650 dezicycles in benchmark_qcelp_lspf2lpc, 8 runs, 0 skips
23970 dezicycles in benchmark_qcelp_lspf2lpc, 16 runs, 0 skips
19758 dezicycles in benchmark_qcelp_lspf2lpc, 32 runs, 0 skips
17602 dezicycles in benchmark_qcelp_lspf2lpc, 64 runs, 0 skips
16457 dezicycles in benchmark_qcelp_lspf2lpc, 128 runs, 0 skips
15948 dezicycles in benchmark_qcelp_lspf2lpc, 255 runs, 1 skips
15695 dezicycles in benchmark_qcelp_lspf2lpc, 511 runs, 1 skips
15529 dezicycles in benchmark_qcelp_lspf2lpc, 1022 runs, 2 skips
15450 dezicycles in benchmark_qcelp_lspf2lpc, 2045 runs, 3 skips
111360 dezicycles in benchmark_qcelp_lspf2lpc, 1 runs, 0 skips
65460 dezicycles in benchmark_qcelp_lspf2lpc, 2 runs, 0 skips
41160 dezicycles in benchmark_qcelp_lspf2lpc, 4 runs, 0 skips
28965 dezicycles in benchmark_qcelp_lspf2lpc, 8 runs, 0 skips
22590 dezicycles in benchmark_qcelp_lspf2lpc, 16 runs, 0 skips
19042 dezicycles in benchmark_qcelp_lspf2lpc, 32 runs, 0 skips
17188 dezicycles in benchmark_qcelp_lspf2lpc, 64 runs, 0 skips
16270 dezicycles in benchmark_qcelp_lspf2lpc, 128 runs, 0 skips
15824 dezicycles in benchmark_qcelp_lspf2lpc, 256 runs, 0 skips
15603 dezicycles in benchmark_qcelp_lspf2lpc, 512 runs, 0 skips
15452 dezicycles in benchmark_qcelp_lspf2lpc, 1024 runs, 0 skips
15388 dezicycles in benchmark_qcelp_lspf2lpc, 2048 runs, 0 skips
101160 dezicycles in benchmark_qcelp_lspf2lpc, 1 runs, 0 skips
60120 dezicycles in benchmark_qcelp_lspf2lpc, 2 runs, 0 skips
38460 dezicycles in benchmark_qcelp_lspf2lpc, 4 runs, 0 skips
27540 dezicycles in benchmark_qcelp_lspf2lpc, 8 runs, 0 skips
21810 dezicycles in benchmark_qcelp_lspf2lpc, 16 runs, 0 skips
18645 dezicycles in benchmark_qcelp_lspf2lpc, 32 runs, 0 skips
16998 dezicycles in benchmark_qcelp_lspf2lpc, 64 runs, 0 skips
16158 dezicycles in benchmark_qcelp_lspf2lpc, 128 runs, 0 skips
15793 dezicycles in benchmark_qcelp_lspf2lpc, 255 runs, 1 skips
15601 dezicycles in benchmark_qcelp_lspf2lpc, 511 runs, 1 skips
15459 dezicycles in benchmark_qcelp_lspf2lpc, 1023 runs, 1 skips
15419 dezicycles in benchmark_qcelp_lspf2lpc, 2047 runs, 1 skips
More information about the ffmpeg-devel
mailing list