From 78f9d35c9abeb9842656fa9344ca34fe370ce1db Mon Sep 17 00:00:00 2001 From: Martin Storsjö Date: Fri, 19 Nov 2010 17:36:29 +0000 Subject: adpcm: Only increment heap_pos after finding a good enough sample This increases the PSNR slightly (about 0.1 dB) for trellis sizes below 8, and gives equal PSNR for sizes above that. Originally committed as revision 25769 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/adpcm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'libavcodec/adpcm.c') diff --git a/libavcodec/adpcm.c b/libavcodec/adpcm.c index 6a6c77b574..5e7c54f754 100644 --- a/libavcodec/adpcm.c +++ b/libavcodec/adpcm.c @@ -401,9 +401,10 @@ static void adpcm_compress_trellis(AVCodecContext *avctx, const short *samples, } else {\ /* Try to replace one of the leaf nodes with the new \ * one, but try a different slot each time. */\ - pos = (frontier >> 1) + (heap_pos++ & ((frontier >> 1) - 1));\ + pos = (frontier >> 1) + (heap_pos & ((frontier >> 1) - 1));\ if (ssd > nodes_next[pos]->ssd)\ goto next_##NAME;\ + heap_pos++;\ }\ *h = generation;\ u = nodes_next[pos];\ -- cgit v1.2.3