]> git.sesse.net Git - casparcg/blobdiff - modules/ffmpeg/producer/ffmpeg_producer.cpp
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches...
[casparcg] / modules / ffmpeg / producer / ffmpeg_producer.cpp
index 5641222a1f423d958c17b3dc15b21d6bdd59d7b8..02083d5bafaebb484cd020c9690771357817cf8a 100644 (file)
@@ -79,7 +79,6 @@ struct ffmpeg_producer : public core::frame_producer
 public:\r
        explicit ffmpeg_producer(const safe_ptr<core::frame_factory>& frame_factory, const std::wstring& filename, const std::wstring& filter, bool loop, int start, size_t length) \r
                : filename_(filename)\r
-               , graph_(diagnostics::create_graph(""))\r
                , frame_factory_(frame_factory)         \r
                , format_desc_(frame_factory->get_video_format_desc())\r
                , input_(graph_, filename_, loop, start, length)\r
@@ -98,23 +97,10 @@ public:
                graph_->add_guide("frame-time", 0.5);\r
                graph_->set_color("frame-time", diagnostics::color(0.1f, 1.0f, 0.1f));\r
                graph_->set_color("underflow", diagnostics::color(0.6f, 0.3f, 0.9f));   \r
+               diagnostics::register_graph(graph_);\r
                \r
-               // Do some pre-work in order to not block rendering thread for initialization and allocations.\r
-\r
-               push_packets();\r
-               auto video_frames = video_decoder_.poll();\r
-               if(!video_frames.empty())\r
-               {\r
-                       auto& video_frame = video_frames.front();\r
-                       auto  desc                = get_pixel_format_desc(static_cast<PixelFormat>(video_frame->format), video_frame->width, video_frame->height);\r
-                       if(desc.pix_fmt == core::pixel_format::invalid)\r
-                               get_pixel_format_desc(PIX_FMT_BGRA, video_frame->width, video_frame->height);\r
-                       \r
-                       for(int n = 0; n < 3; ++n)\r
-                               frame_factory->create_frame(this, desc);\r
-               }\r
-               BOOST_FOREACH(auto& video, video_frames)                        \r
-                       muxer_.push(video, 0);  \r
+               for(int n = 0; n < 3; ++n)\r
+                       frame_factory->create_frame(this, std::max<size_t>(2, video_decoder_.width()), std::max<size_t>(2, video_decoder_.height()));\r
        }\r
                        \r
        virtual safe_ptr<core::basic_frame> receive(int hints)\r
@@ -138,7 +124,7 @@ public:
                                graph_->add_tag("underflow");   \r
                }\r
 \r
-               graph_->update_text(narrow(print()));\r
+               graph_->set_text(print());\r
                \r
                return frame;\r
        }\r