]> 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>
Fri, 2 Dec 2011 23:05:38 +0000 (23:05 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Fri, 2 Dec 2011 23:05:38 +0000 (23:05 +0000)
modules/ffmpeg/producer/tbb_avcodec.cpp

index 45760d6f4a61b0a09809c711c1782ac764fc647c..7477794105f8481aff16af76dc0da3bd8c423f22 100644 (file)
@@ -28,16 +28,13 @@ extern "C"
 namespace caspar {\r
                \r
 int thread_execute(AVCodecContext* s, int (*func)(AVCodecContext *c2, void *arg2), void* arg, int* ret, int count, int size)\r
-{\r
-       tbb::parallel_for(tbb::blocked_range<size_t>(0, count), [&](const tbb::blocked_range<size_t>& r)\r
-       {\r
-               for(size_t n = r.begin(); n != r.end(); ++n)            \r
-               {\r
-                       int r = func(s, reinterpret_cast<uint8_t*>(arg) + n*size);\r
-                       if(ret)\r
-                               ret[n] = r;\r
-               }\r
-       });\r
+{
+       tbb::parallel_for(0, count, 1, [&](int i)
+       {
+        int r = func(s, (char*)arg + i*size);
+        if(ret) 
+                       ret[i] = r;
+    });\r
 \r
        return 0;\r
 }\r
@@ -47,7 +44,7 @@ int thread_execute2(AVCodecContext* s, int (*func)(AVCodecContext* c2, void* arg
        tbb::atomic<int> counter;   \r
     counter = 0;   \r
 \r
-       CASPAR_ASSERT(tbb::tbb_thread::hardware_concurrency() < 16);\r
+       CASPAR_VERIFY(tbb::tbb_thread::hardware_concurrency() < 16);\r
        // Note: this will probably only work when tbb::task_scheduler_init::num_threads() < 16.\r
     tbb::parallel_for(tbb::blocked_range<int>(0, count, 2), [&](const tbb::blocked_range<int> &r)    \r
     {   \r
@@ -96,7 +93,7 @@ int tbb_avcodec_open(AVCodecContext* avctx, AVCodec* codec)
        // Some codecs don't like to have multiple multithreaded decoding instances. Only enable for those we know work.\r
        if(std::find(std::begin(supported_codecs), std::end(supported_codecs), codec->id) != std::end(supported_codecs) && \r
          (codec->capabilities & CODEC_CAP_SLICE_THREADS) && \r
-         (avctx->thread_type & FF_THREAD_SLICE))\r
+         (avctx->thread_type & FF_THREAD_SLICE)) \r
        {\r
                thread_init(avctx);\r
        }       \r