X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Ftwinvq.c;h=89894692376f10c3ac3550102edef6d2aba13f07;hb=dda20a6e2c0c3d7985a93c60f5897975549d53b0;hp=3159e498e77daeb315662c784b6f6d21085539d2;hpb=335826cf5f7169199ed0a8d3a61f697ec0438d30;p=ffmpeg diff --git a/libavcodec/twinvq.c b/libavcodec/twinvq.c index 3159e498e77..89894692376 100644 --- a/libavcodec/twinvq.c +++ b/libavcodec/twinvq.c @@ -19,12 +19,13 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "libavutil/audioconvert.h" +#include "libavutil/channel_layout.h" #include "libavutil/float_dsp.h" #include "avcodec.h" #include "get_bits.h" #include "dsputil.h" #include "fft.h" +#include "internal.h" #include "lsp.h" #include "sinewin.h" @@ -834,7 +835,7 @@ static int twin_decode_frame(AVCodecContext * avctx, void *data, /* get output buffer */ if (tctx->discarded_packets >= 2) { tctx->frame.nb_samples = mtab->size; - if ((ret = avctx->get_buffer(avctx, &tctx->frame)) < 0) { + if ((ret = ff_get_buffer(avctx, &tctx->frame)) < 0) { av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n"); return ret; } @@ -1120,6 +1121,11 @@ static av_cold int twin_decode_init(AVCodecContext *avctx) avctx->channels = AV_RB32(avctx->extradata ) + 1; avctx->bit_rate = AV_RB32(avctx->extradata + 4) * 1000; isampf = AV_RB32(avctx->extradata + 8); + + if (isampf < 8 || isampf > 44) { + av_log(avctx, AV_LOG_ERROR, "Unsupported sample rate\n"); + return AVERROR_INVALIDDATA; + } switch (isampf) { case 44: avctx->sample_rate = 44100; break; case 22: avctx->sample_rate = 22050; break;