]> 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>
Sat, 24 Mar 2012 20:31:50 +0000 (20:31 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Sat, 24 Mar 2012 20:31:50 +0000 (20:31 +0000)
accelerator/cpu/image/image_mixer.cpp

index d7c26fd8fa618a3e997b08b885a0c94c620c8b81..45433e991ee0f316605012ff93fbafdbf02f3308 100644 (file)
@@ -152,8 +152,8 @@ static void kernel(uint8_t* dest, const uint8_t* source, size_t count)
 \r
 class image_renderer\r
 {\r
-       tbb::concurrent_unordered_map<int, tbb::concurrent_bounded_queue<std::shared_ptr<SwsContext>>>  sws_devices_;\r
-       tbb::concurrent_bounded_queue<spl::shared_ptr<buffer>>                                                                                  temp_buffers_;\r
+       tbb::concurrent_unordered_map<int64_t, tbb::concurrent_bounded_queue<std::shared_ptr<SwsContext>>>      sws_devices_;\r
+       tbb::concurrent_bounded_queue<spl::shared_ptr<buffer>>                                                                                          temp_buffers_;\r
 public:        \r
        boost::unique_future<array<const std::uint8_t>> operator()(std::vector<item> items, const core::video_format_desc& format_desc)\r
        {       \r
@@ -257,9 +257,12 @@ private:
                                data2.at(n) = const_cast<uint8_t*>(data[n]);\r
 \r
                        auto input_av_frame = ffmpeg::make_av_frame(data2, pix_desc);\r
-                                                               \r
-                       int key = ((input_av_frame->width << 22) & 0xFFC00000) | ((input_av_frame->height << 6) & 0x003FC000) | ((input_av_frame->format << 7) & 0x00007F00);\r
-                                               \r
+\r
+               \r
+                       int64_t key = ((static_cast<int64_t>(input_av_frame->width)      << 32) & 0xFFFF00000000) | \r
+                                                 ((static_cast<int64_t>(input_av_frame->height) << 16) & 0xFFFF0000) | \r
+                                                 ((static_cast<int64_t>(input_av_frame->format) <<  8) & 0xFF00);\r
+\r
                        auto& pool = sws_devices_[key];\r
 \r
                        std::shared_ptr<SwsContext> sws_device;\r