mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-28 20:53:54 +02:00
avcodec/ac3enc: Use actual size of buffer in init_put_bits()
Since the very beginning (sincede6d9b6404
) the AC-3 encoder used AC3_MAX_CODED_FRAME_SIZE (namely 3840) for the size of the output buffer (without any check at all). This causes problems when encoding EAC-3 for which the maximum is too small, smaller than the actual size of the buffer: One can run into asserts used by the PutBits API. Ticket #8513 is about such a case and this commit fixes it by using the real size of the buffer. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> (cherry picked from commit968c158abd
)
This commit is contained in:
parent
55ad9ece31
commit
ffb599458f
@ -27,7 +27,6 @@
|
|||||||
#ifndef AVCODEC_AC3_H
|
#ifndef AVCODEC_AC3_H
|
||||||
#define AVCODEC_AC3_H
|
#define AVCODEC_AC3_H
|
||||||
|
|
||||||
#define AC3_MAX_CODED_FRAME_SIZE 3840 /* in bytes */
|
|
||||||
#define EAC3_MAX_CHANNELS 16 /**< maximum number of channels in EAC3 */
|
#define EAC3_MAX_CHANNELS 16 /**< maximum number of channels in EAC3 */
|
||||||
#define AC3_MAX_CHANNELS 7 /**< maximum number of channels, including coupling channel */
|
#define AC3_MAX_CHANNELS 7 /**< maximum number of channels, including coupling channel */
|
||||||
#define CPL_CH 0 /**< coupling channel index */
|
#define CPL_CH 0 /**< coupling channel index */
|
||||||
|
@ -1729,7 +1729,7 @@ static void ac3_output_frame(AC3EncodeContext *s, unsigned char *frame)
|
|||||||
{
|
{
|
||||||
int blk;
|
int blk;
|
||||||
|
|
||||||
init_put_bits(&s->pb, frame, AC3_MAX_CODED_FRAME_SIZE);
|
init_put_bits(&s->pb, frame, s->frame_size);
|
||||||
|
|
||||||
s->output_frame_header(s);
|
s->output_frame_header(s);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user