]> git.sesse.net Git - ffmpeg/commitdiff
avcodec/decode: add a flags parameter to ff_reget_buffer()
authorJames Almer <jamrial@gmail.com>
Fri, 30 Aug 2019 14:37:25 +0000 (11:37 -0300)
committerJames Almer <jamrial@gmail.com>
Wed, 4 Sep 2019 13:07:12 +0000 (10:07 -0300)
Some decoders may not need a writable buffer in some specific cases, but only
a reference to the existing buffer with updated frame properties instead, for
the purpose of returning duplicate frames. For this, the
FF_REGET_BUFFER_FLAG_READONLY flag is added, which will prevent potential
allocations and buffer copies when they are not needed.

Signed-off-by: James Almer <jamrial@gmail.com>
48 files changed:
libavcodec/aasc.c
libavcodec/anm.c
libavcodec/ansi.c
libavcodec/avs.c
libavcodec/bethsoftvideo.c
libavcodec/bink.c
libavcodec/c93.c
libavcodec/cdgraphics.c
libavcodec/cinepak.c
libavcodec/clearvideo.c
libavcodec/cpia.c
libavcodec/cscd.c
libavcodec/decode.c
libavcodec/dsicinvideo.c
libavcodec/fic.c
libavcodec/flashsv.c
libavcodec/flicvideo.c
libavcodec/gifdec.c
libavcodec/indeo2.c
libavcodec/internal.h
libavcodec/jvdec.c
libavcodec/mmvideo.c
libavcodec/motionpixels.c
libavcodec/msrle.c
libavcodec/mss1.c
libavcodec/mss2.c
libavcodec/mss3.c
libavcodec/mss4.c
libavcodec/msvideo1.c
libavcodec/nuv.c
libavcodec/pafvideo.c
libavcodec/qtrle.c
libavcodec/roqvideodec.c
libavcodec/rpza.c
libavcodec/rscc.c
libavcodec/scpr.c
libavcodec/screenpresso.c
libavcodec/smacker.c
libavcodec/smc.c
libavcodec/tiertexseqv.c
libavcodec/truemotion1.c
libavcodec/truemotion2.c
libavcodec/tscc.c
libavcodec/tscc2.c
libavcodec/ulti.c
libavcodec/vmnc.c
libavcodec/xxan.c
libavcodec/yop.c

index 58cc3c85ba89d5907095b9d103c9dacb6bc32687..26570f49e5c6233681a8d46ddda2c271bb992cef 100644 (file)
@@ -91,7 +91,7 @@ static int aasc_decode_frame(AVCodecContext *avctx,
         return AVERROR_INVALIDDATA;
     }
 
-    if ((ret = ff_reget_buffer(avctx, s->frame)) < 0)
+    if ((ret = ff_reget_buffer(avctx, s->frame, 0)) < 0)
         return ret;
 
     compr     = AV_RL32(buf);
