]> git.sesse.net Git - casparcg/commitdiff
2.0.0.2
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Mon, 6 Jun 2011 16:22:17 +0000 (16:22 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Mon, 6 Jun 2011 16:22:17 +0000 (16:22 +0000)
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches/2.0.0.2@843 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d

core/consumer/frame_consumer_device.cpp
core/mixer/frame_mixer_device.cpp
core/producer/frame_producer_device.cpp
core/video_channel.cpp
modules/decklink/interop/DeckLinkAPI_h.h
modules/decklink/interop/DeckLinkAPI_i.c
modules/ogl/consumer/ogl_consumer.cpp
shell/caspar.config
shell/server.cpp

index 59cbce4110d1ab16c06a9400036ae7724972bd06..400de47cfccd43264e01b04613f3626e37beaeae 100644 (file)
 #include "../mixer/read_frame.h"\r
 \r
 #include <common/concurrency/executor.h>\r
-#include <common/diagnostics/graph.h>\r
 #include <common/utility/assert.h>\r
 #include <common/utility/timer.h>\r
 #include <common/memory/memshfl.h>\r
 \r
 #include <boost/circular_buffer.hpp>\r
-#include <boost/timer.hpp>\r
 \r
 namespace caspar { namespace core {\r
        \r
@@ -52,20 +50,11 @@ struct frame_consumer_device::implementation
        typedef std::map<int, safe_ptr<frame_consumer>>::value_type layer_t;\r
        \r
        high_prec_timer timer_;\r
-       \r
-       safe_ptr<diagnostics::graph> diag_;\r
-\r
-       boost::timer frame_timer_;\r
-       boost::timer tick_timer_;\r
                \r
 public:\r
        implementation(video_channel_context& video_channel) \r
                : channel_(video_channel)\r
-               , diag_(diagnostics::create_graph(std::string("frame_consumer_device")))\r
        {               \r
-               diag_->add_guide("frame-time", 0.5f);   \r
-               diag_->set_color("frame-time", diagnostics::color(1.0f, 0.0f, 0.0f));\r
-               diag_->set_color("tick-time", diagnostics::color(0.1f, 0.7f, 0.8f));\r
        }\r
 \r
        std::pair<size_t, size_t> buffer_depth()\r
@@ -106,9 +95,7 @@ public:
        {               \r
                if(!has_synchronization_clock())\r
                        timer_.tick(1.0/channel_.get_format_desc().fps);\r
-\r
-               frame_timer_.restart();\r
-                               \r
+                                               \r
                auto fill = frame;\r
                auto key = get_key_frame(frame);\r
 \r
@@ -122,11 +109,6 @@ public:
                        if(static_cast<size_t>(frame->image_data().size()) == consumer->get_video_format_desc().size)\r
                                consumer->send(frame);\r
                });\r
-\r
-               diag_->update_value("frame-time", frame_timer_.elapsed()*channel_.get_format_desc().fps*0.5);\r
-                       \r
-               diag_->update_value("tick-time", tick_timer_.elapsed()*channel_.get_format_desc().fps*0.5);\r
-               tick_timer_.restart();\r
        }\r
 \r
 private:\r
index d9c03d61da4c435cc829667633296b5c0c2451d4..e73b7f87e38287104f0c3bfb0418499b4696a10f 100644 (file)
@@ -31,7 +31,6 @@
 \r
 #include <common/exception/exceptions.h>\r
 #include <common/concurrency/executor.h>\r
-#include <common/diagnostics/graph.h>\r
 #include <common/utility/tweener.h>\r
 \r
 \r
@@ -47,7 +46,6 @@
 \r
 #include <boost/fusion/container/map.hpp>\r
 #include <boost/fusion/include/at_key.hpp>\r
-#include <boost/timer.hpp>\r
 \r
 #include <unordered_map>\r
 \r
@@ -88,11 +86,7 @@ public:
 struct frame_mixer_device::implementation : boost::noncopyable\r
 {              \r
        video_channel_context& channel_;\r
-\r
-       safe_ptr<diagnostics::graph> diag_;\r
-       boost::timer frame_timer_;\r
-       boost::timer tick_timer_;\r
-\r
+       \r
        audio_mixer     audio_mixer_;\r
        image_mixer image_mixer_;\r
        \r
@@ -107,28 +101,16 @@ struct frame_mixer_device::implementation : boost::noncopyable
 public:\r
        implementation(video_channel_context& video_channel) \r
                : channel_(video_channel)\r
-               , diag_(diagnostics::create_graph(narrow(print())))\r
                , image_mixer_(channel_)\r
-       {\r
-               diag_->add_guide("frame-time", 0.5f);   \r
-               diag_->set_color("frame-time", diagnostics::color(1.0f, 0.0f, 0.0f));\r
-               diag_->set_color("tick-time", diagnostics::color(0.1f, 0.7f, 0.8f));\r
-       \r
+       {       \r
                CASPAR_LOG(info) << print() << L" Successfully initialized.";   \r
        }\r
                        \r
        safe_ptr<read_frame> execute(const std::map<int, safe_ptr<core::basic_frame>>& frames)\r
        {                               \r
-               frame_timer_.restart();\r
-\r
                auto image = mix_image(frames);\r
                auto audio = mix_audio(frames);\r
                        \r
-               diag_->update_value("frame-time", frame_timer_.elapsed()*channel_.get_format_desc().fps*0.5);\r
-               \r
-               diag_->update_value("tick-time", tick_timer_.elapsed()*channel_.get_format_desc().fps*0.5);\r
-               tick_timer_.restart();\r
-\r
                return make_safe<read_frame>(std::move(image), std::move(audio));\r
        }\r
                        \r
index 4028ddcf928aeddab940a96c4c98c07c2741d491..8833456974ee5b62118c523f309d78f649f71f40 100644 (file)
 #include <core/producer/frame/basic_frame.h>\r
 #include <core/producer/frame/frame_factory.h>\r
 \r
-#include <common/diagnostics/graph.h>\r
 #include <common/concurrency/executor.h>\r
 \r
-#include <boost/timer.hpp>\r
 #include <boost/range/algorithm.hpp>\r
 \r
 #include <tbb/parallel_for.h>\r
@@ -77,27 +75,16 @@ struct frame_producer_device::implementation : boost::noncopyable
 {              \r
        std::map<int, layer>                                            layers_;                \r
        typedef std::map<int, layer>::value_type        layer_t;\r
-       \r
-       safe_ptr<diagnostics::graph>                            diag_;\r
-       boost::timer                                                            frame_timer_;\r
-       boost::timer                                                            tick_timer_;\r
-       boost::timer                                                            output_timer_;\r
-       \r
+               \r
        video_channel_context&                                          channel_;\r
 public:\r
        implementation(video_channel_context& video_channel)  \r
-               : diag_(diagnostics::create_graph(std::string("frame_producer_device")))\r
-               , channel_(video_channel)\r
+               : channel_(video_channel)\r
        {\r
-               diag_->add_guide("frame-time", 0.5f);   \r
-               diag_->set_color("frame-time", diagnostics::color(1.0f, 0.0f, 0.0f));\r
-               diag_->set_color("tick-time", diagnostics::color(0.1f, 0.7f, 0.8f));    \r
        }\r
                                                \r
        std::map<int, safe_ptr<basic_frame>> execute()\r
-       {       \r
-               frame_timer_.restart();\r
-               \r
+       {                       \r
                std::map<int, safe_ptr<basic_frame>> frames;\r
 \r
                // Allocate placeholders.\r
@@ -110,11 +97,6 @@ public:
                        frames[layer.first] = layer.second.receive();\r
                });\r
                \r
-               diag_->update_value("frame-time", frame_timer_.elapsed()*channel_.get_format_desc().fps*0.5);\r
-\r
-               diag_->update_value("tick-time", tick_timer_.elapsed()*channel_.get_format_desc().fps*0.5);\r
-               tick_timer_.restart();\r
-\r
                return frames;\r
        }\r
 \r
index eeb0d4323253c91176e53f974447b035b77e2faf..e61ac571d6c1ff46b829a2d10968e44686e5492f 100644 (file)
 #include "producer/layer.h"\r
 \r
 #include <common/concurrency/executor.h>\r
+#include <common/diagnostics/graph.h>\r
 \r
 #include <boost/range/algorithm_ext/erase.hpp>\r
+#include <boost/timer.hpp>\r
 \r
 #ifdef _MSC_VER\r
 #pragma warning(disable : 4355)\r
@@ -44,14 +46,27 @@ struct video_channel::implementation : boost::noncopyable
        safe_ptr<frame_consumer_device> consumer_;\r
        safe_ptr<frame_mixer_device>    mixer_;\r
        safe_ptr<frame_producer_device> producer_;\r
+\r
+       safe_ptr<diagnostics::graph>    diag_;\r
+       boost::timer                                    frame_timer_;\r
+       boost::timer                                    tick_timer_;\r
        \r
 public:\r
        implementation(int index, const video_format_desc& format_desc, ogl_device& ogl)  \r
                : context_(index, ogl, format_desc)\r
+               , diag_(diagnostics::create_graph(narrow(print())))\r
                , consumer_(new frame_consumer_device(context_))\r
                , mixer_(new frame_mixer_device(context_))\r
                , producer_(new frame_producer_device(context_))        \r
        {\r
+               diag_->add_guide("produce-time", 0.5f); \r
+               diag_->set_color("produce-time", diagnostics::color(1.0f, 0.0f, 0.0f));\r
+               diag_->add_guide("mix-time", 0.5f);     \r
+               diag_->set_color("mix-time", diagnostics::color(1.0f, 0.0f, 1.0f));\r
+               diag_->add_guide("consume-time", 0.5f); \r
+               diag_->set_color("consume-time", diagnostics::color(1.0f, 1.0f, 0.0f));\r
+               diag_->set_color("tick-time", diagnostics::color(0.1f, 0.7f, 0.8f));    \r
+\r
                CASPAR_LOG(info) << print() << " Successfully Initialized.";\r
                context_.execution().begin_invoke([this]{tick();});\r
        }\r
@@ -67,9 +82,34 @@ public:
 \r
        void tick()\r
        {\r
+               // Produce\r
+\r
+               frame_timer_.restart();\r
+\r
                auto simple_frames = producer_->execute();\r
+\r
+               diag_->update_value("produce-time", frame_timer_.elapsed()*context_.get_format_desc().fps*0.5);\r
+               \r
+               // Mix\r
+\r
+               frame_timer_.restart();\r
+\r
                auto finished_frame = mixer_->execute(simple_frames);\r
+               \r
+               diag_->update_value("mix-time", frame_timer_.elapsed()*context_.get_format_desc().fps*0.5);\r
+               \r
+               // Consume\r
+\r
+               frame_timer_.restart();\r
+\r
                consumer_->execute(finished_frame);\r
+               \r
+               diag_->update_value("consume-time", frame_timer_.elapsed()*context_.get_format_desc().fps*0.5);\r
+               \r
+               // Next\r
+\r
+               diag_->update_value("tick-time", tick_timer_.elapsed()*context_.get_format_desc().fps*0.5);\r
+               tick_timer_.restart();\r
 \r
                context_.execution().begin_invoke([this]{tick();});\r
        }\r
index a38b07c5274bdff7429230ad10b1fa20c73511b7..b89307228e3e13f80a5a3eda3cc068690308cbc7 100644 (file)
@@ -4,7 +4,7 @@
 \r
 \r
  /* File created by MIDL compiler version 7.00.0555 */\r
-/* at Wed May 25 17:16:09 2011\r
+/* at Mon Jun 06 18:19:11 2011\r
  */\r
 /* Compiler settings for interop\DeckLinkAPI.idl:\r
     Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555 \r
index 1d3d7728a2c11ff3f9254c4b2236a3f28541b020..43724f2cd7266c2068388709bdec0ea88fad461e 100644 (file)
@@ -6,7 +6,7 @@
 \r
 \r
  /* File created by MIDL compiler version 7.00.0555 */\r
-/* at Wed May 25 17:16:09 2011\r
+/* at Mon Jun 06 18:19:11 2011\r
  */\r
 /* Compiler settings for interop\DeckLinkAPI.idl:\r
     Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555 \r
index cd360429097b7fa258ecebe393c8ec521c2e4f8d..62c7448cb45d20f3abec39375af060c68a101cf4 100644 (file)
@@ -349,7 +349,7 @@ public:
 \r
 safe_ptr<core::frame_consumer> create_ogl_consumer(const std::vector<std::wstring>& params)\r
 {\r
-       if(params.size() < 1 || params[0] != L"OGL")\r
+       if(params.size() < 1 || params[0] != L"SCREEN")\r
                return core::frame_consumer::empty();\r
        \r
        size_t screen_index = 0;\r
index c3e86a9e1a0fd09f080c5e7901e9d555b999c472..6f12865856b32d1d9cde5219e6b4d77e51bd20a3 100644 (file)
@@ -1,51 +1,29 @@
 <?xml version="1.0" encoding="utf-8"?>\r
 <configuration>\r
   <paths>\r
-    <media-path>L:\\Casparcg\\_media\\</media-path>\r
-    <log-path>L:\\Casparcg\\_log\\</log-path>\r
-    <data-path>L:\\Casparcg\\_data\\</data-path>\r
-    <template-path>L:\\Casparcg\\_templates\\</template-path>\r
+    <media-path>C:\\Casparcg\\_media\\</media-path>\r
+    <log-path>C:\\Casparcg\\_log\\</log-path>\r
+    <data-path>C:\\Casparcg\\_data\\</data-path>\r
+    <template-path>C:\\Casparcg\\_templates\\</template-path>\r
     <template-host>cg.fth.18</template-host>\r
   </paths>\r
   <diagnostics>\r
-    <graphs>true</graphs> <!-- [true/false] Displays diagnostics window with real-time graphs. -->\r
+    <graphs>true</graphs>\r
   </diagnostics>\r
   <channels>\r
     <channel>\r
-      <!--\r
-        Fully or partially supported video-formats:\r
-          PAL (full support)\r
-          NTSC\r
-          576p2500\r
-          720p2500\r
-          720p5000\r
-          720p5994\r
-          720p6000\r
-          1080p2398\r
-          1080p2400\r
-          1080i5000 (full support)\r
-          1080i5994\r
-          1080i6000\r
-          1080p2500\r
-          1080p2997\r
-          1080p3000\r
-          1080p5000\r
-      -->\r
-      <videomode>1080i5000</videomode>\r
+      <video-mode>1080i5000</video-mode>\r
       <consumers>\r
-        <decklink>\r
+        <screen>\r
+          <windowed>true</windowed>\r
+        </screen>\r
+        <!--<decklink>\r
           <device>1</device>                    \r
           <embedded-audio>true</embedded-audio> \r
           <low-latency>true</low-latency>      \r
           <external-key>true</external-key>     \r
           <key-only>false</key-only>            \r
-        </decklink>\r
-        <!--<audio>\r
-        </audio>-->\r
-        <!--<bluefish>\r
-          <device>1</device>\r
-          <embedded-audio>true</embedded-audio>\r
-        </bluefish>-->\r
+        </decklink>-->\r
       </consumers>\r
     </channel>\r
 </channels>\r
       <protocol>AMCP</protocol>\r
     </tcp>\r
   </controllers>\r
-</configuration>
\ No newline at end of file
+</configuration>\r
+\r
+\r
+<!--\r
+\r
+<channel>\r
+  <video-mode> PAL [PAL|NTSC|1080i5000|576p2500720p2500|720p5000|720p5994|720p6000|1080p2398|1080p2400|1080i5000|1080i5994|1080i6000|1080p2500|1080p2997|1080p3000|1080p5000] </video-mode>\r
+    <consumers>\r
+      <decklink>\r
+        <device>[1..]</device>\r
+        <embedded-audio>false [true|false]</embedded-audio>\r
+        <low-latency>false [true|false]</low-latency>\r
+        <external-key>true [true|false]</external-key>\r
+        <key-only>false [true|false]</key-only>\r
+      </decklink>\r
+      <bluefish>\r
+        <device>[1..]</device>\r
+        <embedded-audio>false [true|false]</embedded-audio>\r
+        <key-only>false [true|false]</key-only>\r
+      </bluefish>\r
+      <audio></audio>\r
+      <screen>\r
+        <device>[0..]</device>\r
+        <stretch>fill [none|fill|uniform|uniform_to_fill]</stretch>\r
+        <windowed>false [true|false]</windowed>\r
+        <key-only>false [true|false]</key-only>\r
+      </screen>\r
+    </consumers>\r
+</channel>\r
+  \r
+-->  \r
+  \r
+\r
index 249ae72e33ec547332795f2feba6a2aaa544dd21..bbade5ce39ef39b1f7a1c47af087a03c371d07a5 100644 (file)
@@ -104,7 +104,7 @@ struct server::implementation : boost::noncopyable
                                try\r
                                {\r
                                        const std::string name = xml_consumer.first;\r
-                                       if(name == "ogl")\r
+                                       if(name == "screen")\r
                                                channels_.back()->consumer()->add(index++, create_ogl_consumer(xml_consumer.second));                                   \r
                                        else if(name == "bluefish")                                     \r
                                                channels_.back()->consumer()->add(index++, create_bluefish_consumer(xml_consumer.second));                                      \r