[FFmpeg-devel] [PATCH] g722 decoder, no licensing fame
Kenan Gillet
kenan.gillet
Sat Apr 4 21:06:30 CEST 2009
Hi
On Apr 4, 2009, at 11:46 AM, Kenan Gillet wrote:
>
> On Apr 3, 2009, at 9:42 PM, Michael Niedermayer wrote:
>
>> On Tue, Mar 31, 2009 at 11:34:34PM -0700, Kenan Gillet wrote:
[...]
>>> +/**
>>> + * adaptive predictor
>>> + *
>>> + * @note On x86 using the MULL macro in a loop is slower than not
>>> using the macro.
>>> + */
>>> +static void do_adaptive_prediction(struct G722Band *band, const
>>> int cur_diff)
>>> +{
>>> + int sg[2], limit, i, cur_part_reconst;
>>> +
>>> + band->qtzd_reconst_mem[1] = band->qtzd_reconst_mem[0];
>>> + band->qtzd_reconst_mem[0] = av_clip_int16((band->s_predictor
>>> + cur_diff) << 1);
>>> +
>>> + cur_part_reconst = band->s_zero + cur_diff < 0;
>>> +
>>> + sg[0] = sign_lookup[cur_part_reconst != band-
>>> >part_reconst_mem[0]];
>>> + sg[1] = sign_lookup[cur_part_reconst == band-
>>> >part_reconst_mem[1]];
>>
>> i dont see why a LUT should be used here, its not really more
>> readable
>> and i doubt its faster.
>
> it is faster
>
> on Core 2 Duo 2Ghz , gcc 4.2.1
> LUT based:
> testing for 64kb 16KHz: [OK][ 1574 dezicycles in
> do_adaptive_prediction, 262130 runs, 14 skips ]
> testing for 56kb 16KHz: [OK][ 1668 dezicycles in
> do_adaptive_prediction, 262110 runs, 34 skips ]
> testing for 48kb 16KHz: [OK][ 1607 dezicycles in
> do_adaptive_prediction, 262112 runs, 32 skips ]
> testing for 64Kb 8KHz: [OK][ 1584 dezicycles in
> do_adaptive_prediction, 131066 runs, 6 skips ]
> testing encoding for 64Kb 16KHz: [OK][ 1558 dezicycles in
> do_adaptive_prediction, 262108 runs, 36 skips ]
>
>
> non-LUT:
> testing for 64kb 16KHz: [OK][ 1686 dezicycles in
> do_adaptive_prediction, 262126 runs, 18 skips ]
> testing for 56kb 16KHz: [OK][ 1719 dezicycles in
> do_adaptive_prediction, 262107 runs, 37 skips ]
> testing for 48kb 16KHz: [OK][ 1689 dezicycles in
> do_adaptive_prediction, 262126 runs, 18 skips ]
> testing for 64Kb 8KHz: [OK][ 1676 dezicycles in
> do_adaptive_prediction, 131065 runs, 7 skips ]
> testing encoding for 64Kb 16KHz: [OK][ 1673 dezicycles in
> do_adaptive_prediction, 262116 runs, 28 skips ]
>
> i can revert to non-LUT if you prefer
sorry for the noise, it though the comment was about using the sg
array not just the lookup table.
remove the use of the lookup table locally
Kenan
More information about the ffmpeg-devel
mailing list