\r
#include <core/producer/frame/basic_frame.h>\r
\r
-#include <tbb/parallel_invoke.h>\r
-\r
namespace caspar { namespace core { \r
\r
struct separated_producer : public frame_producer\r
\r
virtual safe_ptr<basic_frame> receive(int hints)\r
{\r
- tbb::parallel_invoke\r
- (\r
- [&]\r
- {\r
- if(fill_ == core::basic_frame::late())\r
- fill_ = receive_and_follow(fill_producer_, hints);\r
- },\r
- [&]\r
- {\r
- if(key_ == core::basic_frame::late())\r
- key_ = receive_and_follow(key_producer_, hints | ALPHA_HINT);\r
- }\r
- );\r
+ if(fill_ == core::basic_frame::late())\r
+ fill_ = receive_and_follow(fill_producer_, hints);\r
+ \r
+ if(key_ == core::basic_frame::late())\r
+ key_ = receive_and_follow(key_producer_, hints | ALPHA_HINT);\r
\r
if(fill_ == basic_frame::eof() || key_ == basic_frame::eof())\r
return basic_frame::eof();\r
#include <core/producer/frame/image_transform.h>\r
#include <core/producer/frame/audio_transform.h>\r
\r
-#include <tbb/parallel_invoke.h>\r
-\r
namespace caspar { namespace core { \r
\r
struct transition_producer : public frame_producer\r
if(current_frame_++ >= info_.duration)\r
return basic_frame::eof();\r
\r
- auto dest = core::basic_frame::empty();\r
- auto source = core::basic_frame::empty();\r
-\r
- tbb::parallel_invoke\r
- (\r
- [&]\r
- {\r
- dest = receive_and_follow(dest_producer_, hints);\r
- if(dest == core::basic_frame::late())\r
- dest = dest_producer_->last_frame();\r
- },\r
- [&]\r
- {\r
- source = receive_and_follow(source_producer_, hints);\r
- if(source == core::basic_frame::late())\r
- source = source_producer_->last_frame();\r
- }\r
- );\r
+ auto dest = receive_and_follow(dest_producer_, hints);\r
+ if(dest == core::basic_frame::late())\r
+ dest = dest_producer_->last_frame();\r
+\r
+ auto source = receive_and_follow(source_producer_, hints);\r
+ if(source == core::basic_frame::late())\r
+ source = source_producer_->last_frame();\r
\r
return last_frame_ = compose(dest, source);\r
}\r