[FFmpeg-cvslog] Fix buffer_size argument to init_put_bits() in multiple encoders.

Dyami Caliri git at videolan.org
Thu Mar 12 18:05:41 CET 2015


ffmpeg | branch: release/0.10 | Dyami Caliri <dyami at dragonframe.com> | Thu Feb 26 10:17:01 2015 -0800| [c89645c3ef4b975aac0b25a5a8c1707a2567d7da] | committer: Michael Niedermayer

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

Conflicts:

	libavcodec/faxcompr.c
	libavcodec/s302menc.c

Conflicts:

	libavcodec/adpcmenc.c

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=c89645c3ef4b975aac0b25a5a8c1707a2567d7da
---

 libavcodec/aacenc.c        |    2 +-
 libavcodec/adpcmenc.c      |    4 ++--
 libavcodec/faxcompr.c      |    2 +-
 libavcodec/flashsv2enc.c   |    2 +-
 libavcodec/flashsvenc.c    |    2 +-
 libavcodec/nellymoserenc.c |    2 +-
 libavcodec/proresenc.c     |    2 +-
 7 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/libavcodec/aacenc.c b/libavcodec/aacenc.c
index 2ff6f9c..d66dcfd 100644
--- a/libavcodec/aacenc.c
+++ b/libavcodec/aacenc.c
@@ -164,7 +164,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 1b3d1bc..73da927 100644
--- a/libavcodec/adpcmenc.c
+++ b/libavcodec/adpcmenc.c
@@ -551,7 +551,7 @@ static int adpcm_encode_frame(AVCodecContext *avctx,
     {
         int ch, i;
         PutBitContext pb;
-        init_put_bits(&pb, dst, buf_size * 8);
+        init_put_bits(&pb, dst, buf_size);
 
         for (ch = 0; ch < avctx->channels; ch++) {
             put_bits(&pb, 9, (c->status[ch].prev_sample & 0xFFFF) >> 7);
@@ -582,7 +582,7 @@ static int adpcm_encode_frame(AVCodecContext *avctx,
     {
         int i;
         PutBitContext pb;
-        init_put_bits(&pb, dst, buf_size * 8);
+        init_put_bits(&pb, dst, buf_size);
 
         n = avctx->frame_size - 1;
 
diff --git a/libavcodec/faxcompr.c b/libavcodec/faxcompr.c
index d358940..01c8c61 100644
--- a/libavcodec/faxcompr.c
+++ b/libavcodec/faxcompr.c
@@ -243,7 +243,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 6466be7..dd477d4 100644
--- a/libavcodec/flashsv2enc.c
+++ b/libavcodec/flashsv2enc.c
@@ -270,7 +270,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 7e21e7d..8ed92a6 100644
--- a/libavcodec/flashsvenc.c
+++ b/libavcodec/flashsvenc.c
@@ -130,7 +130,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 725270c..54820ad 100644
--- a/libavcodec/nellymoserenc.c
+++ b/libavcodec/nellymoserenc.c
@@ -288,7 +288,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.c b/libavcodec/proresenc.c
index 09678a0..26afe59 100644
--- a/libavcodec/proresenc.c
+++ b/libavcodec/proresenc.c
@@ -302,7 +302,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);



More information about the ffmpeg-cvslog mailing list