]> git.sesse.net Git - casparcg/blob - modules/ffmpeg/producer/filter/filter.h
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches...
[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 <boost/noncopyable.hpp>\r
6 \r
7 #include <string>\r
8 #include <vector>\r
9 \r
10 struct AVFrame;\r
11 enum PixelFormat;\r
12 \r
13 namespace caspar { namespace ffmpeg {\r
14                 \r
15 static bool is_double_rate(const std::wstring& filters)\r
16 {\r
17         if(filters.find(L"YADIF=1") != std::string::npos)\r
18                 return true;\r
19         \r
20         if(filters.find(L"YADIF=3") != std::string::npos)\r
21                 return true;\r
22 \r
23         return false;\r
24 }\r
25 \r
26 static bool is_deinterlacing(const std::wstring& filters)\r
27 {\r
28         if(filters.find(L"YADIF") != std::string::npos)\r
29                 return true;    \r
30         return false;\r
31 }\r
32 \r
33 class filter : boost::noncopyable\r
34 {\r
35 public:\r
36         filter(const std::wstring& filters = L"", const std::vector<PixelFormat>& pix_fmts = std::vector<PixelFormat>());\r
37         filter(filter&& other);\r
38         filter& operator=(filter&& other);\r
39 \r
40         void push(const std::shared_ptr<AVFrame>& frame);\r
41         std::shared_ptr<AVFrame> poll();\r
42         std::vector<safe_ptr<AVFrame>> poll_all();\r
43 \r
44         std::string filter_str() const;\r
45         \r
46 private:\r
47         struct implementation;\r
48         safe_ptr<implementation> impl_;\r
49 };\r
50 \r
51 }}