]> 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>
Thu, 10 Mar 2011 08:31:02 +0000 (08:31 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Thu, 10 Mar 2011 08:31:02 +0000 (08:31 +0000)
common/concurrency/executor.h
common/diagnostics/graph.cpp
core/producer/frame_producer_device.cpp
core/producer/layer.cpp
modules/decklink/producer/decklink_producer.cpp
modules/ffmpeg/consumer/ffmpeg_consumer.cpp
modules/ffmpeg/producer/audio/audio_decoder.cpp
modules/ffmpeg/producer/input.cpp
modules/silverlight/producer/silverlight_producer.cpp
protocol/cii/CIIProtocolStrategy.cpp
shell/caspar.config

index da0e1d672f844a1f135e51432e0e1a23b20cfb41..9be56842112dabcf63e77350ae1cf4ac7085bbd0 100644 (file)
@@ -1,6 +1,7 @@
 #pragma once\r
 \r
 #include "../exception/win32_exception.h"\r
+#include "../utility/assert.h"\r
 #include "../log/log.h"\r
 \r
 #include <tbb/atomic.h>\r
@@ -49,7 +50,7 @@ class executor : boost::noncopyable
        tbb::concurrent_bounded_queue<std::function<void()>> execution_queue_;\r
 public:\r
                \r
-       explicit executor(const std::wstring& name = L"executor") : name_(narrow(name))\r
+       explicit executor(const std::wstring& name) : name_(narrow(name))\r
        {\r
                is_running_ = false;\r
        }\r
@@ -128,7 +129,7 @@ public:
                        catch(boost::task_already_started&){}\r
                        catch(...){CASPAR_LOG_CURRENT_EXCEPTION();}\r
                });\r
-\r
+                                       \r
                return std::move(future);               \r
        }\r
        \r
index e4da48ea6f481a791f6bcd5d98d98d99d433d357..928d7c24505359b92ac160e37c4bf96c74903b67 100644 (file)
@@ -56,7 +56,7 @@ public:
        }\r
                        \r
 private:\r
-       context()\r
+       context() : executor_(L"diagnostics")\r
        {\r
                executor_.start();\r
                executor_.begin_invoke([this]\r
index eafb4686d2634cb3c417978d957a92dc0a83c344..66a13fc682bb7946c003c1a5230cd9e96cd11690 100644 (file)
@@ -37,6 +37,7 @@ public:
        implementation(const printer& parent_printer, const safe_ptr<frame_factory>& factory)  \r
                : parent_printer_(parent_printer)\r
                , factory_(factory)\r
+               , executor_(print())\r
        {\r
                executor_.start();\r
        }\r
index b50d08a4dcdb177d580132bf405e771a2e8a8962..6966c6a3f5130f58ae7c97f847409875528e0d26 100644 (file)
@@ -35,7 +35,7 @@ public:
 \r
        void remove(safe_ptr<frame_producer>&& producer)\r
        {\r
-               CASPAR_VERIFY(producer.unique());\r
+               CASPAR_VERIFY(producer == frame_producer::empty() || producer.unique());\r
                executor_.begin_invoke(std::bind(&frame_producer_remover::do_remove, this, std::move(producer)));\r
        }\r
 };\r
index 5d13a07036c9bd5a2a1deac62dc485aa7af2ce7a..e3b9d6095386b29e3db8df12112db6d49445e1aa 100644 (file)
@@ -257,7 +257,8 @@ public:
 \r
        explicit decklink_producer(const core::video_format_desc& format_desc, size_t device_index)\r
                : format_desc_(format_desc) \r
-               , device_index_(device_index){}\r
+               , device_index_(device_index)\r
+               , executor_(print()){}\r
 \r
        ~decklink_producer()\r
        {       \r
index 755cb5725f5940a97487a109cb0afff734c76c04..61a65d82169e496cd129d77d06f3422cf812170f 100644 (file)
@@ -86,6 +86,7 @@ public:
                , img_convert_ctx_(nullptr)\r
                , video_outbuf_(1920*1080*4)\r
                , audio_outbuf_(48000)\r
+               , executor_(L"ffmpeg_consumer")\r
        {}\r
 \r
        ~implementation()\r
index 74ce106f772c4a35608c56b95cc3ecf2d7fa42d8..2ea119695a16f95aa8ab31c73f97381df33538b7 100644 (file)
@@ -53,16 +53,16 @@ public:
                                                \r
                current_chunk_.insert(current_chunk_.end(), audio_buffer_.data(), audio_buffer_.data() + written_bytes/2);\r
 \r
-               std::vector<std::vector<short>> chunks_;\r
+               std::vector<std::vector<short>> chunks;\r
                                \r
                const auto last = current_chunk_.end() - current_chunk_.size() % audio_frame_size_;\r
 \r
                for(auto it = current_chunk_.begin(); it != last; it += audio_frame_size_)              \r
-                       chunks_.push_back(std::vector<short>(it, it + audio_frame_size_));              \r
+                       chunks.push_back(std::vector<short>(it, it + audio_frame_size_));               \r
 \r
                current_chunk_.erase(current_chunk_.begin(), last);\r
                \r
-               return chunks_;\r
+               return chunks;\r
        }\r
 };\r
 \r
