[FFmpeg-devel] [PATCH] Deprecate deinterlaced in libavcodec.
Ronald S. Bultje
rsbultje at gmail.com
Sun Mar 3 03:45:56 CET 2013
From: "Ronald S. Bultje" <rsbultje at gmail.com>
---
configure | 2 ++
ffmpeg.c | 4 ++--
ffmpeg_opt.c | 4 ++++
libavcodec/avcodec.h | 3 +++
libavcodec/imgconvert.c | 4 ++++
libavcodec/version.h | 3 +++
libavcodec/x86/Makefile | 2 +-
7 files changed, 19 insertions(+), 3 deletions(-)
diff --git a/configure b/configure
index 0aaaff5..16114a9 100755
--- a/configure
+++ b/configure
@@ -138,6 +138,7 @@ Component options:
--disable-mdct disable MDCT code
--disable-rdft disable RDFT code
--disable-fft disable FFT code
+ --disable-deinterlace disable lavc built-in deinterlacer
Hardware accelerators:
--enable-dxva2 enable DXVA2 code
@@ -1211,6 +1212,7 @@ CONFIG_LIST="
$LIBRARY_LIST
$PROGRAM_LIST
dct
+ deinterlace
dwt
fast_unaligned
fft
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..6e911e0 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 /* CONFIG_DEINTERLACE */
+
#ifdef TEST
int main(void){
diff --git a/libavcodec/version.h b/libavcodec/version.h
index dceeaa4..94dcfb9 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 && CONFIG_DEINTERLACE)
+#endif
#endif /* AVCODEC_VERSION_H */
diff --git a/libavcodec/x86/Makefile b/libavcodec/x86/Makefile
index ff7ea77..d7b5f0b 100644
--- a/libavcodec/x86/Makefile
+++ b/libavcodec/x86/Makefile
@@ -81,8 +81,8 @@ YASM-OBJS-$(CONFIG_VP3DSP) += x86/vp3dsp.o
YASM-OBJS-$(CONFIG_VP6_DECODER) += x86/vp56dsp.o
YASM-OBJS-$(CONFIG_VP8_DECODER) += x86/vp8dsp.o
+YASM-OBJS-$(CONFIG_DEINTERLACE) += x86/deinterlace.o
YASM-OBJS += x86/dsputil.o \
- x86/deinterlace.o \
x86/fmtconvert.o \
x86/hpeldsp.o \
x86/mpeg4qpel.o \
--
1.7.11.3
More information about the ffmpeg-devel
mailing list