5 #include <core/producer/color/color_producer.h>
\r
6 #include <core/producer/ffmpeg/ffmpeg_producer.h>
\r
7 #include <core/producer/flash/cg_producer.h>
\r
8 #include <core/producer/image/image_producer.h>
\r
9 #include <core/producer/decklink/decklink_producer.h>
\r
10 #include <core/producer/silverlight/silverlight_producer.h>
\r
12 #include <core/consumer/bluefish/bluefish_consumer.h>
\r
13 #include <core/consumer/decklink/decklink_consumer.h>
\r
14 #include <core/consumer/ogl/ogl_consumer.h>
\r
15 #include <core/consumer/oal/oal_consumer.h>
\r
16 #include <core/consumer/ffmpeg/ffmpeg_consumer.h>
\r
17 //#include "../producer/image/image_scroll_producer.h"
\r
19 #include <common/exception/exceptions.h>
\r
21 #include <boost/assign.hpp>
\r
22 #include <boost/filesystem.hpp>
\r
24 using namespace boost::assign;
\r
26 namespace caspar { namespace protocol {
\r
28 using namespace core;
\r
30 safe_ptr<core::frame_producer> create_producer(const std::vector<std::wstring>& params)
\r
32 typedef std::function<safe_ptr<core::frame_producer>(const std::vector<std::wstring>&)> factory_t;
\r
34 const auto factories = list_of<factory_t>
\r
35 (&core::flash::create_ct_producer)
\r
36 // (&image::create_image_scroll_producer)
\r
37 (&core::ffmpeg::create_ffmpeg_producer)
\r
38 (&core::image::create_image_producer)
\r
39 (&core::create_decklink_producer)
\r
40 (&core::create_color_producer)
\r
41 //(&core::create_silverlight_producer)
\r
45 BOOST_THROW_EXCEPTION(invalid_argument() << arg_name_info("params") << arg_value_info(""));
\r
47 auto producer = frame_producer::empty();
\r
48 std::any_of(factories.begin(), factories.end(), [&](const factory_t& factory) -> bool
\r
52 producer = factory(params);
\r
56 CASPAR_LOG_CURRENT_EXCEPTION();
\r
58 return producer != frame_producer::empty();
\r
64 safe_ptr<core::frame_consumer> create_consumer(const std::vector<std::wstring>& params)
\r
66 typedef std::function<safe_ptr<core::frame_consumer>(const std::vector<std::wstring>&)> factory_t;
\r
68 const auto factories = list_of<factory_t>
\r
69 (&core::create_bluefish_consumer)
\r
70 (&core::create_decklink_consumer)
\r
71 (&core::create_oal_consumer)
\r
72 (&core::create_ogl_consumer)
\r
73 (&core::create_ffmpeg_consumer);
\r
76 BOOST_THROW_EXCEPTION(invalid_argument() << arg_name_info("params") << arg_value_info(""));
\r
78 auto consumer = frame_consumer::empty();
\r
79 std::any_of(factories.begin(), factories.end(), [&](const factory_t& factory) -> bool
\r
83 consumer = factory(params);
\r
87 CASPAR_LOG_CURRENT_EXCEPTION();
\r
89 return consumer != frame_consumer::empty();
\r