]> 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>
Sun, 31 Jul 2011 18:07:49 +0000 (18:07 +0000)
committerRonag <Ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Sun, 31 Jul 2011 18:07:49 +0000 (18:07 +0000)
modules/ffmpeg/producer/ffmpeg_producer.cpp

index 9e32f95f66aa40cd235db8971146509144bac522..678bd5a7713e81609803b76e486dcc2d345338c7 100644 (file)
@@ -62,9 +62,7 @@ struct ffmpeg_producer : public core::frame_producer
        input                                                                                   input_; \r
        video_decoder                                                                   video_decoder_;\r
        audio_decoder                                                                   audio_decoder_;\r
-\r
-       std::queue<safe_ptr<core::basic_frame>>                 output_buffer_;\r
-\r
+       \r
        frame_muxer                                                                             muxer_;\r
        \r
        tbb::task_group                                                                 tasks_;\r
@@ -87,47 +85,27 @@ public:
                for(int n = 0; n < 128 && muxer_.size() < 2; ++n)\r
                        decode_frame();\r
        }\r
-\r
-       ~ffmpeg_producer()\r
-       {\r
-               tasks_.cancel();\r
-               tasks_.wait();\r
-       }\r
-\r
+       \r
        virtual safe_ptr<core::basic_frame> receive()\r
        {\r
-               if(output_buffer_.empty())\r
-               {       \r
-                       //tasks_.wait();\r
-\r
-                       while(muxer_.size() > 0)\r
-                               output_buffer_.push(muxer_.pop());\r
+               frame_timer_.restart();\r
 \r
-                       //tasks_.run([=]\r
-                       //{\r
-                               frame_timer_.restart();\r
-\r
-                               for(int n = 0; n < 64 && muxer_.empty(); ++n)\r
-                                       decode_frame();\r
+               for(int n = 0; n < 64 && muxer_.size() < 2; ++n)\r
+                       decode_frame();\r
 \r
-                               graph_->update_value("frame-time", static_cast<float>(frame_timer_.elapsed()*format_desc_.fps*0.5));\r
-                       //});\r
-               }\r
+               graph_->update_value("frame-time", static_cast<float>(frame_timer_.elapsed()*format_desc_.fps*0.5));\r
                \r
                auto frame = core::basic_frame::late();\r
 \r
-               if(output_buffer_.empty())\r
+               if(muxer_.empty())\r
                {\r
                        if(input_.eof())\r
                                frame = core::basic_frame::eof();\r
                        else\r
                                graph_->add_tag("underflow");                   \r
                }\r
-               else\r
-               {\r
-                       frame = output_buffer_.front();\r
-                       output_buffer_.pop();\r
-               }\r
+               else            \r
+                       frame = muxer_.pop();           \r
                \r
                return frame;\r
        }\r