]> git.sesse.net Git - casparcg/commitdiff
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches...
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Sun, 23 Oct 2011 11:33:29 +0000 (11:33 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Sun, 23 Oct 2011 11:33:29 +0000 (11:33 +0000)
core/mixer/image/image_mixer.cpp
core/mixer/image/image_mixer.h
core/mixer/mixer.cpp
core/mixer/mixer.h
core/producer/frame/frame_factory.h
modules/ffmpeg/producer/frame_muxer.cpp
modules/flash/producer/flash_producer.cpp

index 361d062055b9c9706d14eccccf23b9d2fb0ee22a..7a76a05e5767ac5969240f965b71a72910d9fec4 100644 (file)
@@ -285,7 +285,7 @@ public:
                return make_safe<write_frame>(ogl_, tag, desc);\r
        }\r
 \r
-       boost::unique_future<safe_ptr<write_frame>> create_frame2(const void* tag, const pixel_format_desc& desc)\r
+       boost::unique_future<safe_ptr<write_frame>> async_create_frame(const void* tag, const pixel_format_desc& desc)\r
        {\r
                return ogl_.begin_invoke([=]{return make_safe<write_frame>(ogl_, tag, desc);}, high_priority);\r
        }\r
@@ -297,7 +297,7 @@ void image_mixer::visit(write_frame& frame){impl_->visit(frame);}
 void image_mixer::end(){impl_->end();}\r
 boost::unique_future<safe_ptr<host_buffer>> image_mixer::render(){return impl_->render();}\r
 safe_ptr<write_frame> image_mixer::create_frame(const void* tag, const pixel_format_desc& desc){return impl_->create_frame(tag, desc);}\r
-boost::unique_future<safe_ptr<write_frame>> image_mixer::create_frame2(const void* tag, const pixel_format_desc& desc){return impl_->create_frame2(tag, desc);}\r
+boost::unique_future<safe_ptr<write_frame>> image_mixer::async_create_frame(const void* tag, const pixel_format_desc& desc){return impl_->async_create_frame(tag, desc);}\r
 void image_mixer::begin_layer(blend_mode::type blend_mode){impl_->begin_layer(blend_mode);}\r
 void image_mixer::end_layer(){impl_->end_layer();}\r
 image_mixer& image_mixer::operator=(image_mixer&& other)\r
index 436be02499238d64a06e2c0538c02fc5c5997586..62c74b4c70e022cb2b87cc7c339f17395c3b6729 100644 (file)
@@ -53,7 +53,7 @@ public:
        boost::unique_future<safe_ptr<host_buffer>> render();\r
 \r
        safe_ptr<write_frame> create_frame(const void* tag, const pixel_format_desc& format);\r
-       boost::unique_future<safe_ptr<write_frame>> create_frame2(const void* tag, const pixel_format_desc& format);\r
+       boost::unique_future<safe_ptr<write_frame>> async_create_frame(const void* tag, const pixel_format_desc& format);\r
 \r
 private:\r
        struct implementation;\r
index 0b2cf41efe67106e661d0021dad998ca8513bab7..2b9768c858dc4561e3c45c2f625882b587ea1e83 100644 (file)
@@ -152,14 +152,9 @@ public:
                return msg->transfer<safe_ptr<core::read_frame>>(std::move(frame));     \r
        }\r
                                                \r
-       safe_ptr<core::write_frame> create_frame(const void* tag, const core::pixel_format_desc& desc)\r
+       boost::unique_future<safe_ptr<core::write_frame>> async_create_frame(const void* tag, const core::pixel_format_desc& desc)\r
        {               \r
-               return image_mixer_.create_frame(tag, desc);\r
-       }\r
-\r
-       boost::unique_future<safe_ptr<core::write_frame>> create_frame2(const void* tag, const core::pixel_format_desc& desc)\r
-       {               \r
-               return image_mixer_.create_frame2(tag, desc);\r
+               return image_mixer_.async_create_frame(tag, desc);\r
        }\r
                \r
        void set_transform(int index, const frame_transform& transform, unsigned int mix_duration, const std::wstring& tween)\r
@@ -203,8 +198,7 @@ public:
        \r
 mixer::mixer(mixer::source_t& source, mixer::target_t& target, const video_format_desc& format_desc, ogl_device& ogl) : impl_(new implementation(source, target, format_desc, ogl)){}\r
 core::video_format_desc mixer::get_video_format_desc() const { return impl_->format_desc_; }\r
-safe_ptr<core::write_frame> mixer::create_frame(const void* tag, const core::pixel_format_desc& desc){ return impl_->create_frame(tag, desc); }                \r
-boost::unique_future<safe_ptr<write_frame>> mixer::create_frame2(const void* video_stream_tag, const pixel_format_desc& desc){ return impl_->create_frame2(video_stream_tag, desc); }                  \r
+boost::unique_future<safe_ptr<write_frame>> mixer::async_create_frame(const void* video_stream_tag, const pixel_format_desc& desc){ return impl_->async_create_frame(video_stream_tag, desc); }                        \r
 void mixer::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 mixer::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 mixer::clear_transforms(){impl_->clear_transforms();}\r
index 5903e2a4d790bd60a137732749c4c5306cfa4013..f2a5f14ff7c133649fb401739e167a8657d5efd1 100644 (file)
@@ -53,9 +53,8 @@ public:
        typedef Concurrency::ITarget<safe_ptr<message<safe_ptr<core::read_frame>>>>                             target_t;\r
 \r
        explicit mixer(source_t& source, target_t& target, const video_format_desc& format_desc, ogl_device& ogl);\r
