[FFmpeg-devel] [PATCH 1/2] avcodec/mpegvideo: Factor ff_mpv_decode_init() out

Michael Niedermayer michaelni at gmx.at
Fri Sep 5 17:41:29 CEST 2014


Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
---
 libavcodec/h261dec.c   |    7 ++-----
 libavcodec/h263dec.c   |    6 ++----
 libavcodec/mpeg12dec.c |    3 +--
 libavcodec/mpegvideo.c |   12 ++++++++++++
 libavcodec/mpegvideo.h |    1 +
 libavcodec/rv10.c      |    3 +--
 libavcodec/rv34.c      |    7 +------
 7 files changed, 20 insertions(+), 19 deletions(-)

diff --git a/libavcodec/h261dec.c b/libavcodec/h261dec.c
index a8aae6e..ead81fc 100644
--- a/libavcodec/h261dec.c
+++ b/libavcodec/h261dec.c
@@ -76,14 +76,11 @@ static av_cold int h261_decode_init(AVCodecContext *avctx)
 
     // set defaults
     ff_mpv_decode_defaults(s);
-    s->avctx       = avctx;
-    s->width       = s->avctx->coded_width;
-    s->height      = s->avctx->coded_height;
-    s->codec_id    = s->avctx->codec->id;
+    ff_mpv_decode_init(s, avctx);
+
     s->out_format  = FMT_H261;
     s->low_delay   = 1;
     avctx->pix_fmt = AV_PIX_FMT_YUV420P;
-    s->codec_id    = avctx->codec->id;
 
     ff_h261_common_init();
     h261_decode_init_vlc(h);
diff --git a/libavcodec/h263dec.c b/libavcodec/h263dec.c
index 9f5500d..b39a63b 100644
--- a/libavcodec/h263dec.c
+++ b/libavcodec/h263dec.c
@@ -48,14 +48,12 @@ av_cold int ff_h263_decode_init(AVCodecContext *avctx)
     MpegEncContext *s = avctx->priv_data;
     int ret;
 
-    s->avctx           = avctx;
     s->out_format      = FMT_H263;
-    s->width           = avctx->coded_width;
-    s->height          = avctx->coded_height;
-    s->workaround_bugs = avctx->workaround_bugs;
 
     // set defaults
     ff_mpv_decode_defaults(s);
+    ff_mpv_decode_init(s, avctx);
+
     s->quant_precision = 5;
     s->decode_mb       = ff_h263_decode_mb;
     s->low_delay       = 1;
diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c
index 40aad16..ed3490b 100644
--- a/libavcodec/mpeg12dec.c
+++ b/libavcodec/mpeg12dec.c
@@ -1120,10 +1120,9 @@ static av_cold int mpeg_decode_init(AVCodecContext *avctx)
     MpegEncContext *s2 = &s->mpeg_enc_ctx;
 
     ff_mpv_decode_defaults(s2);
+    ff_mpv_decode_init(s2, avctx);
 
     s->mpeg_enc_ctx.avctx  = avctx;
-    s->mpeg_enc_ctx.flags  = avctx->flags;
-    s->mpeg_enc_ctx.flags2 = avctx->flags2;
 
     /* we need some permutation to store matrices,
      * until the decoder sets the real permutation. */
diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c
index 85cb41d..f5306cb 100644
--- a/libavcodec/mpegvideo.c
+++ b/libavcodec/mpegvideo.c
@@ -1109,6 +1109,18 @@ void ff_mpv_decode_defaults(MpegEncContext *s)
     ff_mpv_common_defaults(s);
 }
 
+void ff_mpv_decode_init(MpegEncContext *s, AVCodecContext *avctx)
+{
+    s->avctx           = avctx;
+    s->width           = avctx->coded_width;
+    s->height          = avctx->coded_height;
+    s->codec_id        = avctx->codec->id;
+    s->workaround_bugs = avctx->workaround_bugs;
+    s->flags           = avctx->flags;
+    s->flags2          = avctx->flags2;
+
+}
+
 static int init_er(MpegEncContext *s)
 {
     ERContext *er = &s->er;
diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h
index fa20665..87fe87f 100644
--- a/libavcodec/mpegvideo.h
+++ b/libavcodec/mpegvideo.h
@@ -726,6 +726,7 @@ int ff_mpv_common_frame_size_change(MpegEncContext *s);
 void ff_mpv_common_end(MpegEncContext *s);
 
 void ff_mpv_decode_defaults(MpegEncContext *s);
+void ff_mpv_decode_init(MpegEncContext *s, AVCodecContext *avctx);
 void ff_mpv_decode_mb(MpegEncContext *s, int16_t block[12][64]);
 void ff_mpv_report_decode_progress(MpegEncContext *s);
 
diff --git a/libavcodec/rv10.c b/libavcodec/rv10.c
index 4a5cf41..7097b29 100644
--- a/libavcodec/rv10.c
+++ b/libavcodec/rv10.c
@@ -475,10 +475,9 @@ static av_cold int rv10_decode_init(AVCodecContext *avctx)
         return ret;
 
     ff_mpv_decode_defaults(s);
+    ff_mpv_decode_init(s, avctx);
 
-    s->avctx       = avctx;
     s->out_format  = FMT_H263;
-    s->codec_id    = avctx->codec_id;
 
     rv->orig_width  =
     s->width        = avctx->coded_width;
diff --git a/libavcodec/rv34.c b/libavcodec/rv34.c
index c8aa6b6..a232ab2 100644
--- a/libavcodec/rv34.c
+++ b/libavcodec/rv34.c
@@ -1490,14 +1490,9 @@ av_cold int ff_rv34_decode_init(AVCodecContext *avctx)
     int ret;
 
     ff_mpv_decode_defaults(s);
-    s->avctx      = avctx;
+    ff_mpv_decode_init(s, avctx);
     s->out_format = FMT_H263;
-    s->codec_id   = avctx->codec_id;
 
-    s->width  = avctx->width;
-    s->height = avctx->height;
-
-    r->s.avctx = avctx;
     avctx->pix_fmt = AV_PIX_FMT_YUV420P;
     avctx->has_b_frames = 1;
     s->low_delay = 0;
-- 
1.7.9.5



More information about the ffmpeg-devel mailing list