]> git.sesse.net Git - casparcg/commitdiff
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches...
authorRonag <Ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Wed, 27 Jul 2011 18:57:24 +0000 (18:57 +0000)
committerRonag <Ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Wed, 27 Jul 2011 18:57:24 +0000 (18:57 +0000)
modules/ffmpeg/producer/filter/filter.cpp
modules/ffmpeg/producer/video/video_decoder.cpp

index 831425c7742ccaa0e1a68cf348572c52ea4ad6ac..ffc3af220e1fdbeaf3c223559439c7e30c51a0b4 100644 (file)
@@ -60,9 +60,20 @@ struct filter::implementation
                                        boost::errinfo_api_function("avfilter_graph_create_filter") <<  boost::errinfo_errno(AVUNERROR(errn)));\r
                        }\r
 \r
-                       PixelFormat pix_fmts[] = { PIX_FMT_BGRA, PIX_FMT_NONE };\r
-\r
-                       // Output\r
+                       PixelFormat pix_fmts[] = \r
+                       {\r
+                               PIX_FMT_YUV420P,\r
+                               PIX_FMT_YUVA420P,\r
+                               PIX_FMT_YUV422P,\r
+                               PIX_FMT_YUV444P,\r
+                               PIX_FMT_YUV411P,\r
+                               PIX_FMT_ARGB, \r
+                               PIX_FMT_RGBA,\r
+                               PIX_FMT_ABGR,\r
+                               PIX_FMT_GRAY8,\r
+                               PIX_FMT_NONE\r
+                       };      \r
+                       // OPIX_FMT_BGRAutput\r
                        errn = avfilter_graph_create_filter(&buffersink_ctx_, avfilter_get_by_name("buffersink"), "out", NULL, pix_fmts, graph_.get());\r
                        if(errn < 0)\r
                        {\r
index 45959e0f35b07ac5eb56ca12db8f3e021c2d9902..3894bd756ea934138c9e5ece0e49e072da2b8e32 100644 (file)
@@ -73,7 +73,7 @@ public:
        explicit implementation(const std::shared_ptr<AVFormatContext>& context, const safe_ptr<core::frame_factory>& frame_factory, const std::wstring& filter) \r
                : frame_factory_(frame_factory)\r
                , mode_(core::video_mode::invalid)\r
-               //, filter_(filter.empty() ? nullptr : new caspar::filter(filter))\r
+               , filter_(filter.empty() ? nullptr : new caspar::filter(filter))\r
        {\r
                AVCodec* dec;\r
                index_ = av_find_best_stream(context.get(), AVMEDIA_TYPE_VIDEO, -1, -1, &dec, 0);\r
@@ -138,14 +138,15 @@ public:
 \r
                        if(filter_)\r
                        {\r
+                               auto av_frames2 = std::move(av_frames);\r
+\r
                                filter_tasks_.wait();\r
-                               \r
-                               av_frames.clear();\r
+\r
                                boost::range::push_back(av_frames, filter_->poll());\r
 \r
                                filter_tasks_.run([=]\r
                                {\r
-                                       BOOST_FOREACH(auto& frame, av_frames                          \r
+                                       BOOST_FOREACH(auto& frame, av_frames2)                          \r
                                                filter_->push(frame);\r
                                });\r
                        }\r