-                               \r
-       safe_ptr<core::write_frame> create_frame(const void* tag, const core::pixel_format_desc& desc);                 \r
-       boost::unique_future<safe_ptr<write_frame>> create_frame2(const void* video_stream_tag, const pixel_format_desc& desc);\r
+                                               \r
+       boost::unique_future<safe_ptr<write_frame>> async_create_frame(const void* video_stream_tag, const pixel_format_desc& desc);\r
 \r
        core::video_format_desc get_video_format_desc() const; // nothrow\r
        \r
index ee92e87e0802f5aad4329f54af5c0d9e4688726b..288eefa88ba7d794458a2930145b0a174631c087 100644 (file)
@@ -37,33 +37,9 @@ struct video_format_desc;
                \r
 struct frame_factory : boost::noncopyable\r
 {\r
-       virtual safe_ptr<write_frame> create_frame(const void* video_stream_tag, const pixel_format_desc& desc) = 0;\r
-       virtual safe_ptr<write_frame> create_frame(const void* video_stream_tag, size_t width, size_t height, pixel_format::type pix_fmt = pixel_format::bgra)\r
-       {       \r
-               // Create bgra frame\r
-               core::pixel_format_desc desc;\r
-               desc.pix_fmt = pix_fmt;\r
-               desc.planes.push_back( core::pixel_format_desc::plane(width, height, 4));\r
-               return create_frame(video_stream_tag, desc);\r
-       }\r
-       \r
-       virtual boost::unique_future<safe_ptr<write_frame>> create_frame2(const void* video_stream_tag, const pixel_format_desc& desc) = 0;\r
-\r
-       virtual video_format_desc get_video_format_desc() const = 0; // nothrow\r
-};\r
-       \r
-class concrt_frame_factory : public frame_factory\r
-{      \r
-       safe_ptr<frame_factory> factory_;\r
-public:\r
-       concrt_frame_factory(const safe_ptr<frame_factory>& factory) \r
-               : factory_(factory)\r
-       {\r
-       }\r
-               \r
-       virtual safe_ptr<write_frame> create_frame(const void* tag, const pixel_format_desc& desc)\r
+       safe_ptr<write_frame> create_frame(const void* tag, const pixel_format_desc& desc)\r
        {\r
-               auto frame = factory_->create_frame2(tag, desc);\r
+               auto frame = async_create_frame(tag, desc);\r
 \r
                Concurrency::wait(0);\r
 \r
@@ -75,15 +51,19 @@ public:
                return frame.get();\r
        }\r
 \r
-       virtual boost::unique_future<safe_ptr<write_frame>> create_frame2(const void* video_stream_tag, const pixel_format_desc& desc)\r
-       {\r
-               return factory_->create_frame2(video_stream_tag, desc);\r
+       safe_ptr<write_frame> create_frame(const void* video_stream_tag, size_t width, size_t height, pixel_format::type pix_fmt = pixel_format::bgra)\r
+       {       \r
+               // Create bgra frame\r
+               core::pixel_format_desc desc;\r
+               desc.pix_fmt = pix_fmt;\r
+               desc.planes.push_back( core::pixel_format_desc::plane(width, height, 4));\r
+               return create_frame(video_stream_tag, desc);\r
        }\r
 \r
-       virtual video_format_desc get_video_format_desc() const\r
-       {\r
-               return factory_->get_video_format_desc();\r
-       }\r
+       virtual video_format_desc get_video_format_desc() const = 0; // nothrow\r
+private:\r
+       \r
+       virtual boost::unique_future<safe_ptr<write_frame>> async_create_frame(const void* video_stream_tag, const pixel_format_desc& desc) = 0;\r
 };\r
-\r
+       \r
 }}
\ No newline at end of file
index 208ceedea2407057ef5b977b1be5d55b93047011..86bab74dd415aaf420263ac3c3600ac8ffb48e25 100644 (file)
@@ -153,7 +153,7 @@ struct frame_muxer2::implementation : public Concurrency::agent, boost::noncopya
                , in_fps_(in_fps)\r
                , format_desc_(frame_factory->get_video_format_desc())\r
                , auto_transcode_(env::properties().get("configuration.producers.auto-transcode", false))\r
-               , frame_factory_(make_safe<core::concrt_frame_factory>(frame_factory))\r
+               , frame_factory_(frame_factory)\r
                , push_video_(std::bind(&implementation::push_video, this, std::placeholders::_1))\r
                , push_audio_(std::bind(&implementation::push_audio, this, std::placeholders::_1))\r
        {\r
index e0529031dc7a08856eb6259575171f5ea2da7439..b01e10f6e3926c176744491a38054c4c235d90d2 100644 (file)
@@ -149,7 +149,7 @@ class flash_renderer
 public:\r
        flash_renderer(const safe_ptr<diagnostics::graph>& graph, const safe_ptr<core::frame_factory>& frame_factory, const std::wstring& filename, int width, int height) \r
                : filename_(filename)\r
-               , frame_factory_(make_safe<core::concrt_frame_factory>(frame_factory))\r
+               , frame_factory_(frame_factory)\r
                , graph_(graph)\r
                , ax_(nullptr)\r
                , head_(core::basic_frame::empty())\r