Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Thu, 7 Mar 2013 10:50:17 +0000 (11:50 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 7 Mar 2013 10:50:17 +0000 (11:50 +0100)
* qatar/master:
  lavc: Deprecate the deinterlace functions in libavcodec
  h264: Integrate draw_horiz_band into ff_h264_draw_horiz_band

Conflicts:
configure
ffmpeg_opt.c
libavcodec/avcodec.h
libavcodec/h264.c
libavcodec/imgconvert.c
libavcodec/version.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
ffmpeg.c
libavcodec/avcodec.h
libavcodec/h264.c
libavcodec/version.h

index 229a896..c88665e 100644 (file)
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -681,6 +681,7 @@ static void do_audio_out(AVFormatContext *s, OutputStream *ost,
     }
 }
 
+#if FF_API_DEINTERLACE
 static void pre_process_video_frame(InputStream *ist, AVPicture *picture, void **bufp)
 {
     AVCodecContext *dec;
@@ -721,6 +722,7 @@ static void pre_process_video_frame(InputStream *ist, AVPicture *picture, void *
         *picture = *picture2;
     *bufp = buf;
 }
+#endif
 
 static void do_subtitle_out(AVFormatContext *s,
                             OutputStream *ost,
@@ -1675,7 +1677,9 @@ static int decode_video(InputStream *ist, AVPacket *pkt, int *got_output)
     }
 
     pkt->size = 0;
+#if FF_API_DEINTERLACE
     pre_process_video_frame(ist, (AVPicture *)decoded_frame, &buffer_to_free);
+#endif
 
     rate_emu_sleep(ist);
 
index c27a603..c4db4d7 100644 (file)
@@ -4616,14 +4616,16 @@ int avpicture_layout(const AVPicture* src, enum AVPixelFormat pix_fmt,
  */
 int avpicture_get_size(enum AVPixelFormat pix_fmt, int width, int height);
 
+#if FF_API_DEINTERLACE
 /**
  *  deinterlace - if not supported return -1
  *
- * @deprecated - use yadif (in lavfilter) instead
+ * @deprecated - use yadif (in libavfilter) instead
  */
 attribute_deprecated
 int avpicture_deinterlace(AVPicture *dst, const AVPicture *src,
                           enum AVPixelFormat pix_fmt, int width, int height);
+#endif
 /**
  * Copy image src to dst. Wraps av_image_copy().
  */
index 2960bae..3a83b4b 100644 (file)
@@ -143,28 +143,30 @@ static void h264_er_decode_mb(void *opaque, int ref, int mv_dir, int mv_type,
     ff_h264_hl_decode_mb(h);
 }
 
-static void draw_horiz_band(AVCodecContext *avctx, Picture *cur,
-                            Picture *last, int y, int h, int picture_structure,
-                            int first_field, int low_delay)
+void ff_h264_draw_horiz_band(H264Context *h, int y, int height)
 {
+    AVCodecContext *avctx = h->avctx;
+    Picture *cur  = &h->cur_pic;
+    Picture *last = h->ref_list[0][0].f.data[0] ? &h->ref_list[0][0] : NULL;
     const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(avctx->pix_fmt);
     int vshift = desc->log2_chroma_h;
-    const int field_pic = picture_structure != PICT_FRAME;
-    if(field_pic){
-        h <<= 1;
+    const int field_pic = h->picture_structure != PICT_FRAME;
+    if (field_pic) {
+        height <<= 1;
         y <<= 1;
     }
 
-    h = FFMIN(h, avctx->height - y);
+    height = FFMIN(height, avctx->height - y);
 
-    if(field_pic && first_field && !(avctx->slice_flags&SLICE_FLAG_ALLOW_FIELD)) return;
+    if (field_pic && h->first_field && !(avctx->slice_flags & SLICE_FLAG_ALLOW_FIELD))
+        return;
 
     if (avctx->draw_horiz_band) {
         AVFrame *src;
         int offset[AV_NUM_DATA_POINTERS];
         int i;
 
-        if(cur->f.pict_type == AV_PICTURE_TYPE_B || low_delay ||
+        if (cur->f.pict_type == AV_PICTURE_TYPE_B || h->low_delay ||
            (avctx->slice_flags & SLICE_FLAG_CODED_ORDER))
             src = &cur->f;
         else if (last)
@@ -172,27 +174,19 @@ static void draw_horiz_band(AVCodecContext *avctx, Picture *cur,
         else
             return;
 
-        offset[0]= y * src->linesize[0];
-        offset[1]=
-        offset[2]= (y >> vshift) * src->linesize[1];
+        offset[0] = y * src->linesize[0];
+        offset[1] =
+        offset[2] = (y >> vshift) * src->linesize[1];
         for (i = 3; i < AV_NUM_DATA_POINTERS; i++)
             offset[i] = 0;
 
         emms_c();
 
         avctx->draw_horiz_band(avctx, src, offset,
-                               y, picture_structure, h);
+                               y, h->picture_structure, height);
     }
 }
 
-void ff_h264_draw_horiz_band(H264Context *h, int y, int height)
-{
-    draw_horiz_band(h->avctx, &h->cur_pic,
-                    h->ref_list[0][0].f.data[0] ? &h->ref_list[0][0] : NULL,
-                    y, height, h->picture_structure, h->first_field,
-                    h->low_delay);
-}
-
 static void free_frame_buffer(H264Context *h, Picture *pic)
 {
     pic->period_since_free = 0;
index f2cc5d1..67fdc25 100644 (file)
 #define FF_API_IDCT              (LIBAVCODEC_VERSION_MAJOR < 55)
 #endif
 #ifndef FF_API_DEINTERLACE
-#define FF_API_DEINTERLACE       (LIBAVCODEC_VERSION_MAJOR < 55)
+#define FF_API_DEINTERLACE       (LIBAVCODEC_VERSION_MAJOR < 56)
 #endif
 
 #endif /* AVCODEC_VERSION_H */