aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDyami Caliri <dyami@dragonframe.com>2015-02-26 10:17:01 -0800
committerMichael Niedermayer <michaelni@gmx.at>2015-06-10 02:13:09 +0200
commit5ae61395afe63f4f5e24f6f1e7bc6f38f0e49c24 (patch)
treeab39b8b9d6468d518cf2549ec0e296f3528baf00
parent1697813db84aa16fcf5c56af674aa5b6c77e7b3a (diff)
downloadffmpeg-5ae61395afe63f4f5e24f6f1e7bc6f38f0e49c24.tar.gz
Fix buffer_size argument to init_put_bits() in multiple encoders.
Several encoders were multiplying the buffer size by 8, in order to get a bit size. However, the buffer_size argument is for the byte size of the buffer. We had experienced crashes encoding prores (Anatoliy) at size 4096x4096. (cherry picked from commit 50833c9f7b4e1922197a8955669f8ab3589c8cef) Conflicts: libavcodec/proresenc_kostya.c
-rw-r--r--libavcodec/aacenc.c2
-rw-r--r--libavcodec/adpcmenc.c4
-rw-r--r--libavcodec/faxcompr.c2
-rw-r--r--libavcodec/flashsv2enc.c2
-rw-r--r--libavcodec/flashsvenc.c2
-rw-r--r--libavcodec/nellymoserenc.c2
-rw-r--r--libavcodec/proresenc_anatoliy.c2
-rw-r--r--libavcodec/proresenc_kostya.c2
-rw-r--r--libavcodec/s302menc.c2
9 files changed, 10 insertions, 10 deletions
diff --git a/libavcodec/aacenc.c b/libavcodec/aacenc.c
index 362f02b115..409e16bc1d 100644
--- a/libavcodec/aacenc.c
+++ b/libavcodec/aacenc.c
@@ -165,7 +165,7 @@ static void put_audio_specific_config(AVCodecContext *avctx)
PutBitContext pb;
AACEncContext *s = avctx->priv_data;
- init_put_bits(&pb, avctx->extradata, avctx->extradata_size*8);
+ init_put_bits(&pb, avctx->extradata, avctx->extradata_size);
put_bits(&pb, 5, 2); //object type - AAC-LC
put_bits(&pb, 4, s->samplerate_index); //sample rate index
put_bits(&pb, 4, s->channels);
diff --git a/libavcodec/adpcmenc.c b/libavcodec/adpcmenc.c
index cef8b6f916..8531f3f015 100644
--- a/libavcodec/adpcmenc.c
+++ b/libavcodec/adpcmenc.c
@@ -541,7 +541,7 @@ static int adpcm_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
case AV_CODEC_ID_ADPCM_IMA_QT:
{
PutBitContext pb;
- init_put_bits(&pb, dst, pkt_size * 8);
+ init_put_bits(&pb, dst, pkt_size);
for (ch = 0; ch < avctx->channels; ch++) {
ADPCMChannelStatus *status = &c->status[ch];
@@ -570,7 +570,7 @@ static int adpcm_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
case AV_CODEC_ID_ADPCM_SWF:
{
PutBitContext pb;
- init_put_bits(&pb, dst, pkt_size * 8);
+ init_put_bits(&pb, dst, pkt_size);
n = frame->nb_samples - 1;
diff --git a/libavcodec/faxcompr.c b/libavcodec/faxcompr.c
index 900851b3f1..d2ba7068ca 100644
--- a/libavcodec/faxcompr.c
+++ b/libavcodec/faxcompr.c
@@ -251,7 +251,7 @@ static void put_line(uint8_t *dst, int size, int width, const int *runs)
PutBitContext pb;
int run, mode = ~0, pix_left = width, run_idx = 0;
- init_put_bits(&pb, dst, size * 8);
+ init_put_bits(&pb, dst, size);
while (pix_left > 0) {
run = runs[run_idx++];
mode = ~mode;
diff --git a/libavcodec/flashsv2enc.c b/libavcodec/flashsv2enc.c
index 1d0d1963f6..3e2961771a 100644
--- a/libavcodec/flashsv2enc.c
+++ b/libavcodec/flashsv2enc.c
@@ -288,7 +288,7 @@ static int write_header(FlashSV2Context * s, uint8_t * buf, int buf_size)
if (buf_size < 5)
return -1;
- init_put_bits(&pb, buf, buf_size * 8);
+ init_put_bits(&pb, buf, buf_size);
put_bits(&pb, 4, (s->block_width >> 4) - 1);
put_bits(&pb, 12, s->image_width);
diff --git a/libavcodec/flashsvenc.c b/libavcodec/flashsvenc.c
index e6b181f2ae..34384b3956 100644
--- a/libavcodec/flashsvenc.c
+++ b/libavcodec/flashsvenc.c
@@ -131,7 +131,7 @@ static int encode_bitstream(FlashSVContext *s, AVFrame *p, uint8_t *buf,
int buf_pos, res;
int pred_blocks = 0;
- init_put_bits(&pb, buf, buf_size * 8);
+ init_put_bits(&pb, buf, buf_size);
put_bits(&pb, 4, block_width / 16 - 1);
put_bits(&pb, 12, s->image_width);
diff --git a/libavcodec/nellymoserenc.c b/libavcodec/nellymoserenc.c
index b35820a3f8..bf762c6b81 100644
--- a/libavcodec/nellymoserenc.c
+++ b/libavcodec/nellymoserenc.c
@@ -301,7 +301,7 @@ static void encode_block(NellyMoserEncodeContext *s, unsigned char *output, int
apply_mdct(s);
- init_put_bits(&pb, output, output_size * 8);
+ init_put_bits(&pb, output, output_size);
i = 0;
for (band = 0; band < NELLY_BANDS; band++) {
diff --git a/libavcodec/proresenc_anatoliy.c b/libavcodec/proresenc_anatoliy.c
index ccd0392ca6..dd927d41e1 100644
--- a/libavcodec/proresenc_anatoliy.c
+++ b/libavcodec/proresenc_anatoliy.c
@@ -304,7 +304,7 @@ static int encode_slice_plane(AVCodecContext *avctx, int mb_count,
}
blocks_per_slice = mb_count << (2 - chroma);
- init_put_bits(&pb, buf, buf_size << 3);
+ init_put_bits(&pb, buf, buf_size);
encode_dc_coeffs(&pb, blocks, blocks_per_slice, qmat);
encode_ac_coeffs(avctx, &pb, blocks, blocks_per_slice, qmat);
diff --git a/libavcodec/proresenc_kostya.c b/libavcodec/proresenc_kostya.c
index ab434301b4..c009ed671e 100644
--- a/libavcodec/proresenc_kostya.c
+++ b/libavcodec/proresenc_kostya.c
@@ -1022,7 +1022,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt,
bytestream_put_byte(&buf, slice_hdr_size << 3);
slice_hdr = buf;
buf += slice_hdr_size - 1;
- init_put_bits(&pb, buf, (pkt_size - (buf - orig_buf)) * 8);
+ init_put_bits(&pb, buf, (pkt_size - (buf - orig_buf)));
ret = encode_slice(avctx, pic, &pb, sizes, x, y, q, mbs_per_slice);
if (ret < 0)
return ret;
diff --git a/libavcodec/s302menc.c b/libavcodec/s302menc.c
index 6af5dfee40..ec0c574a5a 100644
--- a/libavcodec/s302menc.c
+++ b/libavcodec/s302menc.c
@@ -81,7 +81,7 @@ static int s302m_encode2_frame(AVCodecContext *avctx, AVPacket *avpkt,
return ret;
o = avpkt->data;
- init_put_bits(&pb, o, buf_size * 8);
+ init_put_bits(&pb, o, buf_size);
put_bits(&pb, 16, buf_size - AES3_HEADER_LEN);
put_bits(&pb, 2, (avctx->channels - 2) >> 1); // number of channels
put_bits(&pb, 8, 0); // channel ID