]> git.sesse.net Git - casparcg/blob - modules/ffmpeg/producer/filter/filter.h
2.0. filter: Possible to run async with 1 frame extra latency.
[casparcg] / modules / ffmpeg / producer / filter / filter.h
1 #pragma once\r
2 \r
3 #include <common/memory/safe_ptr.h>\r
4 \r
5 #include <string>\r
6 #include <vector>\r
7 \r
8 struct AVFrame;\r
9 \r
10 namespace caspar {\r
11                 \r
12 static bool double_rate(const std::wstring& filters)\r
13 {\r
14         if(filters.find(L"YADIF=1") != std::string::npos)\r
15                 return true;\r
16         \r
17         if(filters.find(L"YADIF=3") != std::string::npos)\r
18                 return true;\r
19 \r
20         return false;\r
21 }\r
22 \r
23 class filter\r
24 {\r
25 public:\r
26         enum flags\r
27         {\r
28                 none = 0,\r
29                 low_latency = 2\r
30         };\r
31 \r
32         filter(const std::wstring& filters, flags filter_flags = none);\r
33 \r
34         std::vector<safe_ptr<AVFrame>> execute(const std::shared_ptr<AVFrame>& frame);\r
35 \r
36 private:\r
37         struct implementation;\r
38         safe_ptr<implementation> impl_;\r
39 };\r
40 \r
41 }