<Filter Include="Source\producer\transition">\r
<UniqueIdentifier>{26bf9811-1954-46f5-86ce-ecdc26e6db16}</UniqueIdentifier>\r
</Filter>\r
- <Filter Include="Source\producer\flash">\r
- <UniqueIdentifier>{fc25232a-cab1-4c79-962a-b51dc51161fb}</UniqueIdentifier>\r
- </Filter>\r
- <Filter Include="Source\producer\flash\interop">\r
- <UniqueIdentifier>{f99e4727-2b1b-4009-a445-99b11b071e8e}</UniqueIdentifier>\r
- </Filter>\r
<Filter Include="Source\producer\image">\r
<UniqueIdentifier>{3d4314f3-8a39-44e3-a0c9-9b833bb8f809}</UniqueIdentifier>\r
</Filter>\r
<Filter Include="Source\producer\decklink">\r
<UniqueIdentifier>{3685fbd9-c2ff-495c-9864-6b0c5778d852}</UniqueIdentifier>\r
</Filter>\r
+ <Filter Include="Source\producer\flash">\r
+ <UniqueIdentifier>{fc25232a-cab1-4c79-962a-b51dc51161fb}</UniqueIdentifier>\r
+ </Filter>\r
+ <Filter Include="Source\producer\flash\interop">\r
+ <UniqueIdentifier>{f99e4727-2b1b-4009-a445-99b11b071e8e}</UniqueIdentifier>\r
+ </Filter>\r
</ItemGroup>\r
<ItemGroup>\r
<ClInclude Include="consumer\decklink\DeckLinkAPI_h.h">\r
CComQIPtr<IDeckLinkInput> input_;\r
\r
tbb::atomic<ULONG> ref_count_;\r
- size_t width_;\r
- size_t height_;\r
std::shared_ptr<frame_processor_device> frame_processor_;\r
\r
tbb::concurrent_bounded_queue<safe_ptr<draw_frame>> frame_buffer_;\r
, tail_(draw_frame::empty())\r
{\r
ref_count_ = 1;\r
- frame_buffer_.set_capacity(8);\r
+ frame_buffer_.set_capacity(4);\r
\r
CComPtr<IDeckLinkIterator> pDecklinkIterator;\r
if(FAILED(pDecklinkIterator.CoCreateInstance(CLSID_CDeckLinkIterator)))\r
int frame_size = (format_desc_.width * 16 / 8) * format_desc_.height;\r
\r
// Convert to planar YUV422\r
- unsigned char* y = frame->image_data(0).begin();\r
+ unsigned char* y = frame->image_data(0).begin();\r
unsigned char* cb = frame->image_data(1).begin();\r
unsigned char* cr = frame->image_data(2).begin();\r
-\r
- for(int n = 0; n < frame_size; n += 4)\r
+ \r
+ tbb::parallel_for(tbb::blocked_range<size_t>(0, frame_size/4), \r
+ [&](const tbb::blocked_range<size_t>& r)\r
{\r
- *(cb++) = data[n+0];\r
- *(y++) = data[n+1];\r
- *(cr++) = data[n+2];\r
- *(y++) = data[n+3];\r
- }\r
+ for(auto n = r.begin(); n != r.end(); ++n)\r
+ {\r
+ cb[n] = data[n*4+0];\r
+ y [n*2+0] = data[n*4+1];\r
+ cr[n] = data[n*4+2];\r
+ y [n*2+1] = data[n*4+3];\r
+ }\r
+ });\r
\r
head_ = frame;\r
\r