[FFmpeg-cvslog] avcodec/wavpack: do not process only first non-zero field of int32info chunk
Paul B Mahol
git at videolan.org
Sun Feb 20 18:45:36 EET 2022
ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Sun Feb 20 17:12:55 2022 +0100| [b15d3db8b6d71145113b6b6263c9d541fe4d5aa4] | committer: Paul B Mahol
avcodec/wavpack: do not process only first non-zero field of int32info chunk
Fixes bitexact decoding with high bit depth samples.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b15d3db8b6d71145113b6b6263c9d541fe4d5aa4
---
libavcodec/wavpack.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/libavcodec/wavpack.c b/libavcodec/wavpack.c
index 30790ef16e..b6c782bd54 100644
--- a/libavcodec/wavpack.c
+++ b/libavcodec/wavpack.c
@@ -1303,14 +1303,16 @@ static int wavpack_decode_block(AVCodecContext *avctx, int block_no,
av_log(avctx, AV_LOG_ERROR,
"Invalid INT32INFO, extra_bits = %d (> 30)\n", val[0]);
continue;
- } else if (val[0]) {
+ } else {
s->extra_bits = val[0];
- } else if (val[1]) {
+ }
+ if (val[1])
s->shift = val[1];
- } else if (val[2]) {
+ if (val[2]) {
s->and = s->or = 1;
s->shift = val[2];
- } else if (val[3]) {
+ }
+ if (val[3]) {
s->and = 1;
s->shift = val[3];
}
More information about the ffmpeg-cvslog
mailing list