]> git.sesse.net Git - casparcg/commitdiff
[ffmpeg_consumer] Fixed bug where explicitly requested pix_fmt was overridden for...
authorHelge Norberg <helge.norberg@svt.se>
Thu, 30 Mar 2017 13:45:56 +0000 (15:45 +0200)
committerHelge Norberg <helge.norberg@svt.se>
Thu, 30 Mar 2017 13:45:56 +0000 (15:45 +0200)
modules/ffmpeg/consumer/ffmpeg_consumer.cpp

index 1304296350c225d413e90610fa6cc32dfb6cc71b..4cfa88fad01844fec876cf98d2a3604a63681439 100644 (file)
@@ -700,37 +700,28 @@ private:
 #pragma warning (push)
 #pragma warning (disable : 4245)
 
+               FF(av_opt_set_int_list(
+                       filt_vsink,
+                       "pix_fmts",
+                       codec.pix_fmts,
+                       -1,
+                       AV_OPT_SEARCH_CHILDREN));
+
+
+#pragma warning (pop)
+
+               adjust_video_filter(codec, in_video_format_, filt_vsink, filtergraph);
+
                if (preferred_pix_fmt)
                {
-                       auto requested_fmt = av_get_pix_fmt(preferred_pix_fmt->c_str());
-                       auto valid_fmts = from_terminated_array<AVPixelFormat>(codec.pix_fmts, AVPixelFormat::AV_PIX_FMT_NONE);
+                       auto requested_fmt      = av_get_pix_fmt(preferred_pix_fmt->c_str());
+                       auto valid_fmts         = from_terminated_array<AVPixelFormat>(codec.pix_fmts, AVPixelFormat::AV_PIX_FMT_NONE);
 
                        if (!cpplinq::from(valid_fmts).contains(requested_fmt))
                                CASPAR_THROW_EXCEPTION(user_error() << msg_info(*preferred_pix_fmt + " is not supported by codec."));
 
-                       std::vector<AVPixelFormat> fmts = { requested_fmt, AVPixelFormat::AV_PIX_FMT_NONE };
-
-                       FF(av_opt_set_int_list(
-                               filt_vsink,
-                               "pix_fmts",
-                               fmts.data(),
-                               -1,
-                               AV_OPT_SEARCH_CHILDREN));
+                       set_pixel_format(filt_vsink, requested_fmt);
                }
-               else
-               {
-                       FF(av_opt_set_int_list(
-                               filt_vsink,
-                               "pix_fmts",
-                               codec.pix_fmts,
-                               -1,
-                               AV_OPT_SEARCH_CHILDREN));
-               }
-
-
-#pragma warning (pop)
-
-               adjust_video_filter(codec, in_video_format_, filt_vsink, filtergraph);
 
                if (in_video_format_.width < 1280)
                        video_graph_->scale_sws_opts = "out_color_matrix=bt601";