\r
#include "channel.h"\r
\r
+#include "video_format.h"\r
#include "consumer/frame_consumer_device.h"\r
#include "mixer/frame_mixer_device.h"\r
#include "producer/frame_producer_device.h"\r
#include <common/exception/exceptions.h>\r
#include <common/concurrency/executor.h>\r
#include <common/diagnostics/graph.h>\r
-#include <common/utility/assert.h>\r
-#include <common/utility/timer.h>\r
#include <common/utility/tweener.h>\r
\r
+#include <core/consumer/frame/read_frame.h>\r
+#include <core/producer/frame/write_frame.h>\r
+#include <core/producer/frame/frame_factory.h>\r
+#include <core/producer/frame/pixel_format.h>\r
#include <core/producer/frame/audio_transform.h>\r
#include <core/producer/frame/image_transform.h>\r
\r
*/\r
#pragma once\r
\r
-#include <core/consumer/frame/read_frame.h>\r
-#include <core/producer/frame/write_frame.h>\r
-#include <core/producer/frame/frame_factory.h>\r
-#include <core/producer/frame/pixel_format.h>\r
-\r
-#include "image/image_mixer.h"\r
-#include "audio/audio_mixer.h"\r
+#include "../producer/frame/pixel_format.h"\r
+#include "../producer/frame/frame_factory.h"\r
\r
#include <common/memory/safe_ptr.h>\r
\r
\r
#include <functional>\r
\r
-namespace caspar { namespace mixer {\r
+namespace caspar { \r
+\r
+namespace core {\r
+\r
+class read_frame;\r
+class write_frame;\r
+class basic_frame;\r
+class audio_transform;\r
+class image_transform;\r
+\r
+}\r
+\r
+namespace mixer {\r
\r
class frame_mixer_device : public core::frame_factory\r
{\r
\r
#include "color_producer.h"\r
\r
-#include <core/producer/frame/write_frame.h>\r
+#include "../frame/basic_frame.h"\r
+#include "../frame/write_frame.h"\r
\r
#include <sstream>\r
\r
#include "../StdAfx.h"\r
\r
#include "frame_producer.h"\r
+#include "frame/basic_frame.h"\r
+\r
#include "color/color_producer.h"\r
#include "separated/separated_producer.h"\r
\r
\r
std::vector<const producer_factory_t> g_factories;\r
\r
+const safe_ptr<frame_producer>& frame_producer::empty() // nothrow\r
+{\r
+ struct empty_frame_producer : public frame_producer\r
+ {\r
+ virtual safe_ptr<basic_frame> receive(){return basic_frame::empty();}\r
+ virtual void set_frame_factory(const safe_ptr<frame_factory>&){}\r
+ virtual std::wstring print() const { return L"empty";}\r
+ };\r
+ static safe_ptr<frame_producer> producer = make_safe<empty_frame_producer>();\r
+ return producer;\r
+} \r
+\r
safe_ptr<basic_frame> receive_and_follow(safe_ptr<frame_producer>& producer)\r
{ \r
if(producer == frame_producer::empty())\r
\r
#include <common/memory/safe_ptr.h>\r
\r
-#include "../producer/frame/basic_frame.h"\r
-#include "../producer/frame/frame_factory.h"\r
+#include "frame/frame_factory.h"\r
\r
#include <boost/noncopyable.hpp>\r
\r
#include <functional>\r
#include <string>\r
+#include <vector>\r
\r
namespace caspar { namespace core {\r
\r
+class basic_frame;\r
+\r
class frame_producer : boost::noncopyable\r
{\r
public:\r
virtual safe_ptr<frame_producer> get_following_producer() const {return frame_producer::empty();} // nothrow\r
virtual void set_leading_producer(const safe_ptr<frame_producer>&) {} // nothrow\r
\r
- static const safe_ptr<frame_producer>& empty() // nothrow\r
- {\r
- struct empty_frame_producer : public frame_producer\r
- {\r
- virtual safe_ptr<basic_frame> receive(){return basic_frame::empty();}\r
- virtual void set_frame_factory(const safe_ptr<frame_factory>&){}\r
- virtual std::wstring print() const { return L"empty";}\r
- };\r
- static safe_ptr<frame_producer> producer = make_safe<empty_frame_producer>();\r
- return producer;\r
- } \r
+ static const safe_ptr<frame_producer>& empty(); // nothrow\r
};\r
\r
safe_ptr<basic_frame> receive_and_follow(safe_ptr<frame_producer>& producer);\r
#include <boost/signals2.hpp>\r
#include <boost/thread/future.hpp>\r
\r
-#include <functional>\r
-\r
namespace caspar { namespace core {\r
\r
+struct video_format_desc;\r
+\r
////////////////////////////////////////////////////////////////////////////////////////////////////\r
/// \class frame_producer_device\r
///\r
public:\r
typedef boost::signals2::signal<void(const std::map<int, safe_ptr<basic_frame>>&)> output_t;\r
\r
- boost::signals2::connection connect(const output_t::slot_type& subscriber);\r
-\r
explicit frame_producer_device(const video_format_desc& format_desc);\r
frame_producer_device(frame_producer_device&& other);\r
+ \r
+ boost::signals2::connection connect(const output_t::slot_type& subscriber);\r
+\r
void swap(frame_producer_device& other);\r
\r
void load(int index, const safe_ptr<frame_producer>& producer, bool preview = false);\r
#pragma once\r
\r
#include "../frame_producer.h"\r
+#include "../../video_format.h"\r
\r
#include <common/utility/tweener.h>\r
\r
#include <common/concurrency/com_context.h>\r
#include <common/exception/exceptions.h>\r
#include <common/memory/memclr.h>\r
-#include <common/utility/timer.h>\r
\r
#include <core/producer/frame/frame_factory.h>\r
#include <core/producer/frame/write_frame.h>\r
\r
#include "video_decoder.h"\r
\r
-#include <common/memory/safe_ptr.h>\r
#include <common/memory/memcpy.h>\r
\r
#include <core/video_format.h>\r
\r
#include <tbb/parallel_for.h>\r
\r
-#include <algorithm>\r
-\r
#if defined(_MSC_VER)\r
#pragma warning (push)\r
#pragma warning (disable : 4244)\r