]> git.sesse.net Git - casparcg/blobdiff - modules/ffmpeg/producer/filter/parallel_yadif.cpp
2.0. parallel_yadif: Disable for % 64 != 0.
[casparcg] / modules / ffmpeg / producer / filter / parallel_yadif.cpp
index b467bfae0e9cf694ecdae1759cc21270ccfd15e3..919528ca0448907bba4c76f9d74bab43cbba64e9 100644 (file)
@@ -105,14 +105,17 @@ void return_parallel_yadif(void* func)
                parallel_line_func_pool.push(reinterpret_cast<decltype(fs[0])>(func));\r
 }\r
 \r
-std::shared_ptr<void> make_parallel_yadif(AVFilterContext* ctx)\r
+std::shared_ptr<void> make_parallel_yadif(AVFilterContext* ctx, size_t height)\r
 {\r
+       if(height % 64 != 0)\r
+               return std::shared_ptr<void>(nullptr, return_parallel_yadif);\r
+\r
        static boost::once_flag flag = BOOST_ONCE_INIT;\r
        boost::call_once(&init_pool, flag);\r
 \r
        YADIFContext* yadif = (YADIFContext*)ctx->priv;\r
        org_yadif_filter_line = yadif->filter_line; // Data race is not a problem.\r
-\r
+       \r
        decltype(org_yadif_filter_line) func = nullptr;\r
        if(!parallel_line_func_pool.try_pop(func))      \r
                CASPAR_LOG(warning) << "Not enough scalable-yadif context instances. Running non-scalable";\r