X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fffmpeg%2Fproducer%2Ffilter%2Fparallel_yadif.cpp;h=919528ca0448907bba4c76f9d74bab43cbba64e9;hb=a9c35446e99247a3445e7c9f1633adcb30f22546;hp=b467bfae0e9cf694ecdae1759cc21270ccfd15e3;hpb=e402caabe8e79efc2f7d9f5167d98b177857e366;p=casparcg diff --git a/modules/ffmpeg/producer/filter/parallel_yadif.cpp b/modules/ffmpeg/producer/filter/parallel_yadif.cpp index b467bfae0..919528ca0 100644 --- a/modules/ffmpeg/producer/filter/parallel_yadif.cpp +++ b/modules/ffmpeg/producer/filter/parallel_yadif.cpp @@ -105,14 +105,17 @@ void return_parallel_yadif(void* func) parallel_line_func_pool.push(reinterpret_cast(func)); } -std::shared_ptr make_parallel_yadif(AVFilterContext* ctx) +std::shared_ptr make_parallel_yadif(AVFilterContext* ctx, size_t height) { + if(height % 64 != 0) + return std::shared_ptr(nullptr, return_parallel_yadif); + static boost::once_flag flag = BOOST_ONCE_INIT; boost::call_once(&init_pool, flag); YADIFContext* yadif = (YADIFContext*)ctx->priv; org_yadif_filter_line = yadif->filter_line; // Data race is not a problem. - + decltype(org_yadif_filter_line) func = nullptr; if(!parallel_line_func_pool.try_pop(func)) CASPAR_LOG(warning) << "Not enough scalable-yadif context instances. Running non-scalable";