X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fffmpeg%2Fproducer%2Ffilter%2Ffilter.cpp;h=9c2ef158a3cd37aff26d90d319dedac7a9cfd180;hb=7372d873aa959f752321de3c47feb72470e3cf22;hp=3e9c35171d13c5a4869495ca959b8d9d6b8d04ad;hpb=65d891d9c6214bfc3a6d28ede018d1912ddbc714;p=casparcg diff --git a/modules/ffmpeg/producer/filter/filter.cpp b/modules/ffmpeg/producer/filter/filter.cpp index 3e9c35171..9c2ef158a 100644 --- a/modules/ffmpeg/producer/filter/filter.cpp +++ b/modules/ffmpeg/producer/filter/filter.cpp @@ -189,36 +189,43 @@ struct filter::implementation BOOST_FOREACH(auto filter_ctx, boost::make_iterator_range(graph_->filters, graph_->filters + graph_->filter_count) | yadif_filter) { - // Don't trust libavfilter format choice. + // Don't trust that libavfilter chooses optimal format. filter_ctx->filter->query_formats = [&]() -> int (*)(AVFilterContext*) { switch(frame->format) { - case PIX_FMT_YUV410P: return query_formats_410; - case PIX_FMT_YUV411P: return query_formats_411; - case PIX_FMT_YUV420P: return query_formats_420; - case PIX_FMT_YUV422P: return query_formats_422; - case PIX_FMT_YUV444P: return query_formats_444; - case PIX_FMT_YUVA420P: return query_formats_420a; - case PIX_FMT_UYVY422: return query_formats_422; - case PIX_FMT_YUYV422: return query_formats_422; - case PIX_FMT_UYYVYY411: return query_formats_411; - case PIX_FMT_YUV420P10: return query_formats_420; - case PIX_FMT_YUV422P10: return query_formats_422; - case PIX_FMT_YUV444P10: return query_formats_444; - case PIX_FMT_YUV420P16: return query_formats_420; - case PIX_FMT_YUV422P16: return query_formats_422; - case PIX_FMT_YUV444P16: return query_formats_444; - case PIX_FMT_YUV420P9: return query_formats_420; - case PIX_FMT_YUV422P9: return query_formats_422; - case PIX_FMT_YUV444P9: return query_formats_444; - case PIX_FMT_BGR24: return query_formats_444; - case PIX_FMT_RGB24: return query_formats_444; - case PIX_FMT_BGRA: return query_formats_420a; - case PIX_FMT_RGBA: return query_formats_420a; - case PIX_FMT_ABGR: return query_formats_420a; - case PIX_FMT_ARGB: return query_formats_420a; - default: return filter_ctx->filter->query_formats; + case PIX_FMT_YUV444P16: + case PIX_FMT_YUV444P10: + case PIX_FMT_YUV444P9: + case PIX_FMT_YUV444P: + case PIX_FMT_BGR24: + case PIX_FMT_RGB24: + return query_formats_444; + case PIX_FMT_YUV422P16: + case PIX_FMT_YUV422P10: + case PIX_FMT_YUV422P9: + case PIX_FMT_YUV422P: + case PIX_FMT_UYVY422: + case PIX_FMT_YUYV422: + return query_formats_422; + case PIX_FMT_YUV420P16: + case PIX_FMT_YUV420P10: + case PIX_FMT_YUV420P9: + case PIX_FMT_YUV420P: + return query_formats_420; + case PIX_FMT_YUVA420P: + case PIX_FMT_BGRA: + case PIX_FMT_RGBA: + case PIX_FMT_ABGR: + case PIX_FMT_ARGB: + return query_formats_420a; + case PIX_FMT_UYYVYY411: + case PIX_FMT_YUV411P: + return query_formats_411; + case PIX_FMT_YUV410P: + return query_formats_410; + default: + return filter_ctx->filter->query_formats; } }(); }