]> git.sesse.net Git - casparcg/commitdiff
2.0.0.2: - Refactored "mixers" into generic "frame_visitors".
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Wed, 9 Mar 2011 09:36:30 +0000 (09:36 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Wed, 9 Mar 2011 09:36:30 +0000 (09:36 +0000)
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches/2.0.0.2@539 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d

19 files changed:
core/producer/color/color_producer.cpp
core/producer/frame_producer.h
core/producer/frame_producer_device.cpp
mixer/audio/audio_mixer.cpp
mixer/audio/audio_mixer.h
mixer/frame/draw_frame.cpp
mixer/frame/draw_frame.h
mixer/frame/frame_factory.h [moved from mixer/frame_factory.h with 91% similarity]
mixer/frame/frame_visitor.h [new file with mode: 0644]
mixer/frame/write_frame.cpp
mixer/frame/write_frame.h
mixer/frame_mixer_device.cpp
mixer/frame_mixer_device.h
mixer/image/image_mixer.cpp
mixer/image/image_mixer.h
mixer/mixer.vcxproj
mixer/mixer.vcxproj.filters
modules/decklink/producer/decklink_producer.cpp
modules/silverlight/producer/silverlight_producer.cpp

index 002ef09d6df3200b196114075b6fd45efa2d3ca4..f0a887f51aa2640d47a5653bf16e8c32829a20dc 100644 (file)
@@ -22,7 +22,7 @@
 \r
 #include "color_producer.h"\r
 \r
-#include <mixer/frame/draw_frame.h>\r
+#include <mixer/frame/write_frame.h>\r
 \r
 #include <sstream>\r
 \r
index 2387d8b5d99e2cd5f352c2e461b2aa85ed180090..1763f9a57345aa86e939ecbf14590a5c486c2095 100644 (file)
@@ -23,7 +23,7 @@
 #include <common/utility/printer.h>\r
 \r
 #include <mixer/frame/draw_frame.h>\r
-#include <mixer/frame_factory.h>\r
+#include <mixer/frame/frame_factory.h>\r
 \r
 #include <boost/noncopyable.hpp>\r
 \r
index 16bae281d551bd6504c8f4a56b8e7653cfad1baa..4aaf9f2c2508d9af3c76ab3f85aac36e3ca2262b 100644 (file)
@@ -3,7 +3,7 @@
 #include "frame_producer_device.h"\r
 \r
 #include <mixer/frame/draw_frame.h>\r
-#include <mixer/frame_factory.h>\r
+#include <mixer/frame/frame_factory.h>\r
 \r
 #include "layer.h"\r
 \r
index 0c0267d7f60a12da0aed9753cad00f25e7a4730a..f03e92ed22e374496e7efb50b8927cd8219020ab 100644 (file)
@@ -3,6 +3,9 @@
 #include "audio_mixer.h"\r
 #include "audio_transform.h"\r
 \r
+#include "../frame/draw_frame.h"\r
+#include "../frame/write_frame.h"\r
+\r
 namespace caspar { namespace core {\r
        \r
 struct audio_mixer::implementation\r
@@ -18,17 +21,20 @@ public:
        {\r
                transform_stack_.push(audio_transform());\r
        }\r
-\r
-       void begin(const audio_transform& transform)\r
+       \r
+       void begin(const draw_frame& frame)\r
        {\r
-               transform_stack_.push(transform_stack_.top()*transform);\r
+               transform_stack_.push(transform_stack_.top()*frame.get_audio_transform());\r
        }\r
 \r
-       void process(const std::vector<short>& audio_data, int tag)\r
-       {               \r
+       void visit(const write_frame& frame)\r
+       {\r
                if(!transform_stack_.top().get_has_audio())\r
                        return;\r
 \r
+               auto& audio_data = frame.audio_data();\r
+               auto tag = frame.tag();\r
+\r
                if(audio_data_.empty())\r
                        audio_data_.resize(audio_data.size(), 0);\r
                \r
@@ -63,9 +69,14 @@ public:
                                }\r
                        }\r
                );\r
+       }\r
+\r
 \r
+       void begin(const audio_transform& transform)\r
+       {\r
+               transform_stack_.push(transform_stack_.top()*transform);\r
        }\r
-       \r
+               \r
        void end()\r
        {\r
                transform_stack_.pop();\r
@@ -84,8 +95,8 @@ public:
 };\r
 \r
 audio_mixer::audio_mixer() : impl_(new implementation()){}\r
-void audio_mixer::begin(const audio_transform& transform){impl_->begin(transform);}\r
-void audio_mixer::process(const std::vector<short>& audio_data, int tag){impl_->process(audio_data, tag);}\r
+void audio_mixer::begin(const draw_frame& frame){impl_->begin(frame);}\r
+void audio_mixer::visit(write_frame& frame){impl_->visit(frame);}\r
 void audio_mixer::end(){impl_->end();}\r
 std::vector<short> audio_mixer::begin_pass(){return impl_->begin_pass();}      \r
 void audio_mixer::end_pass(){impl_->end_pass();}\r
index dc4f805a203fff91a2ed479b855c092f4e5e9396..8fb013e9d304042b6a38c12f05bfc98f925b76f8 100644 (file)
@@ -1,19 +1,19 @@
 #pragma once\r
 \r
-#include <tbb/spin_mutex.h>\r
+#include "../frame/frame_visitor.h"\r
 \r
 namespace caspar { namespace core {\r
 \r
 class audio_transform;\r
 \r
-class audio_mixer\r
+class audio_mixer : public frame_visitor\r
 {\r
 public:\r
        audio_mixer();\r
 \r
-       void begin(const audio_transform& transform);\r
-       void process(const std::vector<short>& audio_data, int tag);\r
-       void end();\r
+       virtual void begin(const draw_frame& frame);\r
+       virtual void visit(write_frame& frame);\r
+       virtual void end();\r
 \r
        std::vector<short> begin_pass();\r
        void end_pass();\r
index 9fb7fb9fe66b23d543cf4517e8dd9555dbbf57b2..9d0c961f22ff3c1b7518770291444773e2134f64 100644 (file)
@@ -22,6 +22,7 @@ struct draw_frame::implementation
        audio_transform audio_transform_;\r
 \r
        int index_;\r
+\r
 public:\r
        implementation(const std::vector<safe_ptr<draw_frame>>& frames) \r
                : frames_(frames)\r
@@ -30,20 +31,12 @@ public:
                : frames_(std::move(frames))\r
                , index_(std::numeric_limits<int>::min()) {}\r
        \r
-       void process_image(image_mixer& mixer)\r
-       {\r
-               mixer.begin(image_transform_);\r
-               BOOST_FOREACH(auto frame, frames_)\r
-                       frame->process_image(mixer);\r
-               mixer.end();\r
-       }\r
-\r
-       void process_audio(audio_mixer& mixer)\r
+       void accept(draw_frame& self, frame_visitor& visitor)\r
        {\r
-               mixer.begin(audio_transform_);\r
+               visitor.begin(self);\r
                BOOST_FOREACH(auto frame, frames_)\r
-                       frame->process_audio(mixer);\r
-               mixer.end();\r
+                       frame->accept(visitor);\r
+               visitor.end();\r
        }       \r
 };\r
        \r
@@ -92,8 +85,7 @@ draw_frame& draw_frame::operator=(draw_frame&& other)
        temp.swap(*this);\r
        return *this;\r
 }\r
-void draw_frame::process_image(image_mixer& mixer){impl_->process_image(mixer);}\r
-void draw_frame::process_audio(audio_mixer& mixer){impl_->process_audio(mixer);}\r
+void draw_frame::accept(frame_visitor& visitor){impl_->accept(*this, visitor);}\r
 \r
 const image_transform& draw_frame::get_image_transform() const { return impl_->image_transform_;}\r
 image_transform& draw_frame::get_image_transform() { return impl_->image_transform_;}\r
index 24aeffb5266c667d599b7aecbd047c3c97bfac42..a0428986146ff188ac05743c65c2aac612a877b9 100644 (file)
@@ -2,7 +2,7 @@
 \r
 #include "../fwd.h"\r
 \r
-#include "draw_frame.h"\r
+#include "frame_visitor.h"\r
 \r
 #include <common/memory/safe_ptr.h>\r
 #include <core/video_format.h>\r
@@ -64,8 +64,7 @@ public:
        void remove_audio();\r
        void remove_image();\r
 \r
-       virtual void process_image(image_mixer& mixer);\r
-       virtual void process_audio(audio_mixer& mixer);\r
+       virtual void accept(frame_visitor& visitor);\r
 \r
        void set_layer_index(int index);\r
        int get_layer_index() const;\r
similarity index 91%
rename from mixer/frame_factory.h
rename to mixer/frame/frame_factory.h
index c6dccf5e6e73b37c14cc0eaaf65e5e035924ac32..31cb26624c76e3bc293878b23546359334fce721 100644 (file)
 */\r
 #pragma once\r
 \r
-#include "fwd.h"\r
+#include "../fwd.h"\r
 \r
-#include "frame/write_frame.h"\r
-#include "frame/pixel_format.h"\r
+#include "pixel_format.h"\r
 \r
 #include <common/memory/safe_ptr.h>\r
 \r
+#include <core/video_format.h>\r
+\r
 namespace caspar { namespace core {\r
-       \r
+               \r
 struct frame_factory : boost::noncopyable\r
 {\r
        virtual safe_ptr<write_frame> create_frame(const pixel_format_desc& desc) = 0;\r
diff --git a/mixer/frame/frame_visitor.h b/mixer/frame/frame_visitor.h
new file mode 100644 (file)
index 0000000..f7d48a9
--- /dev/null
@@ -0,0 +1,15 @@
+#pragma once\r
+\r
+namespace caspar{ namespace core{\r
+\r
+class draw_frame;\r
+class write_frame;\r
+\r
+struct frame_visitor\r
+{\r
+       virtual void begin(const draw_frame& frame) = 0;\r
+       virtual void visit(write_frame& frame) = 0;\r
+       virtual void end() = 0;\r
+};\r
+\r
+}}
\ No newline at end of file
index 7869b45f2761be166dbb4bef0e26cd26dd0fcd26..b90c3e8c97fd838c9792b73bded39a157f8da4c5 100644 (file)
@@ -18,31 +18,22 @@ namespace caspar { namespace core {
                                                                                                                                                                                                                                                                                                                        \r
 struct write_frame::implementation : boost::noncopyable\r
 {                              \r
-       write_frame& self_;\r
        std::vector<safe_ptr<host_buffer>> buffers_;\r
        std::vector<short> audio_data_;\r
        const pixel_format_desc desc_;\r
        int tag_;\r
 \r
 public:\r
-       implementation(write_frame& self, const pixel_format_desc& desc, std::vector<safe_ptr<host_buffer>> buffers) \r
-               : self_(self)\r
-               , desc_(desc)\r
+       implementation(const pixel_format_desc& desc, std::vector<safe_ptr<host_buffer>> buffers) \r
+               : desc_(desc)\r
                , buffers_(buffers)\r
                , tag_(std::numeric_limits<int>::min()){}\r
        \r
-       void process_image(image_mixer& mixer)\r
+       void accept(write_frame& self, frame_visitor& visitor)\r
        {\r
-               mixer.begin(self_.get_image_transform());\r
-               mixer.process(desc_, buffers_);\r
-               mixer.end();\r
-       }\r
-\r
-       void process_audio(audio_mixer& mixer)\r
-       {\r
-               mixer.begin(self_.get_audio_transform());\r
-               mixer.process(audio_data_, tag_);\r
-               mixer.end();\r
+               visitor.begin(self);\r
+               visitor.visit(self);\r
+               visitor.end();\r
        }\r
 \r
        boost::iterator_range<unsigned char*> image_data(size_t index)\r
@@ -60,12 +51,8 @@ public:
                return boost::iterator_range<const unsigned char*>(ptr, ptr+buffers_[index]->size());\r
        }\r
 };\r
-\r
-#ifdef _MSC_VER\r
-#pragma warning(disable : 4355) // 'this' : used in base member initializer list\r
-#endif\r
        \r
-write_frame::write_frame(const pixel_format_desc& desc, std::vector<safe_ptr<host_buffer>> buffers) : impl_(new implementation(*this, desc, buffers)){}\r
+write_frame::write_frame(const pixel_format_desc& desc, std::vector<safe_ptr<host_buffer>> buffers) : impl_(new implementation(desc, buffers)){}\r
 write_frame::write_frame(write_frame&& other) : impl_(std::move(other.impl_)){}\r
 void write_frame::swap(write_frame& other){impl_.swap(other.impl_);}\r
 write_frame& write_frame::operator=(write_frame&& other)\r
@@ -74,10 +61,13 @@ write_frame& write_frame::operator=(write_frame&& other)
        temp.swap(*this);\r
        return *this;\r
 }\r
-void write_frame::process_image(image_mixer& mixer){impl_->process_image(mixer);}\r
-void write_frame::process_audio(audio_mixer& mixer){impl_->process_audio(mixer);}\r
+void write_frame::accept(frame_visitor& visitor){impl_->accept(*this, visitor);}\r
 boost::iterator_range<unsigned char*> write_frame::image_data(size_t index){return impl_->image_data(index);}\r
 std::vector<short>& write_frame::audio_data() { return impl_->audio_data_; }\r
+boost::iterator_range<const unsigned char*>  write_frame::image_data(size_t index) const{return impl_->image_data(index);}\r
+const std::vector<short>& write_frame::audio_data() const { return impl_->audio_data_; }\r
 void write_frame::tag(int tag) { impl_->tag_ = tag;}\r
 int write_frame::tag() const {return impl_->tag_;}\r
+const pixel_format_desc& write_frame::get_pixel_format_desc() const{return impl_->desc_;}\r
+std::vector<safe_ptr<host_buffer>>& write_frame::buffers(){return impl_->buffers_;}\r
 }}
\ No newline at end of file
index 7f65668dc036ead0a5673907c0e506fd57c0aa65..b60baea513e0147c117407e0e711c9e392592e2d 100644 (file)
@@ -29,12 +29,17 @@ public:
                \r
        boost::iterator_range<unsigned char*> image_data(size_t index = 0);     \r
        std::vector<short>& audio_data();\r
+       \r
+       boost::iterator_range<const unsigned char*> image_data(size_t index = 0) const;\r
+       const std::vector<short>& audio_data() const;\r
 \r
-       virtual void process_image(image_mixer& mixer);\r
-       virtual void process_audio(audio_mixer& mixer);\r
+       virtual void accept(frame_visitor& visitor);\r
 \r
        void tag(int tag);\r
        int tag() const;\r
+\r
+       const pixel_format_desc& get_pixel_format_desc() const;\r
+       std::vector<safe_ptr<host_buffer>>& buffers();\r
        \r
 private:\r
        struct implementation;\r
index c6bfce7913cffe4849aa831f7ac51dcadd98eadf..864ad6ac697a9b23c55ea6b310ab618d0db1e7c8 100644 (file)
@@ -112,15 +112,15 @@ public:
                                frame2->get_image_transform() = root_image_transform_.fetch_and_tick(1)*image_transforms_[frame->get_layer_index()].fetch_and_tick(1);\r
 \r
                                if(frame1->get_image_transform() != frame2->get_image_transform())\r
-                                       draw_frame::interlace(frame1, frame2, format_desc_.mode)->process_image(image_mixer_);\r
+                                       draw_frame::interlace(frame1, frame2, format_desc_.mode)->accept(image_mixer_);\r
                                else\r
-                                       frame2->process_image(image_mixer_);\r
+                                       frame2->accept(image_mixer_);\r
                        }\r
                        else\r
                        {\r
                                auto frame1 = make_safe<draw_frame>(frame);\r
                                frame1->get_image_transform() = root_image_transform_.fetch_and_tick(1)*image_transforms_[frame->get_layer_index()].fetch_and_tick(1);\r
-                               frame1->process_image(image_mixer_);\r
+                               frame1->accept(image_mixer_);\r
                        }\r
                }\r
                image_mixer_.end_pass();\r
@@ -136,7 +136,7 @@ public:
 \r
                        auto frame1 = make_safe<draw_frame>(frame);\r
                        frame1->get_audio_transform() = root_audio_transform_.fetch_and_tick(num)*audio_transforms_[frame->get_layer_index()].fetch_and_tick(num);\r
-                       frame1->process_audio(audio_mixer_);\r
+                       frame1->accept(audio_mixer_);\r
                }\r
                audio_mixer_.end_pass();\r
                return audio;\r
