#include <common/exception/exceptions.h>\r
#include <common/gl/gl_check.h>\r
#include <common/utility/tweener.h>\r
+#include <common/memory/safe_ptr.h>\r
\r
#include <core/mixer/audio/audio_util.h>\r
#include <core/mixer/read_frame.h>\r
#include <core/producer/frame/frame_transform.h>\r
#include <core/producer/frame/pixel_format.h>\r
\r
+#include <core/monitor/monitor.h>\r
+\r
#include <core/video_format.h>\r
\r
#include <boost/foreach.hpp>\r
std::unordered_map<int, blend_mode> blend_modes_;\r
\r
executor executor_;\r
+ safe_ptr<monitor::subject> monitor_subject_;\r
\r
public:\r
implementation(const safe_ptr<diagnostics::graph>& graph, const safe_ptr<mixer::target_t>& target, const video_format_desc& format_desc, const safe_ptr<ogl_device>& ogl, const channel_layout& audio_channel_layout) \r
, audio_mixer_(graph_)\r
, image_mixer_(ogl)\r
, executor_(L"mixer")\r
+ , monitor_subject_(make_safe<monitor::subject>("/mixer"))\r
{ \r
graph_->set_color("mix-time", diagnostics::color(1.0f, 0.0f, 0.9f, 0.8));\r
current_mix_time_ = 0;\r
void mixer::set_video_format_desc(const video_format_desc& format_desc){impl_->set_video_format_desc(format_desc);}\r
boost::unique_future<boost::property_tree::wptree> mixer::info() const{return impl_->info();}\r
boost::unique_future<boost::property_tree::wptree> mixer::delay_info() const{return impl_->delay_info();}\r
+monitor::subject& mixer::monitor_output(){return *impl_->monitor_subject_;}\r
}}
\ No newline at end of file
#include "image/blend_modes.h"\r
\r
#include "../producer/frame/frame_factory.h"\r
+#include "../monitor/monitor.h"\r
\r
#include <common/memory/safe_ptr.h>\r
#include <common/concurrency/target.h>\r
\r
boost::unique_future<boost::property_tree::wptree> info() const;\r
boost::unique_future<boost::property_tree::wptree> delay_info() const;\r
+\r
+ monitor::subject& monitor_output();\r
\r
private:\r
struct implementation;\r