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/screen/screen_producer.h>
\r
11 #include <core/producer/silverlight/silverlight_producer.h>
\r
13 #include <core/consumer/bluefish/bluefish_consumer.h>
\r
14 #include <core/consumer/decklink/decklink_consumer.h>
\r
15 #include <core/consumer/ogl/ogl_consumer.h>
\r
16 #include <core/consumer/oal/oal_consumer.h>
\r
17 #include <core/consumer/ffmpeg/ffmpeg_consumer.h>
\r
18 //#include "../producer/image/image_scroll_producer.h"
\r
20 #include <common/exception/exceptions.h>
\r
22 #include <boost/assign.hpp>
\r
23 #include <boost/filesystem.hpp>
\r
25 using namespace boost::assign;
\r
27 namespace caspar { namespace protocol {
\r
29 using namespace core;
\r
31 safe_ptr<core::frame_producer> create_producer(const std::vector<std::wstring>& params)
\r
33 typedef std::function<safe_ptr<core::frame_producer>(const std::vector<std::wstring>&)> factory_t;
\r
35 const auto factories = list_of<factory_t>
\r
36 (&core::flash::create_ct_producer)
\r
37 // (&image::create_image_scroll_producer)
\r
38 (&core::ffmpeg::create_ffmpeg_producer)
\r
39 (&core::image::create_image_producer)
\r
40 (&core::create_decklink_producer)
\r
41 (&core::create_color_producer)
\r
42 (&core::create_screen_producer)
\r
43 (&core::create_silverlight_producer);
\r
46 BOOST_THROW_EXCEPTION(invalid_argument() << arg_name_info("params") << arg_value_info(""));
\r
48 auto producer = frame_producer::empty();
\r
49 std::any_of(factories.begin(), factories.end(), [&](const factory_t& factory) -> bool
\r
53 producer = factory(params);
\r
57 CASPAR_LOG_CURRENT_EXCEPTION();
\r
59 return producer != frame_producer::empty();
\r
65 safe_ptr<core::frame_consumer> create_consumer(const std::vector<std::wstring>& params)
\r
67 typedef std::function<safe_ptr<core::frame_consumer>(const std::vector<std::wstring>&)> factory_t;
\r
69 const auto factories = list_of<factory_t>
\r
70 (&core::create_bluefish_consumer)
\r
71 (&core::create_decklink_consumer)
\r
72 (&core::create_oal_consumer)
\r
73 (&core::create_ogl_consumer)
\r
74 (&core::create_ffmpeg_consumer);
\r
77 BOOST_THROW_EXCEPTION(invalid_argument() << arg_name_info("params") << arg_value_info(""));
\r
79 auto consumer = frame_consumer::empty();
\r
80 std::any_of(factories.begin(), factories.end(), [&](const factory_t& factory) -> bool
\r
84 consumer = factory(params);
\r
88 CASPAR_LOG_CURRENT_EXCEPTION();
\r
90 return consumer != frame_consumer::empty();
\r