]> git.sesse.net Git - casparcg/commitdiff
iVGA: Only provide sync to channel while connected, to prevent channel ticking too...
authorHelge Norberg <helge.norberg@gmail.com>
Mon, 28 Oct 2013 16:29:50 +0000 (17:29 +0100)
committerHelge Norberg <helge.norberg@gmail.com>
Mon, 28 Oct 2013 16:29:50 +0000 (17:29 +0100)
CHANGES.txt
modules/newtek/consumer/newtek_ivga_consumer.cpp

index c3f12d9c825b5b8e7e5f6164b66711ab68f82d9d..95b41b3732a9df5657dd9c86e2ca8ece288e445e 100644 (file)
@@ -5,10 +5,13 @@ CasparCG 2.0.6 Stable (as compared to 2.0.4 Stable)
 \r
 General\r
 -------\r
-  o Allow for the server to work without Processing.AirSend.x86.dll to prevent a\r
-    possible GPL violation. It is available as a separate optional download.\r
-  o Fixed bug during deinterlace-bob-reinterlace where output fields were offset\r
-    by one field in relation to input fields.\r
+  o iVGA: Allow for the server to work without Processing.AirSend.x86.dll to\r
+    prevent a possible GPL violation. It is available as a separate optional\r
+    download.\r
+  o iVGA: Only provide sync to channel while connected, to prevent channel\r
+    ticking too fast.\r
+  o FFmpeg: Fixed bug during deinterlace-bob-reinterlace where output fields\r
+    were offset by one field in relation to input fields.\r
   o Frontend: Only writes elements to casparcg.config which overrides a default\r
     value to keep the file as compact as possible.\r
   o Version bump to keep up with CasparCG Client version.\r
index b641fc1a5859cae20c2c56bf5e6150c34a2ba05e..c05aeb402b1a9333968e676df28cee4056c5521f 100644 (file)
@@ -33,6 +33,8 @@
 
 #include <boost/algorithm/string.hpp>
 
+#include <tbb/atomic.h>
+
 #include "../util/air_send.h"
 
 namespace caspar { namespace newtek {
@@ -43,6 +45,7 @@ struct newtek_ivga_consumer : public core::frame_consumer
        core::video_format_desc format_desc_;
        core::channel_layout    channel_layout_;
        executor                                executor_;
+       tbb::atomic<bool>               connected_;
 
 public:
 
@@ -52,6 +55,8 @@ public:
        {
                if (!airsend::is_available())
                        BOOST_THROW_EXCEPTION(caspar_exception() << msg_info(narrow(airsend::dll_name()) + " not available"));
+
+               connected_ = false;
        }
        
        ~newtek_ivga_consumer()
@@ -123,7 +128,7 @@ public:
 
                        // VIDEO
 
-                       airsend::add_frame_bgra(air_send_.get(), frame->image_data().begin());
+                       connected_ = airsend::add_frame_bgra(air_send_.get(), frame->image_data().begin());
                        
                        return true;
                });
@@ -155,6 +160,11 @@ public:
        {
                return 0;
        }
+
+       virtual bool has_synchronization_clock() const override
+       {
+               return connected_;
+       }
 };     
 
 safe_ptr<core::frame_consumer> create_ivga_consumer(const core::parameters& params)