]> git.sesse.net Git - casparcg/commitdiff
2.0: ffmpeg_input: Fixed a bug where video with no audio would freeze after ~50 loops.
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Mon, 13 Jun 2011 09:02:50 +0000 (09:02 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Mon, 13 Jun 2011 09:02:50 +0000 (09:02 +0000)
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches/2.0.0.2@881 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d

modules/ffmpeg/producer/input.cpp
shell/casparcg.config

index 5d7cc3c7098a433852733e413e2540855ce24b9c..f3ba6ca5a1e07244f4e566c571982cc21ee2436d 100644 (file)
@@ -102,6 +102,9 @@ public:
                if(pkt && pkt->stream_index != index_)\r
                        return;\r
 \r
+               if(!ctx_)\r
+                       return;\r
+\r
                if(pkt)\r
                        av_dup_packet(pkt.get());\r
 \r
@@ -143,11 +146,7 @@ public:
                , filename_(filename)\r
                , executor_(print())\r
                , start_(std::max(start, 0))\r
-       {               \r
-               graph_->set_color("audio-input-buffer", diagnostics::color(0.5f, 1.0f, 0.2f));\r
-               graph_->set_color("video-input-buffer", diagnostics::color(0.2f, 0.5f, 1.0f));\r
-               graph_->set_color("seek", diagnostics::color(0.5f, 1.0f, 0.5f));        \r
-               \r
+       {                               \r
                int errn;\r
 \r
                AVFormatContext* weak_format_context_ = nullptr;\r
@@ -199,7 +198,15 @@ public:
 \r
                for(size_t n = 0; n < 32; ++n) // Read some packets for pre-rolling.\r
                        read_next_packet();\r
-                                                       \r
+                                               \r
+               if(audio_stream_)\r
+                       graph_->set_color("audio-input-buffer", diagnostics::color(0.5f, 1.0f, 0.2f));\r
+               \r
+               if(video_stream_)\r
+                       graph_->set_color("video-input-buffer", diagnostics::color(0.2f, 0.5f, 1.0f));\r
+               \r
+               graph_->set_color("seek", diagnostics::color(0.5f, 1.0f, 0.5f));        \r
+\r
                executor_.begin_invoke([this]{read_file();});\r
                CASPAR_LOG(info) << print() << " Started.";\r
        }\r
@@ -293,10 +300,12 @@ private:
                        {\r
                                video_stream_.push(read_packet);\r
                                audio_stream_.push(read_packet);\r
-                       }\r
-                                               \r
-                       graph_->update_value("video-input-buffer", static_cast<float>(video_stream_.size())/static_cast<float>(PACKET_BUFFER_COUNT));           \r
-                       graph_->update_value("audio-input-buffer", static_cast<float>(audio_stream_.size())/static_cast<float>(PACKET_BUFFER_COUNT));           \r
+\r
+                               if(video_stream_)\r
+                                       graph_->update_value("video-input-buffer", static_cast<float>(video_stream_.size())/static_cast<float>(PACKET_BUFFER_COUNT));           \r
+                               if(audio_stream_)\r
+                                       graph_->update_value("audio-input-buffer", static_cast<float>(audio_stream_.size())/static_cast<float>(PACKET_BUFFER_COUNT));   \r
+                       }                                                       \r
                }\r
                catch(...)\r
                {\r
index 8851713ead3cfc3450acdc1149968e134020087f..e510cd2774b0959f546ca32baa1d6c6b4bac8a1e 100644 (file)
@@ -15,6 +15,7 @@
       <video-mode>PAL</video-mode>\r
       <consumers>\r
         <bluefish>\r
+          <embedded-audio>true</embedded-audio>\r
           <device>1</device>                      \r
         </bluefish>\r
       </consumers>\r