index 30287885a917af56fda63838c8b56ac1bc9f69b2..536295c31fb10557427e6955217c1c12ec89fa43 100644 (file)
@@ -21,7 +21,7 @@
 \r
 #include "fwd.h"\r
 \r
-#include "frame_factory.h"\r
+#include "frame/frame_factory.h"\r
 \r
 #include "image/image_mixer.h"\r
 #include "audio/audio_mixer.h"\r
@@ -32,6 +32,8 @@
 #include <common/memory/safe_ptr.h>\r
 #include <common/utility/printer.h>\r
 \r
+#include <core/video_format.h>\r
+\r
 #include <boost/signals2.hpp>\r
 \r
 #include <functional>\r
index 12aad6653584b64a7fd94d60a657e995603daa61..840bb7e5d7d89e1ee6d3a771c0d1cb6c969fa06b 100644 (file)
@@ -4,6 +4,9 @@
 #include "image_kernel.h"\r
 #include "image_transform.h"\r
 \r
+#include "../frame/draw_frame.h"\r
+#include "../frame/write_frame.h"\r
+\r
 #include "../gpu/ogl_device.h"\r
 #include "../gpu/host_buffer.h"\r
 #include "../gpu/device_buffer.h"\r
@@ -68,13 +71,16 @@ public:
                glDeleteFramebuffersEXT(1, &fbo_);\r
        }\r
 \r