index 4b8ecc57d4db4b94448f7ba76d6d6d7f8018316f..212720321762b72b2c74bce82495ba5ddf41886f 100644 (file)
@@ -148,12 +148,12 @@ public:
                return std::shared_ptr<AVCodecContext>((*stream)->codec, avcodec_close);\r
        }\r
                \r
-       void read_file() // For every packet taken: read in a number of packets.\r
-       {                               \r
+       void read_file()\r
+       {                                       \r
                AVPacket tmp_packet;\r
                safe_ptr<AVPacket> read_packet(&tmp_packet, av_free_packet);    \r
 \r
-               if (av_read_frame(format_context_.get(), read_packet.get()) >= 0) // NOTE: read_packet is only valid until next call of av_safe_ptr<read_frame> or av_close_input_file\r
+               if (av_read_frame(format_context_.get(), read_packet.get()) >= 0) // NOTE: read_packet is only valid until next call of av_read_frame or av_close_input_file\r
                {\r
                        auto packet = std::make_shared<aligned_buffer>(read_packet->data, read_packet->data + read_packet->size);\r
                        if(read_packet->stream_index == video_s_index_)                 \r
@@ -164,10 +164,8 @@ public:
                else if(!loop_ || !seek_frame(0, AVSEEK_FLAG_BACKWARD)) // TODO: av_seek_frame does not work for all formats\r
                        executor_.stop();\r
                else\r
-                       graph_->add_tag("seek");\r
-\r
-               boost::this_thread::yield();\r
-                       \r
+                       graph_->add_tag("seek");                \r
+                                       \r
                graph_->update_value("input-buffer", static_cast<float>(video_packet_buffer_.size())/static_cast<float>(PACKET_BUFFER_COUNT));          \r
                \r
                executor_.begin_invoke([this]{read_file();});           \r
index ad212e8f62aa58391ebe016759aafb9a543a7386..03932c758b5e78c792ba6f0df05acd1eb1559eba 100644 (file)
@@ -143,7 +143,7 @@ struct silverlight_producer : public core::frame_producer
 \r
 public:\r
 \r
-       silverlight_producer()\r
+       silverlight_producer() : executor_(print())\r
        {}\r
        \r
        virtual void initialize(const safe_ptr<core::frame_factory>& frame_factory)\r
index 80560bdf08bda37917e171853173ffb7c339ac9e..3a417ee7d697d0691aea9c880e2355e72a056ddd 100644 (file)
@@ -41,7 +41,7 @@ using namespace core;
 const std::wstring CIIProtocolStrategy::MessageDelimiter = TEXT("\r\n");\r
 const TCHAR CIIProtocolStrategy::TokenDelimiter = TEXT('\\');\r
 \r
-CIIProtocolStrategy::CIIProtocolStrategy(const std::vector<safe_ptr<core::channel>>& channels) : pChannel_(channels.at(0))\r
+CIIProtocolStrategy::CIIProtocolStrategy(const std::vector<safe_ptr<core::channel>>& channels) : pChannel_(channels.at(0)), executor_(L"CIIProtocolStrategy")\r
 {\r
        executor_.start();\r
 }\r
index a6157f1abac8e6f93435bb204d9b019a8f531247..c5616dce5300470abfb176f3f6c2e0421671dcdf 100644 (file)
@@ -12,7 +12,7 @@
   </diagnostics>\r
   <channels>\r
     <channel>\r
-      <videomode>PAL</videomode>\r
+      <videomode>1080i5000</videomode>\r
       <consumers>\r
         <ogl>\r
           <device>1</device>\r