}\r
};\r
\r
-struct graph::implementation : public drawable\r
+struct graph::impl : public drawable\r
{\r
tbb::concurrent_unordered_map<std::string, diagnostics::line> lines_;\r
\r
tbb::spin_mutex mutex_;\r
std::wstring text_;\r
\r
- implementation()\r
+ impl()\r
{\r
}\r
\r
glPopMatrix();\r
}\r
\r
- implementation(implementation&);\r
- implementation& operator=(implementation&);\r
+ impl(impl&);\r
+ impl& operator=(impl&);\r
};\r
\r
-graph::graph() : impl_(new implementation())\r
+graph::graph() : impl_(new impl())\r
{\r
}\r
\r
//namespace v2\r
//{ \r
// \r
-//struct line::implementation\r
+//struct line::impl\r
//{\r
// std::wstring name_;\r
// boost::circular_buffer<data> ticks_;\r
//\r
-// implementation(const std::wstring& name) \r
+// impl(const std::wstring& name) \r
// : name_(name)\r
// , ticks_(1024){}\r
// \r
//};\r
//\r
//line::line(){}\r
-//line::line(const std::wstring& name) : impl_(new implementation(name)){}\r
+//line::line(const std::wstring& name) : impl_(new impl(name)){}\r
//std::wstring line::print() const {return impl_->name_;}\r
//void line::set_value(float value){impl_->set_value(value);}\r
//void line::set_value(float value){impl_->set_value(value);}\r
//boost::circular_buffer<data>& line::ticks() { return impl_->ticks_;}\r
//\r
-//struct graph::implementation\r
+//struct graph::impl\r
//{\r
// std::map<std::wstring, line> lines_;\r
// color color_;\r
// printer printer_;\r
//\r
-// implementation(const std::wstring& name) \r
+// impl(const std::wstring& name) \r
// : printer_([=]{return name;}){}\r
//\r
-// implementation(const printer& parent_printer) \r
+// impl(const printer& parent_printer) \r
// : printer_(parent_printer){}\r
// \r
// void set_value(const std::wstring& name, float value)\r
// }\r
//};\r
// \r
-//graph::graph(const std::wstring& name) : impl_(new implementation(name)){}\r
-//graph::graph(const printer& parent_printer) : impl_(new implementation(parent_printer)){}\r
+//graph::graph(const std::wstring& name) : impl_(new impl(name)){}\r
+//graph::graph(const printer& parent_printer) : impl_(new impl(parent_printer)){}\r
//void graph::set_value(const std::wstring& name, float value){impl_->set_value(name, value);}\r
//void graph::set_value(const std::wstring& name, float value){impl_->set_value(name, value);}\r
//void graph::set_color(const std::wstring& name, color c){impl_->set_color(name, c);}\r
void set_color(const std::string& name, int color);\r
void set_tag(const std::string& name);\r
private:\r
- struct implementation;\r
- std::shared_ptr<implementation> impl_;\r
+ struct impl;\r
+ std::shared_ptr<impl> impl_;\r
};\r
\r
void register_graph(const safe_ptr<graph>& graph);\r
\r
namespace caspar { namespace core {\r
\r
-struct output::implementation\r
+struct output::impl\r
{ \r
const int channel_index_;\r
const safe_ptr<diagnostics::graph> graph_;\r
executor executor_;\r
\r
public:\r
- implementation(const safe_ptr<diagnostics::graph>& graph, const video_format_desc& format_desc, int channel_index) \r
+ impl(const safe_ptr<diagnostics::graph>& graph, const video_format_desc& format_desc, int channel_index) \r
: channel_index_(channel_index)\r
, graph_(graph)\r
, format_desc_(format_desc)\r
}\r
};\r
\r
-output::output(const safe_ptr<diagnostics::graph>& graph, const video_format_desc& format_desc, int channel_index) : impl_(new implementation(graph, format_desc, channel_index)){}\r
+output::output(const safe_ptr<diagnostics::graph>& graph, const video_format_desc& format_desc, int channel_index) : impl_(new impl(graph, format_desc, channel_index)){}\r
void output::add(int index, const safe_ptr<frame_consumer>& consumer){impl_->add(index, consumer);}\r
void output::add(const safe_ptr<frame_consumer>& consumer){impl_->add(consumer);}\r
void output::remove(int index){impl_->remove(index);}\r
\r
boost::unique_future<boost::property_tree::wptree> info() const;\r
private:\r
- struct implementation;\r
- safe_ptr<implementation> impl_;\r
+ struct impl;\r
+ safe_ptr<impl> impl_;\r
};\r
\r
}}
\ No newline at end of file
audio_buffer_ps audio_data;\r
};\r
\r
-struct audio_mixer::implementation\r
+struct audio_mixer::impl\r
{\r
safe_ptr<diagnostics::graph> graph_;\r
std::stack<core::frame_transform> transform_stack_;\r
video_format_desc format_desc_;\r
\r
public:\r
- implementation(const safe_ptr<diagnostics::graph>& graph)\r
+ impl(const safe_ptr<diagnostics::graph>& graph)\r
: graph_(graph)\r
{\r
graph_->set_color("volume", diagnostics::color(1.0f, 0.8f, 0.1f));\r
}\r
};\r
\r
-audio_mixer::audio_mixer(const safe_ptr<diagnostics::graph>& graph) : impl_(new implementation(graph)){}\r
+audio_mixer::audio_mixer(const safe_ptr<diagnostics::graph>& graph) : impl_(new impl(graph)){}\r
void audio_mixer::begin(core::basic_frame& frame){impl_->begin(frame);}\r
void audio_mixer::visit(core::write_frame& frame){impl_->visit(frame);}\r
void audio_mixer::end(){impl_->end();}\r
audio_buffer operator()(const video_format_desc& format_desc);\r
\r
private:\r
- struct implementation;\r
- safe_ptr<implementation> impl_;\r
+ struct impl;\r
+ safe_ptr<impl> impl_;\r
};\r
\r
}}
\ No newline at end of file
\r
static tbb::atomic<int> g_total_count;\r
\r
-struct device_buffer::implementation : boost::noncopyable\r
+struct device_buffer::impl : boost::noncopyable\r
{\r
GLuint id_;\r
\r
fence fence_;\r
\r
public:\r
- implementation(int width, int height, int stride) \r
+ impl(int width, int height, int stride) \r
: width_(width)\r
, height_(height)\r
, stride_(stride)\r
CASPAR_LOG(trace) << "[device_buffer] [" << ++g_total_count << L"] allocated size:" << width*height*stride; \r
} \r
\r
- ~implementation()\r
+ ~impl()\r
{\r
try\r
{\r
}\r
};\r
\r
-device_buffer::device_buffer(int width, int height, int stride) : impl_(new implementation(width, height, stride)){}\r
+device_buffer::device_buffer(int width, int height, int stride) : impl_(new impl(width, height, stride)){}\r
int device_buffer::stride() const { return impl_->stride_; }\r
int device_buffer::width() const { return impl_->width_; }\r
int device_buffer::height() const { return impl_->height_; }\r
\r
int id() const;\r
\r
- struct implementation;\r
- safe_ptr<implementation> impl_;\r
+ struct impl;\r
+ safe_ptr<impl> impl_;\r
};\r
\r
unsigned int format(int stride);\r
\r
namespace caspar { namespace core {\r
\r
-struct fence::implementation\r
+struct fence::impl\r
{\r
GLsync sync_;\r
\r
- implementation() : sync_(0){}\r
- ~implementation(){glDeleteSync(sync_);}\r
+ impl() : sync_(0){}\r
+ ~impl(){glDeleteSync(sync_);}\r
\r
void set()\r
{\r
static bool log_flag = false;\r
\r
if(GLEW_ARB_sync)\r
- impl_.reset(new implementation());\r
+ impl_.reset(new impl());\r
else if(!log_flag)\r
{\r
CASPAR_LOG(warning) << "[fence] GL_SYNC not supported, running without fences. This might cause performance degradation when running multiple channels and short buffer depth.";\r
bool ready() const;\r
void wait(ogl_device& ogl);\r
private:\r
- struct implementation;\r
- std::shared_ptr<implementation> impl_;\r
+ struct impl;\r
+ std::shared_ptr<impl> impl_;\r
};\r
\r
}}\r
static tbb::atomic<int> g_w_total_count;\r
static tbb::atomic<int> g_r_total_count;\r
\r
-struct host_buffer::implementation : boost::noncopyable\r
+struct host_buffer::impl : boost::noncopyable\r
{ \r
GLuint pbo_;\r
const int size_;\r
fence fence_;\r
\r
public:\r
- implementation(int size, usage_t usage) \r
+ impl(int size, usage_t usage) \r
: size_(size)\r
, data_(nullptr)\r
, pbo_(0)\r
CASPAR_LOG(trace) << "[host_buffer] [" << ++(usage_ == write_only ? g_w_total_count : g_r_total_count) << L"] allocated size:" << size_ << " usage: " << (usage == write_only ? "write_only" : "read_only");\r
} \r
\r
- ~implementation()\r
+ ~impl()\r
{\r
try\r
{\r
}\r
};\r
\r
-host_buffer::host_buffer(int size, usage_t usage) : impl_(new implementation(size, usage)){}\r
+host_buffer::host_buffer(int size, usage_t usage) : impl_(new impl(size, usage)){}\r
const void* host_buffer::data() const {return impl_->data_;}\r
void* host_buffer::data() {return impl_->data_;}\r
void host_buffer::map(){impl_->map();}\r
friend class ogl_device;\r
host_buffer(int size, usage_t usage);\r
\r
- struct implementation;\r
- safe_ptr<implementation> impl_;\r
+ struct impl;\r
+ safe_ptr<impl> impl_;\r
};\r
\r
}}
\ No newline at end of file
\r
namespace caspar { namespace core {\r
\r
-struct shader::implementation : boost::noncopyable\r
+struct shader::impl : boost::noncopyable\r
{\r
GLuint program_;\r
std::unordered_map<std::string, GLint> locations_;\r
public:\r
\r
- implementation(const std::string& vertex_source_str, const std::string& fragment_source_str) : program_(0)\r
+ impl(const std::string& vertex_source_str, const std::string& fragment_source_str) : program_(0)\r
{\r
GLint success;\r
\r
GL(glUseProgramObjectARB(program_));\r
}\r
\r
- ~implementation()\r
+ ~impl()\r
{\r
glDeleteProgram(program_);\r
}\r
};\r
\r
\r
-shader::shader(const std::string& vertex_source_str, const std::string& fragment_source_str) : impl_(new implementation(vertex_source_str, fragment_source_str)){}\r
+shader::shader(const std::string& vertex_source_str, const std::string& fragment_source_str) : impl_(new impl(vertex_source_str, fragment_source_str)){}\r
void shader::set(const std::string& name, bool value){impl_->set(name, value);}\r
void shader::set(const std::string& name, int value){impl_->set(name, value);}\r
void shader::set(const std::string& name, float value){impl_->set(name, value);}\r
void set(const std::string& name, double value);\r
private:\r
friend class ogl_device;\r
- struct implementation;\r
- safe_ptr<implementation> impl_;\r
+ struct impl;\r
+ safe_ptr<impl> impl_;\r
\r
int id() const;\r
};\r
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,\r
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff};\r
\r
-struct image_kernel::implementation : boost::noncopyable\r
+struct image_kernel::impl : boost::noncopyable\r
{ \r
safe_ptr<ogl_device> ogl_;\r
safe_ptr<shader> shader_;\r
bool blend_modes_;\r
\r
- implementation(const safe_ptr<ogl_device>& ogl)\r
+ impl(const safe_ptr<ogl_device>& ogl)\r
: ogl_(ogl)\r
, shader_(ogl_->invoke([&]{return get_image_shader(*ogl, blend_modes_);}))\r
{\r
}\r
};\r
\r
-image_kernel::image_kernel(const safe_ptr<ogl_device>& ogl) : impl_(new implementation(ogl)){}\r
+image_kernel::image_kernel(const safe_ptr<ogl_device>& ogl) : impl_(new impl(ogl)){}\r
void image_kernel::draw(draw_params&& params)\r
{\r
impl_->draw(std::move(params));\r
image_kernel(const safe_ptr<ogl_device>& ogl);\r
void draw(draw_params&& params);\r
private:\r
- struct implementation;\r
- safe_ptr<implementation> impl_;\r
+ struct impl;\r
+ safe_ptr<impl> impl_;\r
};\r
\r
}}
\ No newline at end of file
}\r
};\r
\r
-struct image_mixer::implementation : boost::noncopyable\r
+struct image_mixer::impl : boost::noncopyable\r
{ \r
safe_ptr<ogl_device> ogl_;\r
image_renderer renderer_;\r
std::vector<frame_transform> transform_stack_;\r
std::vector<layer> layers_; // layer/stream/items\r
public:\r
- implementation(const safe_ptr<ogl_device>& ogl) \r
+ impl(const safe_ptr<ogl_device>& ogl) \r
: ogl_(ogl)\r
, renderer_(ogl)\r
, transform_stack_(1) \r
}\r
};\r
\r
-image_mixer::image_mixer(const safe_ptr<ogl_device>& ogl) : impl_(new implementation(ogl)){}\r
+image_mixer::image_mixer(const safe_ptr<ogl_device>& ogl) : impl_(new impl(ogl)){}\r
void image_mixer::begin(basic_frame& frame){impl_->begin(frame);}\r
void image_mixer::visit(write_frame& frame){impl_->visit(frame);}\r
void image_mixer::end(){impl_->end();}\r
boost::unique_future<safe_ptr<host_buffer>> operator()(const video_format_desc& format_desc);\r
\r
private:\r
- struct implementation;\r
- safe_ptr<implementation> impl_;\r
+ struct impl;\r
+ safe_ptr<impl> impl_;\r
};\r
\r
}}
\ No newline at end of file
\r
namespace caspar { namespace core {\r
\r
-struct mixer::implementation : boost::noncopyable\r
+struct mixer::impl : boost::noncopyable\r
{ \r
safe_ptr<diagnostics::graph> graph_;\r
boost::timer mix_timer_;\r
executor executor_;\r
\r
public:\r
- implementation(const safe_ptr<diagnostics::graph>& graph, const video_format_desc& format_desc, const safe_ptr<ogl_device>& ogl) \r
+ impl(const safe_ptr<diagnostics::graph>& graph, const video_format_desc& format_desc, const safe_ptr<ogl_device>& ogl) \r
: graph_(graph)\r
, format_desc_(format_desc)\r
, ogl_(ogl)\r
};\r
\r
mixer::mixer(const safe_ptr<diagnostics::graph>& graph, const video_format_desc& format_desc, const safe_ptr<ogl_device>& ogl) \r
- : impl_(new implementation(graph, format_desc, ogl)){}\r
+ : impl_(new impl(graph, format_desc, ogl)){}\r
void mixer::send(const std::pair<std::map<int, safe_ptr<core::basic_frame>>, std::shared_ptr<void>>& frames){ impl_->send(frames);}\r
void mixer::link_target(const std::weak_ptr<target_t>& target){impl_->link_target(target);}\r
core::video_format_desc mixer::get_video_format_desc() const { return impl_->get_video_format_desc(); }\r
boost::unique_future<boost::property_tree::wptree> info() const;\r
\r
private:\r
- struct implementation;\r
- safe_ptr<implementation> impl_;\r
+ struct impl;\r
+ safe_ptr<impl> impl_;\r
};\r
\r
}}
\ No newline at end of file
\r
namespace caspar { namespace core {\r
\r
-struct read_frame::implementation : boost::noncopyable\r
+struct read_frame::impl : boost::noncopyable\r
{\r
safe_ptr<ogl_device> ogl_;\r
int width_;\r
audio_buffer audio_data_;\r
\r
public:\r
- implementation(const safe_ptr<ogl_device>& ogl, int width, int height, safe_ptr<host_buffer>&& image_data, audio_buffer&& audio_data) \r
+ impl(const safe_ptr<ogl_device>& ogl, int width, int height, safe_ptr<host_buffer>&& image_data, audio_buffer&& audio_data) \r
: ogl_(ogl)\r
, width_(width)\r
, height_(height)\r
};\r
\r
read_frame::read_frame(const safe_ptr<ogl_device>& ogl, int width, int height, safe_ptr<host_buffer>&& image_data, audio_buffer&& audio_data) \r
- : impl_(new implementation(ogl, width, height, std::move(image_data), std::move(audio_data))){}\r
+ : impl_(new impl(ogl, width, height, std::move(image_data), std::move(audio_data))){}\r
read_frame::read_frame(){}\r
const boost::iterator_range<const uint8_t*> read_frame::image_data()\r
{\r
int height() const;\r
\r
private:\r
- struct implementation;\r
- std::shared_ptr<implementation> impl_;\r
+ struct impl;\r
+ std::shared_ptr<impl> impl_;\r
};\r
\r
}}
\ No newline at end of file
\r
namespace caspar { namespace core {\r
\r
-struct write_frame::implementation\r
+struct write_frame::impl\r
{ \r
std::shared_ptr<ogl_device> ogl_;\r
std::vector<std::shared_ptr<host_buffer>> buffers_;\r
const void* tag_;\r
core::field_mode::type mode_;\r
\r
- implementation(const void* tag)\r
+ impl(const void* tag)\r
: tag_(tag)\r
{\r
}\r
\r
- implementation(const safe_ptr<ogl_device>& ogl, const void* tag, const core::pixel_format_desc& desc) \r
+ impl(const safe_ptr<ogl_device>& ogl, const void* tag, const core::pixel_format_desc& desc) \r
: ogl_(ogl)\r
, desc_(desc)\r
, tag_(tag)\r
}\r
};\r
\r
-write_frame::write_frame(const void* tag) : impl_(new implementation(tag)){}\r
+write_frame::write_frame(const void* tag) : impl_(new impl(tag)){}\r
write_frame::write_frame(const safe_ptr<ogl_device>& ogl, const void* tag, const core::pixel_format_desc& desc) \r
- : impl_(new implementation(ogl, tag, desc)){}\r
-write_frame::write_frame(const write_frame& other) : impl_(new implementation(*other.impl_)){}\r
+ : impl_(new impl(ogl, tag, desc)){}\r
+write_frame::write_frame(const write_frame& other) : impl_(new impl(*other.impl_)){}\r
write_frame::write_frame(write_frame&& other) : impl_(std::move(other.impl_)){}\r
write_frame& write_frame::operator=(const write_frame& other)\r
{\r
\r
const std::vector<safe_ptr<device_buffer>>& get_textures() const;\r
\r
- struct implementation;\r
- safe_ptr<implementation> impl_;\r
+ struct impl;\r
+ safe_ptr<impl> impl_;\r
};\r
\r
\r
\r
namespace caspar { namespace core {\r
\r
-struct basic_frame::implementation\r
+struct basic_frame::impl\r
{ \r
std::vector<safe_ptr<basic_frame>> frames_;\r
\r
frame_transform frame_transform_; \r
\r
public:\r
- implementation(const std::vector<safe_ptr<basic_frame>>& frames) : frames_(frames) \r
+ impl(const std::vector<safe_ptr<basic_frame>>& frames) : frames_(frames) \r
{\r
}\r
- implementation(std::vector<safe_ptr<basic_frame>>&& frames) : frames_(std::move(frames))\r
+ impl(std::vector<safe_ptr<basic_frame>>&& frames) : frames_(std::move(frames))\r
{\r
}\r
- implementation(safe_ptr<basic_frame>&& frame) \r
+ impl(safe_ptr<basic_frame>&& frame) \r
{\r
frames_.push_back(std::move(frame));\r
}\r
- implementation(const safe_ptr<basic_frame>& frame) \r
+ impl(const safe_ptr<basic_frame>& frame) \r
{ \r
frames_.push_back(frame);\r
}\r
} \r
};\r
\r
-basic_frame::basic_frame() : impl_(new implementation(std::vector<safe_ptr<basic_frame>>())){}\r
-basic_frame::basic_frame(const std::vector<safe_ptr<basic_frame>>& frames) : impl_(new implementation(frames)){}\r
-basic_frame::basic_frame(const basic_frame& other) : impl_(new implementation(*other.impl_)){}\r
-basic_frame::basic_frame(std::vector<safe_ptr<basic_frame>>&& frames) : impl_(new implementation(frames)){}\r
-basic_frame::basic_frame(const safe_ptr<basic_frame>& frame) : impl_(new implementation(frame)){}\r
-basic_frame::basic_frame(safe_ptr<basic_frame>&& frame) : impl_(new implementation(std::move(frame))){}\r
+basic_frame::basic_frame() : impl_(new impl(std::vector<safe_ptr<basic_frame>>())){}\r
+basic_frame::basic_frame(const std::vector<safe_ptr<basic_frame>>& frames) : impl_(new impl(frames)){}\r
+basic_frame::basic_frame(const basic_frame& other) : impl_(new impl(*other.impl_)){}\r
+basic_frame::basic_frame(std::vector<safe_ptr<basic_frame>>&& frames) : impl_(new impl(frames)){}\r
+basic_frame::basic_frame(const safe_ptr<basic_frame>& frame) : impl_(new impl(frame)){}\r
+basic_frame::basic_frame(safe_ptr<basic_frame>&& frame) : impl_(new impl(std::move(frame))){}\r
basic_frame::basic_frame(basic_frame&& other) : impl_(std::move(other.impl_)){}\r
basic_frame& basic_frame::operator=(const basic_frame& other)\r
{\r
\r
virtual void accept(frame_visitor& visitor);\r
private:\r
- struct implementation;\r
- safe_ptr<implementation> impl_;\r
+ struct impl;\r
+ safe_ptr<impl> impl_;\r
};\r
\r
safe_ptr<basic_frame> disable_audio(const safe_ptr<basic_frame>& frame);\r
\r
namespace caspar { namespace core {\r
\r
-struct layer::implementation\r
+struct layer::impl\r
{ \r
safe_ptr<frame_producer> foreground_;\r
safe_ptr<frame_producer> background_;\r
bool is_paused_;\r
\r
public:\r
- implementation() \r
+ impl() \r
: foreground_(frame_producer::empty())\r
, background_(frame_producer::empty())\r
, frame_number_(0)\r
}\r
};\r
\r
-layer::layer() : impl_(new implementation()){}\r
+layer::layer() : impl_(new impl()){}\r
layer::layer(layer&& other) : impl_(std::move(other.impl_)){}\r
layer& layer::operator=(layer&& other)\r
{\r
impl_ = std::move(other.impl_);\r
return *this;\r
}\r
-layer::layer(const layer& other) : impl_(new implementation(*other.impl_)){}\r
+layer::layer(const layer& other) : impl_(new impl(*other.impl_)){}\r
layer& layer::operator=(const layer& other)\r
{\r
layer temp(other);\r
\r
boost::property_tree::wptree info() const;\r
private:\r
- struct implementation;\r
- safe_ptr<implementation> impl_;\r
+ struct impl;\r
+ safe_ptr<impl> impl_;\r
};\r
\r
}}
\ No newline at end of file
}\r
};\r
\r
-struct stage::implementation : public std::enable_shared_from_this<implementation>\r
+struct stage::impl : public std::enable_shared_from_this<impl>\r
, boost::noncopyable\r
{ \r
safe_ptr<diagnostics::graph> graph_;\r
\r
executor executor_;\r
public:\r
- implementation(const safe_ptr<diagnostics::graph>& graph, const video_format_desc& format_desc) \r
+ impl(const safe_ptr<diagnostics::graph>& graph, const video_format_desc& format_desc) \r
: graph_(graph)\r
, format_desc_(format_desc)\r
, executor_(L"stage")\r
\r
void spawn_token()\r
{\r
- std::weak_ptr<implementation> self = shared_from_this();\r
+ std::weak_ptr<impl> self = shared_from_this();\r
executor_.begin_invoke([=]{tick(self);});\r
}\r
\r
targets_.push_back(target);\r
}\r
\r
- void tick(const std::weak_ptr<implementation>& self)\r
+ void tick(const std::weak_ptr<impl>& self)\r
{ \r
try\r
{\r
}\r
};\r
\r
-stage::stage(const safe_ptr<diagnostics::graph>& graph, const video_format_desc& format_desc) : impl_(new implementation(graph, format_desc)){}\r
+stage::stage(const safe_ptr<diagnostics::graph>& graph, const video_format_desc& format_desc) : impl_(new impl(graph, format_desc)){}\r
void stage::link_target(const std::weak_ptr<target_t>& target){impl_->link_target(target);}\r
void stage::set_frame_transform(int index, const core::frame_transform& transform, unsigned int mix_duration, const std::wstring& tween){impl_->set_transform(index, transform, mix_duration, tween);}\r
void stage::apply_frame_transform(int index, const std::function<core::frame_transform(core::frame_transform)>& transform, unsigned int mix_duration, const std::wstring& tween){impl_->apply_transform(index, transform, mix_duration, tween);}\r
void set_video_format_desc(const video_format_desc& format_desc);\r
\r
private:\r
- struct implementation;\r
- safe_ptr<implementation> impl_;\r
+ struct impl;\r
+ safe_ptr<impl> impl_;\r
};\r
\r
}}
\ No newline at end of file
\r
namespace caspar { namespace core {\r
\r
-struct video_channel::implementation sealed : public frame_factory\r
+struct video_channel::impl sealed : public frame_factory\r
{\r
const int index_;\r
video_format_desc format_desc_;\r
safe_ptr<caspar::core::stage> stage_;\r
\r
public:\r
- implementation(int index, const video_format_desc& format_desc, const safe_ptr<ogl_device>& ogl) \r
+ impl(int index, const video_format_desc& format_desc, const safe_ptr<ogl_device>& ogl) \r
: index_(index)\r
, format_desc_(format_desc)\r
, ogl_(ogl)\r
}\r
};\r
\r
-video_channel::video_channel(int index, const video_format_desc& format_desc, const safe_ptr<ogl_device>& ogl) : impl_(new implementation(index, format_desc, ogl)){}\r
+video_channel::video_channel(int index, const video_format_desc& format_desc, const safe_ptr<ogl_device>& ogl) : impl_(new impl(index, format_desc, ogl)){}\r
safe_ptr<stage> video_channel::stage() { return impl_->stage_;} \r
safe_ptr<mixer> video_channel::mixer() { return impl_->mixer_;} \r
safe_ptr<frame_factory> video_channel::frame_factory() { return impl_;} \r
boost::property_tree::wptree info() const;\r
\r
private:\r
- struct implementation;\r
- safe_ptr<implementation> impl_;\r
+ struct impl;\r
+ safe_ptr<impl> impl_;\r
};\r
\r
}}
\ No newline at end of file
\r
namespace caspar { namespace ffmpeg {\r
\r
-struct audio_decoder::implementation : boost::noncopyable\r
+struct audio_decoder::impl : boost::noncopyable\r
{ \r
int index_;\r
const safe_ptr<AVCodecContext> codec_context_; \r
const int64_t nb_frames_;\r
tbb::atomic<uint32_t> file_frame_number_;\r
public:\r
- explicit implementation(const safe_ptr<AVFormatContext>& context, const core::video_format_desc& format_desc) \r
+ explicit impl(const safe_ptr<AVFormatContext>& context, const core::video_format_desc& format_desc) \r
: format_desc_(format_desc) \r
, codec_context_(open_codec(*context, AVMEDIA_TYPE_AUDIO, index_))\r
, resampler_(format_desc.audio_channels, codec_context_->channels,\r
}\r
};\r
\r
-audio_decoder::audio_decoder(const safe_ptr<AVFormatContext>& context, const core::video_format_desc& format_desc) : impl_(new implementation(context, format_desc)){}\r
+audio_decoder::audio_decoder(const safe_ptr<AVFormatContext>& context, const core::video_format_desc& format_desc) : impl_(new impl(context, format_desc)){}\r
void audio_decoder::push(const std::shared_ptr<AVPacket>& packet){impl_->push(packet);}\r
bool audio_decoder::ready() const{return impl_->ready();}\r
std::shared_ptr<core::audio_buffer> audio_decoder::poll(){return impl_->poll();}\r
\r
uint32_t file_frame_number() const;\r
private:\r
- struct implementation;\r
- safe_ptr<implementation> impl_;\r
+ struct impl;\r
+ safe_ptr<impl> impl_;\r
};\r
\r
}}
\ No newline at end of file
\r
namespace caspar { namespace ffmpeg {\r
\r
-struct audio_resampler::implementation\r
+struct audio_resampler::impl\r
{ \r
std::shared_ptr<ReSampleContext> resampler_;\r
\r
const int input_channels_;\r
const AVSampleFormat input_sample_format_;\r
\r
- implementation(int output_channels, int input_channels, int output_sample_rate, int input_sample_rate, AVSampleFormat output_sample_format, AVSampleFormat input_sample_format)\r
+ impl(int output_channels, int input_channels, int output_sample_rate, int input_sample_rate, AVSampleFormat output_sample_format, AVSampleFormat input_sample_format)\r
: output_channels_(output_channels)\r
, output_sample_format_(output_sample_format)\r
, input_channels_(input_channels)\r
\r
\r
audio_resampler::audio_resampler(int output_channels, int input_channels, int output_sample_rate, int input_sample_rate, AVSampleFormat output_sample_format, AVSampleFormat input_sample_format)\r
- : impl_(new implementation(output_channels, input_channels, output_sample_rate, input_sample_rate, output_sample_format, input_sample_format)){}\r
+ : impl_(new impl(output_channels, input_channels, output_sample_rate, input_sample_rate, output_sample_format, input_sample_format)){}\r
std::vector<int8_t, tbb::cache_aligned_allocator<int8_t>> audio_resampler::resample(std::vector<int8_t, tbb::cache_aligned_allocator<int8_t>>&& data){return impl_->resample(std::move(data));}\r
\r
}}
\ No newline at end of file
\r
std::vector<int8_t, tbb::cache_aligned_allocator<int8_t>> resample(std::vector<int8_t, tbb::cache_aligned_allocator<int8_t>>&& data);\r
private:\r
- struct implementation;\r
- std::shared_ptr<implementation> impl_;\r
+ struct impl;\r
+ std::shared_ptr<impl> impl_;\r
};\r
\r
}}
\ No newline at end of file
return 0;\r
}\r
\r
-struct filter::implementation\r
+struct filter::impl\r
{\r
std::wstring filters_;\r
std::shared_ptr<AVFilterGraph> graph_; \r
std::vector<PixelFormat> pix_fmts_;\r
std::queue<safe_ptr<AVFrame>> bypass_;\r
\r
- implementation(const std::wstring& filters, const std::vector<PixelFormat>& pix_fmts) \r
+ impl(const std::wstring& filters, const std::vector<PixelFormat>& pix_fmts) \r
: filters_(filters)\r
, parallel_yadif_ctx_(nullptr)\r
, pix_fmts_(pix_fmts)\r
}\r
};\r
\r
-filter::filter(const std::wstring& filters, const std::vector<PixelFormat>& pix_fmts) : impl_(new implementation(filters, pix_fmts)){}\r
+filter::filter(const std::wstring& filters, const std::vector<PixelFormat>& pix_fmts) : impl_(new impl(filters, pix_fmts)){}\r
filter::filter(filter&& other) : impl_(std::move(other.impl_)){}\r
filter& filter::operator=(filter&& other){impl_ = std::move(other.impl_); return *this;}\r
void filter::push(const std::shared_ptr<AVFrame>& frame){impl_->push(frame);}\r
return is_deinterlacing(filter_str());\r
}\r
private:\r
- struct implementation;\r
- safe_ptr<implementation> impl_;\r
+ struct impl;\r
+ safe_ptr<impl> impl_;\r
};\r
\r
}}
\ No newline at end of file
static const size_t MIN_BUFFER_COUNT = 4;\r
static const size_t MAX_BUFFER_SIZE = 16 * 1000000;\r
\r
-struct input::implementation : boost::noncopyable\r
+struct input::impl : boost::noncopyable\r
{ \r
safe_ptr<diagnostics::graph> graph_;\r
\r
\r
tbb::recursive_mutex mutex_;\r
\r
- explicit implementation(const safe_ptr<diagnostics::graph>& graph, const std::wstring& filename, bool loop, uint32_t start, uint32_t length) \r
+ explicit impl(const safe_ptr<diagnostics::graph>& graph, const std::wstring& filename, bool loop, uint32_t start, uint32_t length) \r
: graph_(graph)\r
, format_context_(open_input(filename)) \r
, default_stream_index_(av_find_default_stream_index(format_context_.get()))\r
CASPAR_LOG(info) << print() << L" Initialized.";\r
}\r
\r
- ~implementation()\r
+ ~impl()\r
{\r
is_running_ = false;\r
buffer_cond_.notify_all();\r
};\r
\r
input::input(const safe_ptr<diagnostics::graph>& graph, const std::wstring& filename, bool loop, uint32_t start, uint32_t length) \r
- : impl_(new implementation(graph, filename, loop, start, length)){}\r
+ : impl_(new impl(graph, filename, loop, start, length)){}\r
bool input::eof() const {return impl_->is_eof_;}\r
bool input::try_pop(std::shared_ptr<AVPacket>& packet){return impl_->try_pop(packet);}\r
safe_ptr<AVFormatContext> input::context(){return impl_->format_context_;}\r
\r
safe_ptr<AVFormatContext> context();\r
private:\r
- struct implementation;\r
- std::shared_ptr<implementation> impl_;\r
+ struct impl;\r
+ std::shared_ptr<impl> impl_;\r
};\r
\r
\r
\r
namespace caspar { namespace ffmpeg {\r
\r
-struct frame_muxer::implementation : boost::noncopyable\r
+struct frame_muxer::impl : boost::noncopyable\r
{ \r
std::queue<std::queue<safe_ptr<write_frame>>> video_streams_;\r
std::queue<core::audio_buffer> audio_streams_;\r
const std::wstring filter_str_;\r
bool force_deinterlacing_;\r
\r
- implementation(double in_fps, const safe_ptr<core::frame_factory>& frame_factory, const std::wstring& filter_str)\r
+ impl(double in_fps, const safe_ptr<core::frame_factory>& frame_factory, const std::wstring& filter_str)\r
: display_mode_(display_mode::invalid)\r
, in_fps_(in_fps)\r
, format_desc_(frame_factory->get_video_format_desc())\r
};\r
\r
frame_muxer::frame_muxer(double in_fps, const safe_ptr<core::frame_factory>& frame_factory, const std::wstring& filter)\r
- : impl_(new implementation(in_fps, frame_factory, filter)){}\r
+ : impl_(new impl(in_fps, frame_factory, filter)){}\r
void frame_muxer::push(const std::shared_ptr<AVFrame>& video_frame, int flags){impl_->push(video_frame, flags);}\r
void frame_muxer::push(const std::shared_ptr<core::audio_buffer>& audio_samples){return impl_->push(audio_samples);}\r
std::shared_ptr<basic_frame> frame_muxer::poll(){return impl_->poll();}\r
\r
uint32_t calc_nb_frames(uint32_t nb_frames) const;\r
private:\r
- struct implementation;\r
- safe_ptr<implementation> impl_;\r
+ struct impl;\r
+ safe_ptr<impl> impl_;\r
};\r
\r
}}
\ No newline at end of file
\r
namespace caspar { namespace ffmpeg {\r
\r
-struct video_decoder::implementation : boost::noncopyable\r
+struct video_decoder::impl : boost::noncopyable\r
{\r
int index_;\r
const safe_ptr<AVCodecContext> codec_context_;\r
tbb::atomic<uint32_t> file_frame_number_;\r
\r
public:\r
- explicit implementation(const safe_ptr<AVFormatContext>& context) \r
+ explicit impl(const safe_ptr<AVFormatContext>& context) \r
: codec_context_(open_codec(*context, AVMEDIA_TYPE_VIDEO, index_))\r
, nb_frames_(static_cast<uint32_t>(context->streams[index_]->nb_frames))\r
, width_(codec_context_->width)\r
}\r
};\r
\r
-video_decoder::video_decoder(const safe_ptr<AVFormatContext>& context) : impl_(new implementation(context)){}\r
+video_decoder::video_decoder(const safe_ptr<AVFormatContext>& context) : impl_(new impl(context)){}\r
void video_decoder::push(const std::shared_ptr<AVPacket>& packet){impl_->push(packet);}\r
std::shared_ptr<AVFrame> video_decoder::poll(){return impl_->poll();}\r
bool video_decoder::ready() const{return impl_->ready();}\r
bool is_progressive() const;\r
\r
private:\r
- struct implementation;\r
- safe_ptr<implementation> impl_;\r
+ struct impl;\r
+ safe_ptr<impl> impl_;\r
};\r
\r
}}
\ No newline at end of file
\r
namespace caspar { namespace flash {\r
\r
-struct cg_producer::implementation : boost::noncopyable\r
+struct cg_producer::impl : boost::noncopyable\r
{\r
safe_ptr<core::frame_producer> flash_producer_;\r
public:\r
- implementation(const safe_ptr<core::frame_producer>& frame_producer) \r
+ impl(const safe_ptr<core::frame_producer>& frame_producer) \r
: flash_producer_(frame_producer)\r
{}\r
\r
return make_safe<cg_producer>(flash::create_producer(frame_factory, boost::assign::list_of<std::wstring>())); \r
}\r
\r
-cg_producer::cg_producer(const safe_ptr<core::frame_producer>& frame_producer) : impl_(new implementation(frame_producer)){}\r
+cg_producer::cg_producer(const safe_ptr<core::frame_producer>& frame_producer) : impl_(new impl(frame_producer)){}\r
cg_producer::cg_producer(cg_producer&& other) : impl_(std::move(other.impl_)){}\r
safe_ptr<core::basic_frame> cg_producer::receive(int flags){return impl_->receive(flags);}\r
safe_ptr<core::basic_frame> cg_producer::last_frame() const{return impl_->last_frame();}\r
std::wstring template_host_info();\r
\r
private:\r
- struct implementation;\r
- std::shared_ptr<implementation> impl_;\r
+ struct impl;\r
+ std::shared_ptr<impl> impl_;\r
};\r
safe_ptr<cg_producer> get_default_cg_producer(const safe_ptr<core::video_channel>& video_channel, int layer_index = cg_producer::DEFAULT_LAYER);\r
\r
*/\r
\r
\r
-// AsyncEventServer.cpp: implementation of the AsyncEventServer class.\r
+// AsyncEventServer.cpp: impl of the AsyncEventServer class.\r
//\r
//////////////////////////////////////////////////////////////////////\r
\r
using namespace core;\r
using namespace protocol;\r
\r
-struct server::implementation : boost::noncopyable\r
+struct server::impl : boost::noncopyable\r
{\r
safe_ptr<ogl_device> ogl_;\r
std::vector<safe_ptr<IO::AsyncEventServer>> async_servers_; \r
std::vector<safe_ptr<video_channel>> channels_;\r
\r
- implementation() \r
+ impl() \r
: ogl_(ogl_device::create())\r
{ \r
ffmpeg::init();\r
CASPAR_LOG(info) << L"Initialized controllers.";\r
}\r
\r
- ~implementation()\r
+ ~impl()\r
{ \r
image::uninit();\r
ffmpeg::uninit();\r
}\r
};\r
\r
-server::server() : impl_(new implementation()){}\r
+server::server() : impl_(new impl()){}\r
\r
const std::vector<safe_ptr<video_channel>> server::get_channels() const\r
{\r
server();\r
const std::vector<safe_ptr<core::video_channel>> get_channels() const;\r
private:\r
- struct implementation;\r
- safe_ptr<implementation> impl_;\r
+ struct impl;\r
+ safe_ptr<impl> impl_;\r
};\r
\r
}
\ No newline at end of file