X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fwavpack.c;h=6f60514a281ad429a2fa1f9289ab76abba39f12a;hb=9b9f64fe315ca7a7a8b9517ab5c082ecb8b698be;hp=6036a5c7ddf9046fd0e51706b027448b09c95e39;hpb=acda7c8e20dc7cfda038edd0dfbac98f40970111;p=ffmpeg diff --git a/libavcodec/wavpack.c b/libavcodec/wavpack.c index 6036a5c7ddf..6f60514a281 100644 --- a/libavcodec/wavpack.c +++ b/libavcodec/wavpack.c @@ -487,6 +487,13 @@ static inline int wv_unpack_stereo(WavpackFrameContext *s, GetBitContext *gb, } while (!last && count < s->samples); wv_reset_saved_context(s); + + if (last && count < s->samples) { + int size = av_get_bytes_per_sample(type); + memset((uint8_t*)dst_l + count*size, 0, (s->samples-count)*size); + memset((uint8_t*)dst_r + count*size, 0, (s->samples-count)*size); + } + if ((s->avctx->err_recognition & AV_EF_CRCCHECK) && wv_check_crc(s, crc, crc_extra_bits)) return AVERROR_INVALIDDATA; @@ -548,6 +555,12 @@ static inline int wv_unpack_mono(WavpackFrameContext *s, GetBitContext *gb, } while (!last && count < s->samples); wv_reset_saved_context(s); + + if (last && count < s->samples) { + int size = av_get_bytes_per_sample(type); + memset((uint8_t*)dst + count*size, 0, (s->samples-count)*size); + } + if (s->avctx->err_recognition & AV_EF_CRCCHECK) { int ret = wv_check_crc(s, crc, crc_extra_bits); if (ret < 0 && s->avctx->err_recognition & AV_EF_EXPLODE)