From: Justin Ruggles Date: Wed, 23 Feb 2011 18:11:03 +0000 (-0500) Subject: vmdaudio: correct the silent chunk count in the first block. X-Git-Tag: v0.7b1~473 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6989cb2dae85ea455ffcc8a36a763134fb311e29;p=platform%2Fupstream%2Flibav.git vmdaudio: correct the silent chunk count in the first block. This fixes A/V sync with several samples, notably: http://samples.mplayerhq.hu/game-formats/sierra-vmd/swat_*.vmd Signed-off-by: Ronald S. Bultje --- diff --git a/libavcodec/vmdav.c b/libavcodec/vmdav.c index c6043e9..53d40a9 100644 --- a/libavcodec/vmdav.c +++ b/libavcodec/vmdav.c @@ -520,11 +520,7 @@ static int vmdaudio_decode_frame(AVCodecContext *avctx, uint32_t flags = AV_RB32(p); int raw_block_size = s->block_align * (av_get_bits_per_sample_fmt(avctx->sample_fmt) / 8); - int silent_chunks; - if(flags == 0xFFFFFFFF) - silent_chunks = 32; - else - silent_chunks = av_log2(flags + 1); + int silent_chunks = av_popcount(flags); if(*data_size < (s->block_align*silent_chunks + buf_size - 20) * 2) return -1; *data_size = 0;