[FFmpeg-cvslog] mpegvideo: do not set current_picture_ptr in decoders

Anton Khirnov git at videolan.org
Fri Dec 6 04:16:53 CET 2013


ffmpeg | branch: master | Anton Khirnov <anton at khirnov.net> | Sun Dec  1 12:57:47 2013 +0100| [66499f34b56fc6a9fdef25543bd9d576fc787895] | committer: Anton Khirnov

mpegvideo: do not set current_picture_ptr in decoders

This code was originally added in
5f1948111a4920ff74e31b4284ab0200f7938539 to h263 to set decoded frame
pts to some random numbers (removed in
a1c5cc429d99216406170eac7e8352860076d3e8) and then cargo culted to other
decoders.

The code is left in h263dec for now, since some part of the decoder
(apparently OBMC) relies on the specific previous frame to be reused.

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

 libavcodec/h261dec.c |    9 ---------
 libavcodec/mss2.c    |    7 -------
 libavcodec/vc1dec.c  |    9 ---------
 3 files changed, 25 deletions(-)

diff --git a/libavcodec/h261dec.c b/libavcodec/h261dec.c
index 4842fa0..49eaee1 100644
--- a/libavcodec/h261dec.c
+++ b/libavcodec/h261dec.c
@@ -584,15 +584,6 @@ retry:
         if (ff_MPV_common_init(s) < 0)
             return -1;
 
-    /* We need to set current_picture_ptr before reading the header,
-     * otherwise we cannot store anything in there. */
-    if (s->current_picture_ptr == NULL || s->current_picture_ptr->f.data[0]) {
-        int i = ff_find_unused_picture(s, 0);
-        if (i < 0)
-            return i;
-        s->current_picture_ptr = &s->picture[i];
-    }
-
     ret = h261_decode_picture_header(h);
 
     /* skip if the header was thrashed */
diff --git a/libavcodec/mss2.c b/libavcodec/mss2.c
index d219b67..3fe8620 100644
--- a/libavcodec/mss2.c
+++ b/libavcodec/mss2.c
@@ -377,13 +377,6 @@ static int decode_wmv9(AVCodecContext *avctx, const uint8_t *buf, int buf_size,
 
     ff_mpeg_flush(avctx);
 
-    if (s->current_picture_ptr == NULL || s->current_picture_ptr->f.data[0]) {
-        int i = ff_find_unused_picture(s, 0);
-        if (i < 0)
-            return i;
-        s->current_picture_ptr = &s->picture[i];
-    }
-
     init_get_bits(&s->gb, buf, buf_size * 8);
 
     s->loop_filter = avctx->skip_loop_filter < AVDISCARD_ALL;
diff --git a/libavcodec/vc1dec.c b/libavcodec/vc1dec.c
index ab4e098..141969f 100644
--- a/libavcodec/vc1dec.c
+++ b/libavcodec/vc1dec.c
@@ -5914,15 +5914,6 @@ static int vc1_decode_frame(AVCodecContext *avctx, void *data,
         }
     }
 
-    /* We need to set current_picture_ptr before reading the header,
-     * otherwise we cannot store anything in there. */
-    if (s->current_picture_ptr == NULL || s->current_picture_ptr->f.data[0]) {
-        int i = ff_find_unused_picture(s, 0);
-        if (i < 0)
-            goto err;
-        s->current_picture_ptr = &s->picture[i];
-    }
-
     // do parse frame header
     v->pic_header_flag = 0;
     v->first_pic_header_flag = 1;



More information about the ffmpeg-cvslog mailing list