#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
\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
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
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
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