From 66c86e9c91efd8a57c917d0f3eabdaf274beb67a Mon Sep 17 00:00:00 2001 From: ronag Date: Sat, 24 Mar 2012 20:31:50 +0000 Subject: [PATCH] git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches/2.1.0@2735 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d --- accelerator/cpu/image/image_mixer.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/accelerator/cpu/image/image_mixer.cpp b/accelerator/cpu/image/image_mixer.cpp index d7c26fd8f..45433e991 100644 --- a/accelerator/cpu/image/image_mixer.cpp +++ b/accelerator/cpu/image/image_mixer.cpp @@ -152,8 +152,8 @@ static void kernel(uint8_t* dest, const uint8_t* source, size_t count) class image_renderer { - tbb::concurrent_unordered_map>> sws_devices_; - tbb::concurrent_bounded_queue> temp_buffers_; + tbb::concurrent_unordered_map>> sws_devices_; + tbb::concurrent_bounded_queue> temp_buffers_; public: boost::unique_future> operator()(std::vector items, const core::video_format_desc& format_desc) { @@ -257,9 +257,12 @@ private: data2.at(n) = const_cast(data[n]); auto input_av_frame = ffmpeg::make_av_frame(data2, pix_desc); - - int key = ((input_av_frame->width << 22) & 0xFFC00000) | ((input_av_frame->height << 6) & 0x003FC000) | ((input_av_frame->format << 7) & 0x00007F00); - + + + int64_t key = ((static_cast(input_av_frame->width) << 32) & 0xFFFF00000000) | + ((static_cast(input_av_frame->height) << 16) & 0xFFFF0000) | + ((static_cast(input_av_frame->format) << 8) & 0xFF00); + auto& pool = sws_devices_[key]; std::shared_ptr sws_device; -- 2.39.5