[FFmpeg-devel] [PATCH] mpegvideo: Fix several warnings about incompatible pointer type

jamal jamrial at gmail.com
Fri Jul 27 22:54:48 CEST 2012


---
 libavcodec/mpegvideo.h     |    2 +-
 libavcodec/mpegvideo_enc.c |   21 +++++++++++----------
 2 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h
index 89160d2..4445a29 100644
--- a/libavcodec/mpegvideo.h
+++ b/libavcodec/mpegvideo.h
@@ -757,7 +757,7 @@ void ff_MPV_frame_end(MpegEncContext *s);
 int ff_MPV_encode_init(AVCodecContext *avctx);
 int ff_MPV_encode_end(AVCodecContext *avctx);
 int ff_MPV_encode_picture(AVCodecContext *avctx, AVPacket *pkt,
-                          AVFrame *frame, int *got_packet);
+                          const AVFrame *frame, int *got_packet);
 void ff_MPV_common_init_mmx(MpegEncContext *s);
 void ff_MPV_common_init_axp(MpegEncContext *s);
 void ff_MPV_common_init_mmi(MpegEncContext *s);
diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c
index f3f7162..0fd7dfd 100644
--- a/libavcodec/mpegvideo_enc.c
+++ b/libavcodec/mpegvideo_enc.c
@@ -187,14 +187,15 @@ void ff_init_qscale_tab(MpegEncContext *s)
 
 static void copy_picture_attributes(MpegEncContext *s,
                                     AVFrame *dst,
-                                    AVFrame *src)
+                                    const AVFrame *src,
+                                    int *dpn)
 {
     int i;
 
     dst->pict_type              = src->pict_type;
     dst->quality                = src->quality;
     dst->coded_picture_number   = src->coded_picture_number;
-    dst->display_picture_number = src->display_picture_number;
+    dst->display_picture_number = *dpn ? *dpn : src->display_picture_number;
     //dst->reference              = src->reference;
     dst->pts                    = src->pts;
     dst->interlaced_frame       = src->interlaced_frame;
@@ -948,18 +949,18 @@ static int get_intra_count(MpegEncContext *s, uint8_t *src,
 }
 
 
-static int load_input_picture(MpegEncContext *s, AVFrame *pic_arg)
+static int load_input_picture(MpegEncContext *s, const AVFrame *pic_arg)
 {
     AVFrame *pic = NULL;
     int64_t pts;
-    int i;
+    int i, display_picture_number;
     const int encoding_delay = s->max_b_frames ? s->max_b_frames :
                                                  (s->low_delay ? 0 : 1);
     int direct = 1;
 
     if (pic_arg) {
         pts = pic_arg->pts;
-        pic_arg->display_picture_number = s->input_picture_number++;
+        display_picture_number = s->input_picture_number++;
 
         if (pts != AV_NOPTS_VALUE) {
             if (s->user_specified_pts != AV_NOPTS_VALUE) {
@@ -973,7 +974,7 @@ static int load_input_picture(MpegEncContext *s, AVFrame *pic_arg)
                     return -1;
                 }
 
-                if (!s->low_delay && pic_arg->display_picture_number == 1)
+                if (!s->low_delay && display_picture_number == 1)
                     s->dts_delta = time - last;
             }
             s->user_specified_pts = pts;
@@ -985,7 +986,7 @@ static int load_input_picture(MpegEncContext *s, AVFrame *pic_arg)
                        "Warning: AVFrame.pts=? trying to guess (%"PRId64")\n",
                        pts);
             } else {
-                pts = pic_arg->display_picture_number;
+                pts = display_picture_number;
             }
         }
     }
@@ -1068,7 +1069,7 @@ static int load_input_picture(MpegEncContext *s, AVFrame *pic_arg)
             }
         }
     }
-    copy_picture_attributes(s, pic, pic_arg);
+    copy_picture_attributes(s, pic, pic_arg, &display_picture_number);
     pic->pts = pts; // we set this here to avoid modifiying pic_arg
   }
 
@@ -1418,7 +1419,7 @@ no_output_pic:
             s->reordered_input_picture[0]->f.type = 0;
 
             copy_picture_attributes(s, &pic->f,
-                                    &s->reordered_input_picture[0]->f);
+                                    &s->reordered_input_picture[0]->f, NULL);
 
             s->current_picture_ptr = pic;
         } else {
@@ -1445,7 +1446,7 @@ no_output_pic:
 }
 
 int ff_MPV_encode_picture(AVCodecContext *avctx, AVPacket *pkt,
-                          AVFrame *pic_arg, int *got_packet)
+                          const AVFrame *pic_arg, int *got_packet)
 {
     MpegEncContext *s = avctx->priv_data;
     int i, stuffing_count, ret;
-- 
1.7.8.6



More information about the ffmpeg-devel mailing list