]> git.sesse.net Git - casparcg/blobdiff - modules/ffmpeg/producer/ffmpeg_producer.cpp
Merge pull request #501 from dimitry-ishenko-casparcg/next
[casparcg] / modules / ffmpeg / producer / ffmpeg_producer.cpp
index b71e36a8fa89559882b6b343ab06fb87bb07eee5..216559156fda5435fbc2ae174aad78257d55ff23 100644 (file)
@@ -559,8 +559,17 @@ public:
                tbb::parallel_invoke(
                [&]
                {
-                       if (!muxer_->video_ready() && video_decoder_)
-                               video = video_decoder_->poll();
+                       do
+                       {
+                               if (!muxer_->video_ready() && video_decoder_)
+                               {
+                                       video = video_decoder_->poll();
+                                       if (video)
+                                               break;
+                               }
+                               else
+                                       break;
+                       } while (!video_decoder_->empty());
                },
                [&]
                {
@@ -599,7 +608,8 @@ public:
                file_frame_number = std::max(file_frame_number, video_decoder_ ? video_decoder_->file_frame_number() : 0);
 
                for (auto frame = muxer_->poll(); frame != core::draw_frame::empty(); frame = muxer_->poll())
-                       frame_buffer_.push(std::make_pair(frame, file_frame_number));
+                       if (frame != core::draw_frame::empty())
+                               frame_buffer_.push(std::make_pair(frame, file_frame_number));
        }
 
        bool audio_only() const