index 778f38413e0986f16cd3fa413cace1de8cb8a316..cd1fcc5998e5def96be6b0b113d457b3563be09c 100644 (file)
@@ -122,7 +122,7 @@ static int decode_frame(AVCodecContext *avctx,
     if (buf_size < 7)
         return AVERROR_INVALIDDATA;
 
-    if ((ret = ff_reget_buffer(avctx, s->frame)) < 0)
+    if ((ret = ff_reget_buffer(avctx, s->frame, 0)) < 0)
         return ret;
     dst     = s->frame->data[0];
     dst_end = s->frame->data[0] + s->frame->linesize[0]*avctx->height;
index f1fafab771bef656c572b21543ac232bb95407bb..5e1035ffd09d880d628150cea57b62e03cf1aff5 100644 (file)
@@ -362,7 +362,7 @@ static int decode_frame(AVCodecContext *avctx,
     const uint8_t *buf_end   = buf+buf_size;
     int ret, i, count;
 
-    if ((ret = ff_reget_buffer(avctx, s->frame)) < 0)
+    if ((ret = ff_reget_buffer(avctx, s->frame, 0)) < 0)
         return ret;
     if (!avctx->frame_number) {
         for (i=0; i<avctx->height; i++)
index 66724d47b729cf3526bca606632f5b6e469cfc28..2f2361e5ea6f9eb637b50ab7653074d8cbba314a 100644 (file)
@@ -59,7 +59,7 @@ avs_decode_frame(AVCodecContext * avctx,
     AvsBlockType type;
     GetBitContext change_map = {0}; //init to silence warning
 
-    if ((ret = ff_reget_buffer(avctx, p)) < 0)
+    if ((ret = ff_reget_buffer(avctx, p, 0)) < 0)
         return ret;
     p->pict_type = AV_PICTURE_TYPE_P;
     p->key_frame = 0;
index e5a73f55a1c2a2a2d8143f1ddfa6d289a5d5c477..a931b54911389c80022f6e2387d7702f775c3093 100644 (file)
@@ -79,7 +79,7 @@ static int bethsoftvid_decode_frame(AVCodecContext *avctx,
     int code, ret;
     int yoffset;
 
-    if ((ret = ff_reget_buffer(avctx, vid->frame)) < 0)
+    if ((ret = ff_reget_buffer(avctx, vid->frame, 0)) < 0)
         return ret;
     wrap_to_next_line = vid->frame->linesize[0] - avctx->width;
 
index 5bb3955f93e59aeccce81d718cd3e424fe89fb70..f251ab4017fd451292881cd3b0fd9263e13704d2 100644 (file)
@@ -1261,7 +1261,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPac
         if ((ret = ff_get_buffer(avctx, frame, AV_GET_BUFFER_FLAG_REF)) < 0)
             return ret;
     } else {
-        if ((ret = ff_reget_buffer(avctx, c->last)) < 0)
+        if ((ret = ff_reget_buffer(avctx, c->last, 0)) < 0)
             return ret;
         if ((ret = av_frame_ref(frame, c->last)) < 0)
             return ret;
index b708659cca93b9dab6da400c5b2cc5261e07bdaf..e1808150b873fba47d2f2254eb525873c56004f7 100644 (file)
@@ -138,7 +138,7 @@ static int decode_frame(AVCodecContext *avctx, void *data,
 
     c93->currentpic ^= 1;
 
-    if ((ret = ff_reget_buffer(avctx, newpic)) < 0)
+    if ((ret = ff_reget_buffer(avctx, newpic, 0)) < 0)
         return ret;
 
     stride = newpic->linesize[0];
index cf3f01a417bb3f7b535f9b28ec3b19bc15e8f5eb..469128964c20e69f9890a54ae4eb2ec370d59a67 100644 (file)
@@ -283,7 +283,7 @@ static int cdg_decode_frame(AVCodecContext *avctx,
 
     bytestream2_init(&gb, avpkt->data, avpkt->size);
 
-    if ((ret = ff_reget_buffer(avctx, cc->frame)) < 0)
+    if ((ret = ff_reget_buffer(avctx, cc->frame, 0)) < 0)
         return ret;
     if (!cc->cleared) {
         memset(cc->frame->data[0], 0, cc->frame->linesize[0] * avctx->height);
index aeb15de0ed90b17bf811db591a91e6ce8f20d16a..9c5b254231b30cbd79208038b08ff49c14df4f95 100644 (file)
@@ -473,7 +473,7 @@ static int cinepak_decode_frame(AVCodecContext *avctx,
         return ret;
     }
 
-    if ((ret = ff_reget_buffer(avctx, s->frame)) < 0)
+    if ((ret = ff_reget_buffer(avctx, s->frame, 0)) < 0)
         return ret;
 
     if (s->palette_video) {
index 26cdfb2731d70e5fd25fc9bd6ad3afa7e511779e..65bf1404016e1152c1718125455310eaee5a3e30 100644 (file)
@@ -524,7 +524,7 @@ static int clv_decode_frame(AVCodecContext *avctx, void *data,
             return AVERROR_INVALIDDATA;
         }
 
-        if ((ret = ff_reget_buffer(avctx, c->pic)) < 0)
+        if ((ret = ff_reget_buffer(avctx, c->pic, 0)) < 0)
             return ret;
 
         c->pic->key_frame = 1;
@@ -558,7 +558,7 @@ static int clv_decode_frame(AVCodecContext *avctx, void *data,
         if (c->pmb_width * c->pmb_height > 8LL*(buf_size - bytestream2_tell(&gb)))
             return AVERROR_INVALIDDATA;
 
-        if ((ret = ff_reget_buffer(avctx, c->pic)) < 0)
+        if ((ret = ff_reget_buffer(avctx, c->pic, 0)) < 0)
             return ret;
 
         ret = av_frame_copy(c->pic, c->prev);
index f6d7332606fcee31d88f74db2a42ab97a15b49d6..bf09e1a5db7e6e81b62aba50c9793a9a56c33970 100644 (file)
@@ -100,7 +100,7 @@ static int cpia_decode_frame(AVCodecContext *avctx,
     }
 
     // Get buffer filled with previous frame
-    if ((ret = ff_reget_buffer(avctx, frame)) < 0)
+    if ((ret = ff_reget_buffer(avctx, frame, 0)) < 0)
         return ret;
 
 
index 8781df110caa002d04498bedea950342df9ec85d..d50ddd6258ce515da401f7627651bb331da49392 100644 (file)
@@ -77,7 +77,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
         return AVERROR_INVALIDDATA;
     }
 
-    if ((ret = ff_reget_buffer(avctx, c->pic)) < 0)
+    if ((ret = ff_reget_buffer(avctx, c->pic, 0)) < 0)
         return ret;
 
     // decompress data
index cf9676e2acfef0319105fdc2e68da2f93494bf0f..a9ea5a51e65f893139eac9af4540a39cea6392b9 100644 (file)
@@ -1970,7 +1970,7 @@ int ff_get_buffer(AVCodecContext *avctx, AVFrame *frame, int flags)
     return ret;
 }
 
-static int reget_buffer_internal(AVCodecContext *avctx, AVFrame *frame)
+static int reget_buffer_internal(AVCodecContext *avctx, AVFrame *frame, int flags)
 {
     AVFrame *tmp;
     int ret;
@@ -1986,7 +1986,7 @@ static int reget_buffer_internal(AVCodecContext *avctx, AVFrame *frame)
     if (!frame->data[0])
         return ff_get_buffer(avctx, frame, AV_GET_BUFFER_FLAG_REF);
 
-    if (av_frame_is_writable(frame))
+    if ((flags & FF_REGET_BUFFER_FLAG_READONLY) || av_frame_is_writable(frame))
         return ff_decode_frame_props(avctx, frame);
 
     tmp = av_frame_alloc();
@@ -2007,9 +2007,9 @@ static int reget_buffer_internal(AVCodecContext *avctx, AVFrame *frame)
     return 0;
 }
 
-int ff_reget_buffer(AVCodecContext *avctx, AVFrame *frame)
+int ff_reget_buffer(AVCodecContext *avctx, AVFrame *frame, int flags)
 {
-    int ret = reget_buffer_internal(avctx, frame);
+    int ret = reget_buffer_internal(avctx, frame, flags);
     if (ret < 0)
         av_log(avctx, AV_LOG_ERROR, "reget_buffer() failed\n");
     return ret;
index d422df068df34c03fc43786872b65dae6a5fd9e8..7f74808e6dbcdfb547d142492a2cb21d8b30134e 100644 (file)
@@ -290,7 +290,7 @@ static int cinvideo_decode_frame(AVCodecContext *avctx,
         break;
     }
 
-    if ((res = ff_reget_buffer(avctx, cin->frame)) < 0)
+    if ((res = ff_reget_buffer(avctx, cin->frame, 0)) < 0)
         return res;
 
     memcpy(cin->frame->data[1], cin->palette, sizeof(cin->palette));
index 540078eda1292e52e66b6bf456cf0fba55d6868b..95baaedaa5e18b90a50fd1c64ec85fe531197682 100644 (file)
@@ -278,7 +278,7 @@ static int fic_decode_frame(AVCodecContext *avctx, void *data,
     int skip_cursor = ctx->skip_cursor;
     uint8_t *sdata;
 
-    if ((ret = ff_reget_buffer(avctx, ctx->frame)) < 0)
+    if ((ret = ff_reget_buffer(avctx, ctx->frame, 0)) < 0)
         return ret;
 
     /* Header + at least one slice (4) */
@@ -421,7 +421,7 @@ static int fic_decode_frame(AVCodecContext *avctx, void *data,
     }
 
     /* Make sure we use a user-supplied buffer. */
-    if ((ret = ff_reget_buffer(avctx, ctx->final_frame)) < 0) {
+    if ((ret = ff_reget_buffer(avctx, ctx->final_frame, 0)) < 0) {
         av_log(avctx, AV_LOG_ERROR, "Could not make frame writable.\n");
         return ret;
     }
index 92d1af9fcfba818ed8b92e1235f465509f214e4e..f55cb0feebdb880e1106b0a46911ef89dee8b772 100644 (file)
@@ -368,7 +368,7 @@ static int flashsv_decode_frame(AVCodecContext *avctx, void *data,
             s->image_width, s->image_height, s->block_width, s->block_height,
             h_blocks, v_blocks, h_part, v_part);
 
-    if ((ret = ff_reget_buffer(avctx, s->frame)) < 0)
+    if ((ret = ff_reget_buffer(avctx, s->frame, 0)) < 0)
         return ret;
 
     /* loop over all block columns */
index bf8ffeba4fa037bcab1c2f10a66955eb3cfd5b58..276c2ff2a625ef674f181f630acd4d2a5c5a3df3 100644 (file)
@@ -185,7 +185,7 @@ static int flic_decode_frame_8BPP(AVCodecContext *avctx,
 
     bytestream2_init(&g2, buf, buf_size);
 
-    if ((ret = ff_reget_buffer(avctx, s->frame)) < 0)
+    if ((ret = ff_reget_buffer(avctx, s->frame, 0)) < 0)
         return ret;
 
     pixels = s->frame->data[0];
@@ -519,7 +519,7 @@ static int flic_decode_frame_15_16BPP(AVCodecContext *avctx,
 
     bytestream2_init(&g2, buf, buf_size);
 
-    if ((ret = ff_reget_buffer(avctx, s->frame)) < 0)
+    if ((ret = ff_reget_buffer(avctx, s->frame, 0)) < 0)
         return ret;
 
     pixels = s->frame->data[0];
@@ -817,7 +817,7 @@ static int flic_decode_frame_24BPP(AVCodecContext *avctx,
 
     bytestream2_init(&g2, buf, buf_size);
 
-    if ((ret = ff_reget_buffer(avctx, s->frame)) < 0)
+    if ((ret = ff_reget_buffer(avctx, s->frame, 0)) < 0)
         return ret;
 
     pixels = s->frame->data[0];
index 2115da163f620243739f9ffedb38a953e0c3b21a..1906a4c738cbf2cd42ce3fdf830f7854e2d1380d 100644 (file)
@@ -513,7 +513,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
             return AVERROR_INVALIDDATA;
         }
 
-        if ((ret = ff_reget_buffer(avctx, s->frame)) < 0)
+        if ((ret = ff_reget_buffer(avctx, s->frame, 0)) < 0)
             return ret;
 
         s->frame->pict_type = AV_PICTURE_TYPE_P;
index f367682e6183b7587a7a83a685fe876ad42cbc36..ccf6cd84cb62a3aa998db39f6a001dfd2693e293 100644 (file)
@@ -161,7 +161,7 @@ static int ir2_decode_frame(AVCodecContext *avctx,
     int start, ret;
     int ltab, ctab;
 
-    if ((ret = ff_reget_buffer(avctx, p)) < 0)
+    if ((ret = ff_reget_buffer(avctx, p, 0)) < 0)
         return ret;
 
     start = 48; /* hardcoded for now */
index 5f964148fd1af21bb8834e4f2090bc50399ce565..9db3d36acb946ac19ceeb7cb91f59f2089f7cc46 100644 (file)
@@ -320,11 +320,12 @@ static av_always_inline float ff_exp2fi(int x) {
  */
 int ff_get_buffer(AVCodecContext *avctx, AVFrame *frame, int flags);
 
+#define FF_REGET_BUFFER_FLAG_READONLY 1 ///< the returned buffer does not need to be writable
 /**
- * Identical in function to av_frame_make_writable(), except it uses
- * ff_get_buffer() to allocate the buffer when needed.
+ * Identical in function to ff_get_buffer(), except it reuses the existing buffer
+ * if available.
  */
-int ff_reget_buffer(AVCodecContext *avctx, AVFrame *frame);
+int ff_reget_buffer(AVCodecContext *avctx, AVFrame *frame, int flags);
 
 int ff_thread_can_start_frame(AVCodecContext *avctx);
 
index b06e7cf2bfe35c51346a3924d6ad1cf4c6daf0e3..6f10157b0d89f85b41ba93d7a0d7ca8c110f6521 100644 (file)
@@ -168,7 +168,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
             GetBitContext gb;
             init_get_bits(&gb, buf, 8 * video_size);
 
-            if ((ret = ff_reget_buffer(avctx, s->frame)) < 0)
+            if ((ret = ff_reget_buffer(avctx, s->frame, 0)) < 0)
                 return ret;
 
             if (avctx->height/8 * (avctx->width/8) > 4 * video_size) {
index 04de6bb4c84aa661c3f786797825788e527cc837..7f650be80efd64708ee098010d2bdd6d0789469e 100644 (file)
@@ -201,7 +201,7 @@ static int mm_decode_frame(AVCodecContext *avctx,
     buf_size -= MM_PREAMBLE_SIZE;
     bytestream2_init(&s->gb, buf, buf_size);
 
-    if ((res = ff_reget_buffer(avctx, s->frame)) < 0)
+    if ((res = ff_reget_buffer(avctx, s->frame, 0)) < 0)
         return res;
 
     switch(type) {
index 73977664a511dc354349125b28c0058faa79b0c7..be45586e3debb8e16d938c4a4082b6fbdb980ea1 100644 (file)
@@ -292,7 +292,7 @@ static int mp_decode_frame(AVCodecContext *avctx,
     GetBitContext gb;
     int i, count1, count2, sz, ret;
 
-    if ((ret = ff_reget_buffer(avctx, mp->frame)) < 0)
+    if ((ret = ff_reget_buffer(avctx, mp->frame, 0)) < 0)
         return ret;
 
     /* le32 bitstream msb first */
index b83b3d2a41b99e279ade0abfbd52590eb626a3ec..9233b34cc542b758cdee1fd148b858c1c54b8ade 100644 (file)
@@ -93,7 +93,7 @@ static int msrle_decode_frame(AVCodecContext *avctx,
     if (buf_size < 2) //Minimally a end of picture code should be there
         return AVERROR_INVALIDDATA;
 
-    if ((ret = ff_reget_buffer(avctx, s->frame)) < 0)
+    if ((ret = ff_reget_buffer(avctx, s->frame, 0)) < 0)
         return ret;
 
     if (avctx->bits_per_coded_sample > 1 && avctx->bits_per_coded_sample <= 8) {
index 84b7a37007daed2e05d003af4d970e2b1e2d378c..7af8024d63d1f6e2220898fcacf7aaa10d5bdc1c 100644 (file)
@@ -154,7 +154,7 @@ static int mss1_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
 
     arith_init(&acoder, &gb);
 
-    if ((ret = ff_reget_buffer(avctx, ctx->pic)) < 0)
+    if ((ret = ff_reget_buffer(avctx, ctx->pic, 0)) < 0)
         return ret;
 
     c->pal_pic    =  ctx->pic->data[0] + ctx->pic->linesize[0] * (avctx->height - 1);
index 29897cea2eb4bf0667e5fb97e3a6e88abce76a5b..d977cb11604bdc1c0a9f9af70069ec8cd574f3c2 100644 (file)
@@ -618,7 +618,7 @@ static int mss2_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
             return AVERROR_INVALIDDATA;
         }
     } else {
-        if ((ret = ff_reget_buffer(avctx, ctx->last_pic)) < 0)
+        if ((ret = ff_reget_buffer(avctx, ctx->last_pic, 0)) < 0)
             return ret;
         if ((ret = av_frame_ref(frame, ctx->last_pic)) < 0)
             return ret;
index 02bd3609962f9288e2c84fce26d01545aa0577d8..113af5ba37b8b91e8ad2be0d427382326e4e0edd 100644 (file)
@@ -737,7 +737,7 @@ static int mss3_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
         return buf_size;
     c->got_error = 0;
 
-    if ((ret = ff_reget_buffer(avctx, c->pic)) < 0)
+    if ((ret = ff_reget_buffer(avctx, c->pic, 0)) < 0)
         return ret;
     c->pic->key_frame = keyframe;
     c->pic->pict_type = keyframe ? AV_PICTURE_TYPE_I : AV_PICTURE_TYPE_P;
index 76c746a2d528ee26aa88dbe04aa23f0a6e60dfc1..432df294d69e6655c4f3741c7cd390a82646aee2 100644 (file)
@@ -558,7 +558,7 @@ static int mss4_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
     if (frame_type != SKIP_FRAME && 8*buf_size < 8*HEADER_SIZE + mb_width*mb_height)
         return AVERROR_INVALIDDATA;
 
-    if ((ret = ff_reget_buffer(avctx, c->pic)) < 0)
+    if ((ret = ff_reget_buffer(avctx, c->pic, 0)) < 0)
         return ret;
     c->pic->key_frame = (frame_type == INTRA_FRAME);
     c->pic->pict_type = (frame_type == INTRA_FRAME) ? AV_PICTURE_TYPE_I
index de048d8b6fb9a33fcf6889855ac054d6272853c7..c9bcce552d087594d6b421951c6ee131cc0a9055 100644 (file)
@@ -310,7 +310,7 @@ static int msvideo1_decode_frame(AVCodecContext *avctx,
         return AVERROR_INVALIDDATA;
     }
 
-    if ((ret = ff_reget_buffer(avctx, s->frame)) < 0)
+    if ((ret = ff_reget_buffer(avctx, s->frame, 0)) < 0)
         return ret;
 
     if (s->mode_8bit) {
index 75b14bce5b0a302491d6b826dd988d3525f8fb47..2cca206d9b21bdfb078e6b318baad8c9acabebaa 100644 (file)
@@ -268,7 +268,7 @@ retry:
         init_frame = 1;
     }
 
-    if ((result = ff_reget_buffer(avctx, c->pic)) < 0)
+    if ((result = ff_reget_buffer(avctx, c->pic, 0)) < 0)
         return result;
     if (init_frame) {
         memset(c->pic->data[0], 0,    avctx->height * c->pic->linesize[0]);
index 323c662c590e67a4f075a91765c35015bb9a8ca1..6b4771cbce062ecfb0259a77f824c7914eab046e 100644 (file)
@@ -289,7 +289,7 @@ static int paf_video_decode(AVCodecContext *avctx, void *data,
         c->video_size / 32 - (int64_t)bytestream2_get_bytes_left(&c->gb) > c->video_size / 32 * (int64_t)avctx->discard_damaged_percentage / 100)
         return AVERROR_INVALIDDATA;
 
-    if ((ret = ff_reget_buffer(avctx, c->pic)) < 0)
+    if ((ret = ff_reget_buffer(avctx, c->pic, 0)) < 0)
         return ret;
 
     if (code & 0x20) {  // frame is keyframe
index f565e0e358b8ea48c3295b2c496cd54dcf801642..52394f526404bf79a3910531f32b7a8a2e006bd2 100644 (file)
@@ -490,7 +490,7 @@ static int qtrle_decode_frame(AVCodecContext *avctx,
         start_line = 0;
         height     = s->avctx->height;
     }
-    if ((ret = ff_reget_buffer(avctx, s->frame)) < 0)
+    if ((ret = ff_reget_buffer(avctx, s->frame, 0)) < 0)
         return ret;
 
     row_ptr = s->frame->linesize[0] * start_line;
index 0ab7d399d6750aa37835b25dedf3a77d547ab83e..a0c293f2f0430d791e02f54a1d635c87a443b318 100644 (file)
@@ -206,7 +206,7 @@ static int roq_decode_frame(AVCodecContext *avctx,
     int copy = !s->current_frame->data[0] && s->last_frame->data[0];
     int ret;
 
-    if ((ret = ff_reget_buffer(avctx, s->current_frame)) < 0)
+    if ((ret = ff_reget_buffer(avctx, s->current_frame, 0)) < 0)
         return ret;
 
     if (copy) {
index 8e1efa24450ef6debee826ee2d65a7c7f8540a35..02bbfe753f8d67566ef0826c8538d16e900c5863 100644 (file)
@@ -108,7 +108,7 @@ static int rpza_decode_stream(RpzaContext *s)
     if (total_blocks / 32 > bytestream2_get_bytes_left(&s->gb))
         return AVERROR_INVALIDDATA;
 
-    if ((ret = ff_reget_buffer(s->avctx, s->frame)) < 0)
+    if ((ret = ff_reget_buffer(s->avctx, s->frame, 0)) < 0)
         return ret;
     pixels = (uint16_t *)s->frame->data[0];
     stride = s->frame->linesize[0] / 2;
index f494c30ed8657c87a22663b91bc514cd9929c265..bd0520950ff323164344d4a0f73a3ea9f60ff5a6 100644 (file)
@@ -310,7 +310,7 @@ static int rscc_decode_frame(AVCodecContext *avctx, void *data,
     }
 
     /* Allocate when needed */
-    ret = ff_reget_buffer(avctx, ctx->reference);
+    ret = ff_reget_buffer(avctx, ctx->reference, 0);
     if (ret < 0)
         goto end;
 
index dc890a87e5195034948ba3f9aba862739488ba91..ab4d5b57df75eee5691a2ac732347bb20c978c78 100644 (file)
@@ -504,7 +504,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
             return ret;
     }
 
-    if ((ret = ff_reget_buffer(avctx, s->current_frame)) < 0)
+    if ((ret = ff_reget_buffer(avctx, s->current_frame, 0)) < 0)
         return ret;
 
     bytestream2_init(gb, avpkt->data, avpkt->size);
index fb8bfd4701b1965e33c0468f5c0926b71a100358..5fac100897079a4378f4c9ffd28a2346c68826af 100644 (file)
@@ -145,7 +145,7 @@ static int screenpresso_decode_frame(AVCodecContext *avctx, void *data,
         return AVERROR_UNKNOWN;
     }
 
-    ret = ff_reget_buffer(avctx, ctx->current);
+    ret = ff_reget_buffer(avctx, ctx->current, 0);
     if (ret < 0)
         return ret;
 
index 70e0dfd5dfffcd7a72c482403571cd1c3d4aec85..c45137b7d549bdb37497958617f7262ef301e732 100644 (file)
@@ -428,7 +428,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
     if (avpkt->size <= 769)
         return AVERROR_INVALIDDATA;
 
-    if ((ret = ff_reget_buffer(avctx, smk->pic)) < 0)
+    if ((ret = ff_reget_buffer(avctx, smk->pic, 0)) < 0)
         return ret;
 
     /* make the palette available on the way out */
index 3cb48347378dabe386cd06c1868367ed3b3240ff..2beb1ce29155fa7cd9cf6b3a5c97cdc2bd648d18 100644 (file)
@@ -445,7 +445,7 @@ static int smc_decode_frame(AVCodecContext *avctx,
 
     bytestream2_init(&s->gb, buf, buf_size);
 
-    if ((ret = ff_reget_buffer(avctx, s->frame)) < 0)
+    if ((ret = ff_reget_buffer(avctx, s->frame, 0)) < 0)
         return ret;
 
     if (pal && pal_size == AVPALETTE_SIZE) {
index af39f74d7dde5edb407550635497aedf81ba6ce7..91c8314379cdce8a060a33d822c18124a616a7aa 100644 (file)
@@ -239,7 +239,7 @@ static int seqvideo_decode_frame(AVCodecContext *avctx,
 
     SeqVideoContext *seq = avctx->priv_data;
 
-    if ((ret = ff_reget_buffer(avctx, seq->frame)) < 0)
+    if ((ret = ff_reget_buffer(avctx, seq->frame, 0)) < 0)
         return ret;
 
     if (seqvideo_decode(seq, buf, buf_size))
index e1824384c5eeeb4c6c4481eaa731ca995447e037..bcfe473852ef3ccfb4cff7e58aff14e81789a924 100644 (file)
@@ -882,7 +882,7 @@ static int truemotion1_decode_frame(AVCodecContext *avctx,
     if ((ret = truemotion1_decode_header(s)) < 0)
         return ret;
 
-    if ((ret = ff_reget_buffer(avctx, s->frame)) < 0)
+    if ((ret = ff_reget_buffer(avctx, s->frame, 0)) < 0)
         return ret;
 
     if (compression_types[s->compression].algorithm == ALGO_RGB24H) {
index 27c876fd7de01493ab541cb17bb645c9a2e403f2..800cae0a40877fe02ef0d5e56952b5969880db09 100644 (file)
@@ -915,7 +915,7 @@ static int decode_frame(AVCodecContext *avctx,
         return AVERROR(ENOMEM);
     }
 
-    if ((ret = ff_reget_buffer(avctx, p)) < 0)
+    if ((ret = ff_reget_buffer(avctx, p, 0)) < 0)
         return ret;
 
     l->bdsp.bswap_buf((uint32_t *) l->buffer, (const uint32_t *) buf,
index fc1ec4de0d48dd41c719d26222b55dbdbec01133..6d03081bb0a3bdca8de2af076ba999bd646c67c0 100644 (file)
@@ -103,7 +103,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
         return AVERROR_UNKNOWN;
     }
 
-    if ((ret = ff_reget_buffer(avctx, frame)) < 0)
+    if ((ret = ff_reget_buffer(avctx, frame, 0)) < 0)
         return ret;
 
     if (ret != Z_DATA_ERROR) {
index a8c7ee7996159377eb2083c47604b88cd7f94a44..65fbb010f60b63c5606ed37a4949f3ec6b7912a6 100644 (file)
@@ -240,7 +240,7 @@ static int tscc2_decode_frame(AVCodecContext *avctx, void *data,
         return buf_size;
     }
 
-    if ((ret = ff_reget_buffer(avctx, c->pic)) < 0) {
+    if ((ret = ff_reget_buffer(avctx, c->pic, 0)) < 0) {
         return ret;
     }
 
index 9318af064bda129ef52ee1af613737c1c694e4cc..e6fb661f6e3ad0aa05cce1cf739192a36956d19d 100644 (file)
@@ -230,7 +230,7 @@ static int ulti_decode_frame(AVCodecContext *avctx,
     int skip;
     int tmp;
 
-    if ((ret = ff_reget_buffer(avctx, s->frame)) < 0)
+    if ((ret = ff_reget_buffer(avctx, s->frame, 0)) < 0)
         return ret;
 
     bytestream2_init(&s->gb, buf, buf_size);
index e27304331149d62186e4e9e1165d26e5deb50b72..7f441bc4bd3d6c70b5023ee2a84588cf24407322 100644 (file)
@@ -339,7 +339,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
     if (12LL * chunks > bytestream2_get_bytes_left(gb))
         return AVERROR_INVALIDDATA;
 
-    if ((ret = ff_reget_buffer(avctx, c->pic)) < 0)
+    if ((ret = ff_reget_buffer(avctx, c->pic, 0)) < 0)
         return ret;
 
     c->pic->key_frame = 0;
index 8bb7087af906b8a3dd4aeaeae117873e4cbd0c1f..afe60e156477de2f60257919a448314dcf4c71bc 100644 (file)
@@ -410,7 +410,7 @@ static int xan_decode_frame(AVCodecContext *avctx,
     int ftype;
     int ret;
 
-    if ((ret = ff_reget_buffer(avctx, s->pic)) < 0)
+    if ((ret = ff_reget_buffer(avctx, s->pic, 0)) < 0)
         return ret;
 
     bytestream2_init(&s->gb, avpkt->data, avpkt->size);
index 32cfea200a1368ae9ab2763e608a202cbb4206d7..aff28ef3fcdffe472108c8cbfb60afec98cc5a5a 100644 (file)
@@ -204,7 +204,7 @@ static int yop_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
         return AVERROR_INVALIDDATA;
     }
 
-    if ((ret = ff_reget_buffer(avctx, frame)) < 0)
+    if ((ret = ff_reget_buffer(avctx, frame, 0)) < 0)
         return ret;
 
     if (!avctx->frame_number)