<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
</ClCompile>\r
- <ClCompile Include="producer\filter\scalable_yadif.cpp">\r
+ <ClCompile Include="producer\filter\parallel_yadif.cpp">\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
<ClInclude Include="producer\audio\audio_decoder.h" />\r
<ClInclude Include="producer\ffmpeg_producer.h" />\r
<ClInclude Include="producer\filter\filter.h" />\r
- <ClInclude Include="producer\filter\scalable_yadif.h" />\r
+ <ClInclude Include="producer\filter\parallel_yadif.h" />\r
<ClInclude Include="producer\frame_muxer.h" />\r
<ClInclude Include="producer\input.h" />\r
<ClInclude Include="producer\util.h" />\r
\r
#include "filter.h"\r
\r
-#include "scalable_yadif.h"\r
+#include "parallel_yadif.h"\r
\r
#include "../../ffmpeg_error.h"\r
\r
std::shared_ptr<AVFilterGraph> graph_; \r
AVFilterContext* buffersink_ctx_;\r
AVFilterContext* buffersrc_ctx_;\r
- int scalable_yadif_tag_;\r
+ int parallel_yadif_tag_;\r
\r
implementation(const std::wstring& filters) \r
: filters_(filters.empty() ? "null" : narrow(filters))\r
- , scalable_yadif_tag_(-1)\r
+ , parallel_yadif_tag_(-1)\r
{\r
std::transform(filters_.begin(), filters_.end(), filters_.begin(), ::tolower);\r
}\r
\r
~implementation()\r
{\r
- release_scalable_yadif(scalable_yadif_tag_);\r
+ uninit_parallel_yadif(parallel_yadif_tag_);\r
}\r
\r
std::vector<safe_ptr<AVFrame>> execute(const std::shared_ptr<AVFrame>& frame)\r
{\r
auto filter_name = graph_->filters[n]->name;\r
if(strstr(filter_name, "yadif") != 0)\r
- scalable_yadif_tag_ = make_scalable_yadif(graph_->filters[n]);\r
+ parallel_yadif_tag_ = init_parallel_yadif(graph_->filters[n]);\r
}\r
}\r
\r
#include "../../StdAfx.h"\r
\r
-#include "scalable_yadif.h"\r
+#include "parallel_yadif.h"\r
\r
extern "C" \r
{\r
//const AVPixFmtDescriptor *csp;\r
} YADIFContext;\r
\r
-struct scalable_yadif_context\r
+struct parallel_yadif_context\r
{\r
struct arg\r
{\r
arg args[64];\r
int index;\r
\r
- scalable_yadif_context() : index(0){}\r
+ parallel_yadif_context() : index(0){}\r
};\r
\r
void (*org_yadif_filter_line)(uint8_t *dst, uint8_t *prev, uint8_t *cur, uint8_t *next, int w, int prefs, int mrefs, int parity, int mode) = 0;\r
\r
-void scalable_yadif_filter_line(scalable_yadif_context& ctx, uint8_t *dst, uint8_t *prev, uint8_t *cur, uint8_t *next, int w, int prefs, int mrefs, int parity, int mode)\r
+void parallel_yadif_filter_line(parallel_yadif_context& ctx, uint8_t *dst, uint8_t *prev, uint8_t *cur, uint8_t *next, int w, int prefs, int mrefs, int parity, int mode)\r
{\r
- scalable_yadif_context::arg arg = {dst, prev, cur, next, w, prefs, mrefs, parity, mode};\r
+ parallel_yadif_context::arg arg = {dst, prev, cur, next, w, prefs, mrefs, parity, mode};\r
ctx.args[ctx.index++] = arg;\r
\r
if(ctx.index == 64)\r
#define ff(x) \\r
void RENAME(x)(uint8_t *dst, uint8_t *prev, uint8_t *cur, uint8_t *next, int w, int prefs, int mrefs, int parity, int mode) \\r
{\\r
- static scalable_yadif_context ctx;\\r
- scalable_yadif_filter_line(ctx, dst, prev, cur, next, w, prefs, mrefs, parity, mode);\\r
+ static parallel_yadif_context ctx;\\r
+ parallel_yadif_filter_line(ctx, dst, prev, cur, next, w, prefs, mrefs, parity, mode);\\r
}\r
\r
ff(0); ff(1); ff(2); ff(3); ff(4); ff(5); ff(6); ff(7); ff(8); ff(9); ff(10); ff(11); ff(12); ff(13); ff(14); ff(15); ff(16); ff(17);\r
\r
tbb::concurrent_bounded_queue<int> tags;\r
\r
-void init()\r
+void init_pool()\r
{\r
for(int n = 0; n < 18; ++n)\r
tags.push(n);\r
}\r
\r
-int make_scalable_yadif(AVFilterContext* ctx)\r
+int init(AVFilterContext* ctx)\r
{\r
static boost::once_flag flag = BOOST_ONCE_INIT;\r
- boost::call_once(&init, flag);\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
return tag;\r
}\r
\r
-void release_scalable_yadif(int tag)\r
+void uninit(int tag)\r
{\r
if(tag != -1)\r
tags.push(tag);\r