]> git.sesse.net Git - casparcg/commitdiff
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/trunk@1922...
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Thu, 22 Dec 2011 08:26:39 +0000 (08:26 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Thu, 22 Dec 2011 08:26:39 +0000 (08:26 +0000)
core/producer/channel/channel_producer.cpp

index ae1c0c81721ee079b7f427ca67f63eb803e7c5d9..770b5a0efd0420bb7973075e542c440d66549656 100644 (file)
@@ -33,6 +33,7 @@
 #include "../../mixer/read_frame.h"\r
 \r
 #include <common/exception/exceptions.h>\r
+#include <common/memory/memcpy.h>\r
 \r
 #include <tbb/concurrent_queue.h>\r
 \r
@@ -40,10 +41,10 @@ namespace caspar { namespace core {
 \r
 class channel_consumer : public frame_consumer\r
 {      \r
-       tbb::concurrent_bounded_queue<std::shared_ptr<read_frame>> frame_buffer_;\r
-       core::video_format_desc format_desc_;\r
-       int                                             channel_index_;\r
-       tbb::atomic<bool>               is_running_;\r
+       tbb::concurrent_bounded_queue<std::shared_ptr<read_frame>>      frame_buffer_;\r
+       core::video_format_desc                                                                         format_desc_;\r
+       int                                                                                                                     channel_index_;\r
+       tbb::atomic<bool>                                                                                       is_running_;\r
 \r
 public:\r
        channel_consumer() \r
@@ -68,7 +69,7 @@ public:
        virtual void initialize(const core::video_format_desc& format_desc, int channel_index) override\r
        {\r
                format_desc_    = format_desc;\r
-               channel_index_ = channel_index;\r
+               channel_index_  = channel_index;\r
        }\r
 \r
        virtual std::wstring print() const override\r
@@ -168,17 +169,17 @@ public:
                frame_number_++;\r
                \r
                core::pixel_format_desc desc;\r
-               bool double_speed = std::abs(frame_factory_->get_video_format_desc().fps / 2.0 - format_desc.fps) < 0.01;               \r
-               bool half_speed = std::abs(format_desc.fps / 2.0 - frame_factory_->get_video_format_desc().fps) < 0.01;\r
+               bool double_speed       = std::abs(frame_factory_->get_video_format_desc().fps / 2.0 - format_desc.fps) < 0.01;         \r
+               bool half_speed         = std::abs(format_desc.fps / 2.0 - frame_factory_->get_video_format_desc().fps) < 0.01;\r
 \r
-               if(half_speed && frame_number_ % 2 == 0)\r
+               if(half_speed && frame_number_ % 2 == 0) // Skip frame\r
                        return receive(0);\r
 \r
                desc.pix_fmt = core::pixel_format::bgra;\r
                desc.planes.push_back(core::pixel_format_desc::plane(format_desc.width, format_desc.height, 4));\r
                auto frame = frame_factory_->create_frame(this, desc);\r
 \r
-               memcpy(frame->image_data().begin(), read_frame->image_data().begin(), read_frame->image_data().size());\r
+               fast_memcpy(frame->image_data().begin(), read_frame->image_data().begin(), read_frame->image_data().size());\r
                frame->commit();\r
 \r
                frame_buffer_.push(frame);      \r
@@ -199,7 +200,7 @@ public:
                return L"channel[]";\r
        }\r
 \r
-       boost::property_tree::wptree info() const override\r
+       virtual boost::property_tree::wptree info() const override\r
        {\r
                boost::property_tree::wptree info;\r
                info.add(L"type", L"channel-producer");\r