X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fmlpdec.c;h=1a2c0f29acefa4ddf941efd55f25810da178fc07;hb=cbe3f1b1fbc0e0bd2c265f1d9b78e29ac185f17b;hp=8caa266b7e72325c9d549c657454b46925ad070e;hpb=27e30c73d722ec13e59753dea91be00859c72bf2;p=ffmpeg diff --git a/libavcodec/mlpdec.c b/libavcodec/mlpdec.c index 8caa266b7e7..1a2c0f29ace 100644 --- a/libavcodec/mlpdec.c +++ b/libavcodec/mlpdec.c @@ -34,7 +34,7 @@ #include "internal.h" #include "libavutil/crc.h" #include "parser.h" -#include "mlp_parser.h" +#include "mlp_parse.h" #include "mlpdsp.h" #include "mlp.h" #include "config.h" @@ -266,7 +266,7 @@ static inline int read_huff_channels(MLPDecodeContext *m, GetBitContext *gbp, return AVERROR_INVALIDDATA; if (lsb_bits > 0) - result = (result << lsb_bits) + get_bits(gbp, lsb_bits); + result = (result << lsb_bits) + get_bits_long(gbp, lsb_bits); result += cp->sign_huff_offset; result *= 1 << quant_step_size; @@ -829,7 +829,7 @@ static int read_channel_params(MLPDecodeContext *m, unsigned int substr, cp->codebook = get_bits(gbp, 2); cp->huff_lsbs = get_bits(gbp, 5); - if (cp->huff_lsbs > 24) { + if (cp->codebook > 0 && cp->huff_lsbs > 24) { av_log(m->avctx, AV_LOG_ERROR, "Invalid huff_lsbs.\n"); cp->huff_lsbs = 0; return AVERROR_INVALIDDATA; @@ -1195,7 +1195,7 @@ static int read_access_unit(AVCodecContext *avctx, void* data, } if (length < header_size + substr_header_size) { - av_log(m->avctx, AV_LOG_ERROR, "Insuffient data for headers\n"); + av_log(m->avctx, AV_LOG_ERROR, "Insufficient data for headers\n"); goto error; }