3 #include <common/memory/safe_ptr.h>
\r
5 #include <boost/noncopyable.hpp>
\r
6 #include <boost/algorithm/string/case_conv.hpp>
\r
14 namespace caspar { namespace ffmpeg {
\r
16 static bool is_double_rate(const std::wstring& filters)
\r
18 if(boost::to_upper_copy(filters).find(L"YADIF=1") != std::string::npos)
\r
21 if(boost::to_upper_copy(filters).find(L"YADIF=3") != std::string::npos)
\r
27 static bool is_deinterlacing(const std::wstring& filters)
\r
29 if(boost::to_upper_copy(filters).find(L"YADIF") != std::string::npos)
\r
34 static std::wstring append_filter(const std::wstring& filters, const std::wstring& filter)
\r
36 return filters + (filters.empty() ? L"" : L",") + filter;
\r
39 class filter : boost::noncopyable
\r
42 filter(const std::wstring& filters = L"", const std::vector<PixelFormat>& pix_fmts = std::vector<PixelFormat>());
\r
43 filter(filter&& other);
\r
44 filter& operator=(filter&& other);
\r
46 void push(const std::shared_ptr<AVFrame>& frame);
\r
47 std::shared_ptr<AVFrame> poll();
\r
48 std::vector<safe_ptr<AVFrame>> poll_all();
\r
50 std::string filter_str() const;
\r
53 struct implementation;
\r
54 safe_ptr<implementation> impl_;
\r