From: ronag Date: Fri, 26 Aug 2011 10:16:16 +0000 (+0000) Subject: git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches... X-Git-Tag: 2.0.1~52 X-Git-Url: https://git.sesse.net/?p=casparcg;a=commitdiff_plain;h=3374990d131089eb0e773c9281a274949352286e git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches/2.0.0.2@1292 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d --- diff --git a/core/mixer/audio/audio_mixer.cpp b/core/mixer/audio/audio_mixer.cpp index a241ad397..a899d949c 100644 --- a/core/mixer/audio/audio_mixer.cpp +++ b/core/mixer/audio/audio_mixer.cpp @@ -40,14 +40,10 @@ struct audio_item struct audio_mixer::implementation { - std::stack transform_stack_; - - std::map prev_frame_transforms_; - std::map next_frame_transforms_; - - const core::video_format_desc format_desc_; - - std::vector items; + std::stack transform_stack_; + std::map prev_frame_transforms_; + const core::video_format_desc format_desc_; + std::vector items; public: implementation(const core::video_format_desc& format_desc) @@ -96,6 +92,8 @@ public: { auto result = std::vector(format_desc_.audio_samples_per_frame); + std::map next_frame_transforms; + BOOST_FOREACH(auto& item, items) { const auto next = item.transform; @@ -105,7 +103,7 @@ public: if(it != prev_frame_transforms_.end()) prev = it->second; - next_frame_transforms_[item.tag] = next; // Store all active tags, inactive tags will be removed at the end. + next_frame_transforms[item.tag] = next; // Store all active tags, inactive tags will be removed at the end. if(next.volume < 0.001 && prev.volume < 0.001) continue; @@ -139,7 +137,7 @@ public: } items.clear(); - prev_frame_transforms_ = std::move(next_frame_transforms_); + prev_frame_transforms_ = std::move(next_frame_transforms); return std::move(result); } diff --git a/core/mixer/image/image_mixer.cpp b/core/mixer/image/image_mixer.cpp index b754e28e8..a93bcd8de 100644 --- a/core/mixer/image/image_mixer.cpp +++ b/core/mixer/image/image_mixer.cpp @@ -60,9 +60,9 @@ typedef std::pair> layer; class image_renderer { ogl_device& ogl_; - video_format_desc format_desc_; + const video_format_desc format_desc_; image_kernel kernel_; - std::shared_ptr active_buffer_; + std::shared_ptr transferring_buffer_; public: image_renderer(ogl_device& ogl, const video_format_desc& format_desc) : ogl_(ogl) @@ -70,7 +70,7 @@ public: { } - boost::unique_future> render(std::vector&& layers) + boost::unique_future> operator()(std::vector&& layers) { auto layers2 = make_move_on_copy(std::move(layers)); return ogl_.begin_invoke([=] @@ -113,7 +113,7 @@ private: ogl_.attach(*draw_buffer); host_buffer->begin_read(draw_buffer->width(), draw_buffer->height(), format(draw_buffer->stride())); - active_buffer_ = std::move(draw_buffer); + transferring_buffer_ = std::move(draw_buffer); ogl_.flush(); // NOTE: This is important, otherwise fences will deadlock. @@ -278,7 +278,7 @@ public: boost::unique_future> render() { - return renderer_.render(std::move(layers_)); + return renderer_(std::move(layers_)); } safe_ptr create_frame(const void* tag, const pixel_format_desc& desc)