Signed-off-by: Martin Storsjö <martin@martin.st>tags/n1.2
@@ -404,6 +404,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) | static void pre_process_video_frame(InputStream *ist, AVPicture *picture, void **bufp) | ||||
{ | { | ||||
AVCodecContext *dec; | AVCodecContext *dec; | ||||
@@ -442,6 +443,7 @@ static void pre_process_video_frame(InputStream *ist, AVPicture *picture, void * | |||||
*picture = *picture2; | *picture = *picture2; | ||||
*bufp = buf; | *bufp = buf; | ||||
} | } | ||||
#endif | |||||
static void do_subtitle_out(AVFormatContext *s, | static void do_subtitle_out(AVFormatContext *s, | ||||
OutputStream *ost, | OutputStream *ost, | ||||
@@ -1181,7 +1183,9 @@ static int decode_video(InputStream *ist, AVPacket *pkt, int *got_output) | |||||
decoded_frame->pts = guess_correct_pts(&ist->pts_ctx, decoded_frame->pkt_pts, | decoded_frame->pts = guess_correct_pts(&ist->pts_ctx, decoded_frame->pkt_pts, | ||||
decoded_frame->pkt_dts); | decoded_frame->pkt_dts); | ||||
pkt->size = 0; | pkt->size = 0; | ||||
#if FF_API_DEINTERLACE | |||||
pre_process_video_frame(ist, (AVPicture *)decoded_frame, &buffer_to_free); | pre_process_video_frame(ist, (AVPicture *)decoded_frame, &buffer_to_free); | ||||
#endif | |||||
rate_emu_sleep(ist); | rate_emu_sleep(ist); | ||||
@@ -1715,12 +1715,14 @@ static int opt_vsync(void *optctx, const char *opt, const char *arg) | |||||
return 0; | return 0; | ||||
} | } | ||||
#if FF_API_DEINTERLACE | |||||
static int opt_deinterlace(void *optctx, const char *opt, const char *arg) | 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); | av_log(NULL, AV_LOG_WARNING, "-%s is deprecated, use -filter:v yadif instead\n", opt); | ||||
do_deinterlace = 1; | do_deinterlace = 1; | ||||
return 0; | return 0; | ||||
} | } | ||||
#endif | |||||
int opt_cpuflags(void *optctx, const char *opt, const char *arg) | int opt_cpuflags(void *optctx, const char *opt, const char *arg) | ||||
{ | { | ||||
@@ -2057,8 +2059,10 @@ const OptionDef options[] = { | |||||
"select the pass number (1 or 2)", "n" }, | "select the pass number (1 or 2)", "n" }, | ||||
{ "passlogfile", OPT_VIDEO | HAS_ARG | OPT_STRING | OPT_EXPERT | OPT_SPEC, { .off = OFFSET(passlogfiles) }, | { "passlogfile", OPT_VIDEO | HAS_ARG | OPT_STRING | OPT_EXPERT | OPT_SPEC, { .off = OFFSET(passlogfiles) }, | ||||
"select two pass log file name prefix", "prefix" }, | "select two pass log file name prefix", "prefix" }, | ||||
#if FF_API_DEINTERLACE | |||||
{ "deinterlace", OPT_VIDEO | OPT_EXPERT , { .func_arg = opt_deinterlace }, | { "deinterlace", OPT_VIDEO | OPT_EXPERT , { .func_arg = opt_deinterlace }, | ||||
"this option is deprecated, use the yadif filter instead" }, | "this option is deprecated, use the yadif filter instead" }, | ||||
#endif | |||||
{ "vstats", OPT_VIDEO | OPT_EXPERT , { &opt_vstats }, | { "vstats", OPT_VIDEO | OPT_EXPERT , { &opt_vstats }, | ||||
"dump video coding statistics to file" }, | "dump video coding statistics to file" }, | ||||
{ "vstats_file", OPT_VIDEO | HAS_ARG | OPT_EXPERT , { opt_vstats_file }, | { "vstats_file", OPT_VIDEO | HAS_ARG | OPT_EXPERT , { opt_vstats_file }, | ||||
@@ -4267,11 +4267,16 @@ int avpicture_layout(const AVPicture* src, enum AVPixelFormat pix_fmt, | |||||
*/ | */ | ||||
int avpicture_get_size(enum AVPixelFormat pix_fmt, int width, int height); | int avpicture_get_size(enum AVPixelFormat pix_fmt, int width, int height); | ||||
#if FF_API_DEINTERLACE | |||||
/** | /** | ||||
* deinterlace - if not supported return -1 | * deinterlace - if not supported return -1 | ||||
* | |||||
* @deprecated - use yadif (in libavfilter) instead | |||||
*/ | */ | ||||
attribute_deprecated | |||||
int avpicture_deinterlace(AVPicture *dst, const AVPicture *src, | int avpicture_deinterlace(AVPicture *dst, const AVPicture *src, | ||||
enum AVPixelFormat pix_fmt, int width, int height); | enum AVPixelFormat pix_fmt, int width, int height); | ||||
#endif | |||||
/** | /** | ||||
* Copy image src to dst. Wraps av_picture_data_copy() above. | * Copy image src to dst. Wraps av_picture_data_copy() above. | ||||
*/ | */ | ||||
@@ -366,6 +366,8 @@ int av_picture_pad(AVPicture *dst, const AVPicture *src, int height, int width, | |||||
return 0; | return 0; | ||||
} | } | ||||
#if FF_API_DEINTERLACE | |||||
#if !HAVE_MMX_EXTERNAL | #if !HAVE_MMX_EXTERNAL | ||||
/* filter parameters: [-1 4 2 4 -1] // 8 */ | /* filter parameters: [-1 4 2 4 -1] // 8 */ | ||||
static void deinterlace_line_c(uint8_t *dst, | static void deinterlace_line_c(uint8_t *dst, | ||||
@@ -524,3 +526,5 @@ int avpicture_deinterlace(AVPicture *dst, const AVPicture *src, | |||||
emms_c(); | emms_c(); | ||||
return 0; | return 0; | ||||
} | } | ||||
#endif /* FF_API_DEINTERLACE */ |
@@ -97,5 +97,8 @@ | |||||
#ifndef FF_API_IDCT | #ifndef FF_API_IDCT | ||||
#define FF_API_IDCT (LIBAVCODEC_VERSION_MAJOR < 55) | #define FF_API_IDCT (LIBAVCODEC_VERSION_MAJOR < 55) | ||||
#endif | #endif | ||||
#ifndef FF_API_DEINTERLACE | |||||
#define FF_API_DEINTERLACE (LIBAVCODEC_VERSION_MAJOR < 56) | |||||
#endif | |||||
#endif /* AVCODEC_VERSION_H */ | #endif /* AVCODEC_VERSION_H */ |