-       void begin(const image_transform& transform)\r
+       void begin(const draw_frame& frame)\r
        {\r
-               transform_stack_.push(transform_stack_.top()*transform);\r
+               transform_stack_.push(transform_stack_.top()*frame.get_image_transform());\r
        }\r
                \r
-       void render(const pixel_format_desc& desc, std::vector<safe_ptr<host_buffer>>& buffers)\r
+       void visit(write_frame& frame)\r
        {\r
+               auto& desc = frame.get_pixel_format_desc();\r
+               auto& buffers = frame.buffers();\r
+\r
                auto transform = transform_stack_.top();\r
                context_->begin_invoke([=]\r
                {\r
@@ -155,8 +161,8 @@ public:
 };\r
 \r
 image_mixer::image_mixer(const video_format_desc& format_desc) : impl_(new implementation(format_desc)){}\r
-void image_mixer::begin(const image_transform& transform) {    impl_->begin(transform);}\r
-void image_mixer::process(const pixel_format_desc& desc, std::vector<safe_ptr<host_buffer>>& buffers){ impl_->render(desc, buffers);}\r
+void image_mixer::begin(const draw_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<const host_buffer>> image_mixer::begin_pass(){   return impl_->begin_pass();}\r
 void image_mixer::end_pass(){impl_->end_pass();}\r
index 075b7dcf3f94f958b920da0ea554e061e9095475..3b3ae6461c7a41ab6e3e6dd07830f88a72df296d 100644 (file)
@@ -1,5 +1,7 @@
 #pragma once\r
 \r
+#include "../frame/frame_visitor.h"\r
+\r
 #include "../gpu/host_buffer.h"\r
 \r
 #include <core/video_format.h>\r
@@ -15,14 +17,14 @@ namespace caspar { namespace core {
 struct pixel_format_desc;      \r
 class image_transform;\r
 \r
-class image_mixer : boost::noncopyable\r
+class image_mixer : public frame_visitor, boost::noncopyable\r
 {\r
 public:\r
        image_mixer(const video_format_desc& format_desc);\r
-\r
-       void begin(const image_transform& transform);\r
-       void process(const pixel_format_desc& desc, std::vector<safe_ptr<host_buffer>>& buffers);\r
-       void end();\r
+       \r
+       virtual void begin(const draw_frame& frame);\r
+       virtual void visit(write_frame& frame);\r
+       virtual void end();\r
 \r
        boost::unique_future<safe_ptr<const host_buffer>> begin_pass();\r
        void end_pass();\r
index 996b7f980c8754dd6d36b5bd572d9a01a07a05b1..8821dccc3423a79d865bbf7b2d03f4a42518e2c8 100644 (file)
     <ClInclude Include="audio\audio_mixer.h" />\r
     <ClInclude Include="audio\audio_transform.h" />\r
     <ClInclude Include="frame\draw_frame.h" />\r
+    <ClInclude Include="frame\frame_factory.h" />\r
+    <ClInclude Include="frame\frame_visitor.h" />\r
     <ClInclude Include="frame\pixel_format.h" />\r
     <ClInclude Include="frame\read_frame.h" />\r
     <ClInclude Include="frame\write_frame.h" />\r
-    <ClInclude Include="frame_factory.h" />\r
     <ClInclude Include="frame_mixer_device.h" />\r
     <ClInclude Include="fwd.h" />\r
     <ClInclude Include="gpu\device_buffer.h" />\r
index b805e6770fbb12fa5091fc3ab83b199d6a30ac60..4aa932ef4b8b591dfa8cf0051b8fb7fb0f914135 100644 (file)
@@ -36,9 +36,6 @@
     <ClCompile Include="frame\write_frame.cpp">\r
       <Filter>frame</Filter>\r
     </ClCompile>\r
-    <ClCompile Include="frame\draw_frame.cpp">\r
-      <Filter>frame</Filter>\r
-    </ClCompile>\r
     <ClCompile Include="frame_mixer_device.cpp" />\r
     <ClCompile Include="StdAfx.cpp" />\r
     <ClCompile Include="image\image_kernel.cpp">\r
@@ -50,6 +47,9 @@
     <ClCompile Include="image\image_transform.cpp">\r
       <Filter>image</Filter>\r
     </ClCompile>\r
+    <ClCompile Include="frame\draw_frame.cpp">\r
+      <Filter>frame</Filter>\r
+    </ClCompile>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ClInclude Include="audio\audio_mixer.h">\r
@@ -67,9 +67,6 @@
     <ClInclude Include="gpu\ogl_device.h">\r
       <Filter>gpu</Filter>\r
     </ClInclude>\r
-    <ClInclude Include="frame\draw_frame.h">\r
-      <Filter>frame</Filter>\r
-    </ClInclude>\r
     <ClInclude Include="frame\pixel_format.h">\r
       <Filter>frame</Filter>\r
     </ClInclude>\r
@@ -80,7 +77,6 @@
       <Filter>frame</Filter>\r
     </ClInclude>\r
     <ClInclude Include="StdAfx.h" />\r
-    <ClInclude Include="frame_factory.h" />\r
     <ClInclude Include="frame_mixer_device.h" />\r
     <ClInclude Include="fwd.h" />\r
     <ClInclude Include="image\image_transform.h">\r
     <ClInclude Include="image\image_mixer.h">\r
       <Filter>image</Filter>\r
     </ClInclude>\r
+    <ClInclude Include="frame\frame_visitor.h">\r
+      <Filter>frame</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="frame\draw_frame.h">\r
+      <Filter>frame</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="frame\frame_factory.h">\r
+      <Filter>frame</Filter>\r
+    </ClInclude>\r
   </ItemGroup>\r
 </Project>
\ No newline at end of file
index 6b15fc41d6d6a884e55b8eee66c2deec418411a0..0cb880a39b585da066305f71c9c1ba7ddebcde9e 100644 (file)
@@ -22,7 +22,6 @@
 \r
 #include "decklink_producer.h"\r
 \r
-#include <mixer/frame/draw_frame.h>\r
 #include "../interop/DeckLinkAPI_h.h" // TODO: Change this\r
 #include "../util/util.h" // TODO: Change this\r
 \r
@@ -31,6 +30,8 @@
 #include <common/exception/exceptions.h>\r
 #include <common/utility/timer.h>\r
 \r
+#include <mixer/frame/write_frame.h>\r
+\r
 #include <tbb/concurrent_queue.h>\r
 #include <tbb/atomic.h>\r
 \r
index 6b29311dfb10dc97bb8ebe3d1eb2b26234f403c4..e5c05b66281039ff275c2e2e259bc3f608bc2f55 100644 (file)
@@ -31,8 +31,8 @@
 \r
 #include <core/video_format.h>\r
 \r
-#include <mixer/frame/draw_frame.h>\r
-#include <mixer/frame_factory.h>\r
+#include <mixer/frame/write_frame.h>\r
+#include <mixer/frame/frame_factory.h>\r
 \r
 #include <common/concurrency/executor.h>\r
 #include <common/env.h>\r