]> git.sesse.net Git - casparcg/commitdiff
ffmpeg_producer: Fixed bug in colorconversion for non-hardware accelerated colorspaces.
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Fri, 23 Mar 2012 07:24:56 +0000 (07:24 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Fri, 23 Mar 2012 07:24:56 +0000 (07:24 +0000)
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/trunk@2717 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d

modules/ffmpeg/producer/util/util.cpp

index 496654f8c022cc5f8503bc58799142407adf0024..7885635750a6b1cfea1538c07110faba12038efc 100644 (file)
@@ -173,7 +173,7 @@ int make_alpha_format(int format)
 \r
 safe_ptr<core::write_frame> make_write_frame(const void* tag, const safe_ptr<AVFrame>& decoded_frame, const safe_ptr<core::frame_factory>& frame_factory, int hints)\r
 {                      \r
-       static tbb::concurrent_unordered_map<size_t, tbb::concurrent_queue<std::shared_ptr<SwsContext>>> sws_contexts_;\r
+       static tbb::concurrent_unordered_map<int64_t, tbb::concurrent_queue<std::shared_ptr<SwsContext>>> sws_contexts_;\r
        \r
        if(decoded_frame->width < 1 || decoded_frame->height < 1)\r
                return make_safe<core::write_frame>(tag);\r
@@ -213,8 +213,11 @@ safe_ptr<core::write_frame> make_write_frame(const void* tag, const safe_ptr<AVF
                std::shared_ptr<SwsContext> sws_context;\r
 \r
                //CASPAR_LOG(warning) << "Hardware accelerated color transform not supported.";\r
-\r
-               size_t key = ((width << 22) & 0xFFC00000) | ((height << 6) & 0x003FC000) | ((pix_fmt << 7) & 0x00007F00) | ((target_pix_fmt << 0) & 0x0000007F);\r
+               \r
+               int64_t key = ((static_cast<int64_t>(width)                      << 32) & 0xFFFF00000000) | \r
+                                         ((static_cast<int64_t>(height)                 << 16) & 0xFFFF0000) | \r
+                                         ((static_cast<int64_t>(pix_fmt)                <<  8) & 0xFF00) | \r
+                                         ((static_cast<int64_t>(target_pix_fmt) <<  0) & 0xFF);\r
                        \r
                auto& pool = sws_contexts_[key];\r
                                                \r