From: Matthieu Bouron <[email protected]>
Fixes ticket #1102.
---
ffmpeg_filter.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/ffmpeg_filter.c b/ffmpeg_filter.c
index 950e4d0..774ec1c 100644
--- a/ffmpeg_filter.c
+++ b/ffmpeg_filter.c
@@ -706,6 +706,8 @@ static int configure_input_video_filter(FilterGraph *fg,
InputFilter *ifilter,
int ret, pad_idx = 0;
int64_t tsoffset = 0;
+ AVDictionaryEntry *entry;
+
if (ist->dec_ctx->codec_type == AVMEDIA_TYPE_AUDIO) {
av_log(NULL, AV_LOG_ERROR, "Cannot connect video filter to audio
input\n");
return AVERROR(EINVAL);
@@ -764,6 +766,29 @@ static int configure_input_video_filter(FilterGraph *fg,
InputFilter *ifilter,
return ret;
}
+ entry = av_dict_get(ist->st->metadata, "mxf_frame_layout", NULL, 0);
+ if (entry && entry->value &&
+ (!strcmp(entry->value, "separate_fields") ||
+ !strcmp(entry->value, "segmented_frame"))) {
+
+ entry = av_dict_get(ist->st->metadata, "mxf_field_dominance", NULL, 0);
+ if (entry && entry->value) {
+ av_bprint_init(&args, 0, 1);
+ av_bprintf(&args, "mode=%s", entry->value);
+
+ ret = insert_filter(&last_filter, &pad_idx, "setfield", args.str);
+ av_bprint_finalize(&args, NULL);
+
+ if (ret < 0)
+ return ret;
+ }
+
+
+ ret = insert_filter(&last_filter, &pad_idx, "tinterlace",
"mode=merge");
+ if (ret < 0)
+ return ret;
+ }
+
if (ist->framerate.num) {
AVFilterContext *setpts;
--
2.4.6
_______________________________________________
ffmpeg-devel mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel