X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fac3dec.h;h=56c655347774866997fa4b31783287fe3570b3f8;hb=5d9ad5425f1fae4876e30c2c4500bfd0950e0d88;hp=a7cebafbe93fa7da79ccabc798fe6696e2e6acb3;hpb=9b83919f44eb1c87dc9431112944f0cccf6a599f;p=ffmpeg diff --git a/libavcodec/ac3dec.h b/libavcodec/ac3dec.h index a7cebafbe93..56c65534777 100644 --- a/libavcodec/ac3dec.h +++ b/libavcodec/ac3dec.h @@ -62,11 +62,14 @@ #define SPX_MAX_BANDS 17 +/** Large enough for maximum possible frame size when the specification limit is ignored */ +#define AC3_FRAME_BUFFER_SIZE 32768 + typedef struct { AVClass *class; ///< class for AVOptions AVCodecContext *avctx; ///< parent context + AVFrame frame; ///< AVFrame for decoded output GetBitContext gbc; ///< bitstream reader - uint8_t *input_buffer; ///< temp buffer to prevent overread ///@name Bit stream information ///@{ @@ -202,6 +205,7 @@ typedef struct { DECLARE_ALIGNED(32, float, window)[AC3_BLOCK_SIZE]; ///< window coefficients DECLARE_ALIGNED(32, float, tmp_output)[AC3_BLOCK_SIZE]; ///< temporary storage for output before windowing DECLARE_ALIGNED(32, float, output)[AC3_MAX_CHANNELS][AC3_BLOCK_SIZE]; ///< output after imdct transform and windowing + DECLARE_ALIGNED(32, uint8_t, input_buffer)[AC3_FRAME_BUFFER_SIZE + FF_INPUT_BUFFER_PADDING_SIZE]; ///< temp buffer to prevent overread ///@} } AC3DecodeContext;