[FFmpeg-devel] [PATCH] Deprecate deinterlaced in libavcodec.

Ronald S. Bultje rsbultje at gmail.com
Sun Mar 3 17:23:08 CET 2013


From: "Ronald S. Bultje" <rsbultje at gmail.com>

---
 ffmpeg.c                | 4 ++--
 ffmpeg_opt.c            | 4 ++++
 libavcodec/avcodec.h    | 3 +++
 libavcodec/imgconvert.c | 4 ++++
 libavcodec/version.h    | 3 +++
 5 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/ffmpeg.c b/ffmpeg.c
index 5bc98a7..a41c6c5 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -691,7 +691,7 @@ static void pre_process_video_frame(InputStream *ist, AVPicture *picture, void *
     dec = ist->st->codec;
 
     /* deinterlace : must be done before any resize */
-    if (do_deinterlace) {
+    if (FF_API_DEINTERLACE && do_deinterlace) {
         int size;
 
         /* create temporary picture */
@@ -1953,7 +1953,7 @@ static int init_input_stream(int ist_index, char *error, int error_len)
             return AVERROR(EINVAL);
         }
 
-        ist->dr1 = (codec->capabilities & CODEC_CAP_DR1) && !do_deinterlace;
+        ist->dr1 = (codec->capabilities & CODEC_CAP_DR1) && !(FF_API_DEINTERLACE && do_deinterlace);
         if (codec->type == AVMEDIA_TYPE_VIDEO && ist->dr1) {
             ist->st->codec->get_buffer     = codec_get_buffer;
             ist->st->codec->release_buffer = codec_release_buffer;
diff --git a/ffmpeg_opt.c b/ffmpeg_opt.c
index 22d6e41..d3254ef 100644
--- a/ffmpeg_opt.c
+++ b/ffmpeg_opt.c
@@ -2128,12 +2128,14 @@ static int opt_vsync(void *optctx, const char *opt, const char *arg)
     return 0;
 }
 
+#if FF_API_DEINTERLACE
 static int opt_deinterlace(void *optctx, const char *opt, const char *arg)
 {
     av_log(NULL, AV_LOG_WARNING, "-%s is deprecated, use -filter:v yadif instead\n", opt);
     do_deinterlace = 1;
     return 0;
 }
+#endif
 
 static int opt_timecode(void *optctx, const char *opt, const char *arg)
 {
@@ -2521,8 +2523,10 @@ const OptionDef options[] = {
         "select the pass number (1 to 3)", "n" },
     { "passlogfile",  OPT_VIDEO | HAS_ARG | OPT_STRING | OPT_EXPERT | OPT_SPEC,  { .off = OFFSET(passlogfiles) },
         "select two pass log file name prefix", "prefix" },
+#if FF_API_DEINTERLACE
     { "deinterlace",  OPT_VIDEO | OPT_EXPERT ,                                   { .func_arg = opt_deinterlace },
         "this option is deprecated, use the yadif filter instead" },
+#endif
     { "psnr",         OPT_VIDEO | OPT_BOOL | OPT_EXPERT,                         { &do_psnr },
         "calculate PSNR of compressed frames" },
     { "vstats",       OPT_VIDEO | OPT_EXPERT ,                                   { &opt_vstats },
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index f809e3d..c27a603 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -4618,7 +4618,10 @@ int avpicture_get_size(enum AVPixelFormat pix_fmt, int width, int height);
 
 /**
  *  deinterlace - if not supported return -1
+ *
+ * @deprecated - use yadif (in lavfilter) instead
  */
+attribute_deprecated
 int avpicture_deinterlace(AVPicture *dst, const AVPicture *src,
                           enum AVPixelFormat pix_fmt, int width, int height);
 /**
diff --git a/libavcodec/imgconvert.c b/libavcodec/imgconvert.c
index 7b5be5c..6c3bb36 100644
--- a/libavcodec/imgconvert.c
+++ b/libavcodec/imgconvert.c
@@ -492,6 +492,8 @@ int av_picture_pad(AVPicture *dst, const AVPicture *src, int height, int width,
     return 0;
 }
 
+#if FF_API_DEINTERLACE
+
 #if !HAVE_MMX_EXTERNAL
 /* filter parameters: [-1 4 2 4 -1] // 8 */
 static void deinterlace_line_c(uint8_t *dst,
@@ -651,6 +653,8 @@ int avpicture_deinterlace(AVPicture *dst, const AVPicture *src,
     return 0;
 }
 
+#endif /* FF_API_DEINTERLACE */
+
 #ifdef TEST
 
 int main(void){
diff --git a/libavcodec/version.h b/libavcodec/version.h
index dceeaa4..f2cc5d1 100644
--- a/libavcodec/version.h
+++ b/libavcodec/version.h
@@ -106,5 +106,8 @@
 #ifndef FF_API_IDCT
 #define FF_API_IDCT              (LIBAVCODEC_VERSION_MAJOR < 55)
 #endif
+#ifndef FF_API_DEINTERLACE
+#define FF_API_DEINTERLACE       (LIBAVCODEC_VERSION_MAJOR < 55)
+#endif
 
 #endif /* AVCODEC_VERSION_H */
-- 
1.7.11.3



More information about the ffmpeg-devel mailing list