-/*\r
-* Copyright (c) 2011 Sveriges Television AB <info@casparcg.com>\r
-*\r
-* This file is part of CasparCG (www.casparcg.com).\r
-*\r
-* CasparCG is free software: you can redistribute it and/or modify\r
-* it under the terms of the GNU General Public License as published by\r
-* the Free Software Foundation, either version 3 of the License, or\r
-* (at your option) any later version.\r
-*\r
-* CasparCG is distributed in the hope that it will be useful,\r
-* but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
-* GNU General Public License for more details.\r
-*\r
-* You should have received a copy of the GNU General Public License\r
-* along with CasparCG. If not, see <http://www.gnu.org/licenses/>.\r
-*\r
-* Author: Robert Nagy, ronag89@gmail.com\r
-*/\r
-\r
-#pragma once\r
-\r
-#include <core/video_format.h>\r
-\r
-#include <ostream>\r
-\r
-namespace caspar { namespace ffmpeg {\r
- \r
-enum display_mode\r
-{\r
- simple,\r
- duplicate,\r
- half,\r
- interlace,\r
- deinterlace_bob,\r
- deinterlace_bob_reinterlace,\r
- deinterlace,\r
- count,\r
- invalid\r
-};\r
-\r
-template< typename CharT, typename TraitsT >\r
-std::basic_ostream< CharT, TraitsT >& operator<< (std::basic_ostream<CharT, TraitsT>& o, display_mode value)\r
-{ \r
- switch(value)\r
- {\r
- case simple: o << L"simple";\r
- case duplicate: o << L"duplicate";\r
- case half: o << L"half";\r
- case interlace: o << L"interlace";\r
- case deinterlace_bob: o << L"deinterlace_bob";\r
- case deinterlace_bob_reinterlace: o << L"deinterlace_bob_reinterlace";\r
- case deinterlace: o << L"deinterlace";\r
- default: o << L"invalid";\r
- }\r
- return o;\r
-}\r
-\r
-\r
-static display_mode get_display_mode(const core::field_mode in_mode, double in_fps, const core::field_mode out_mode, double out_fps)\r
-{ \r
- static const auto epsilon = 2.0;\r
-\r
- if(in_fps < 20.0 || in_fps > 80.0)\r
- {\r
- //if(out_mode != core::field_mode::progressive && in_mode == core::field_mode::progressive)\r
- // return display_mode::interlace;\r
- \r
- if(out_mode == core::field_mode::progressive && in_mode != core::field_mode::progressive)\r
- {\r
- if(in_fps < 35.0)\r
- return display_mode::deinterlace;\r
- else\r
- return display_mode::deinterlace_bob;\r
- }\r
- }\r
-\r
- if(std::abs(in_fps - out_fps) < epsilon)\r
- {\r
- if(in_mode != core::field_mode::progressive && out_mode == core::field_mode::progressive)\r
- return display_mode::deinterlace;\r
- //else if(in_mode == core::field_mode::progressive && out_mode != core::field_mode::progressive)\r
- // simple(); // interlace_duplicate();\r
- else\r
- return display_mode::simple;\r
- }\r
- else if(std::abs(in_fps/2.0 - out_fps) < epsilon)\r
- {\r
- if(in_mode != core::field_mode::progressive)\r
- return display_mode::invalid;\r
-\r
- if(out_mode != core::field_mode::progressive)\r
- return display_mode::interlace;\r
- else\r
- return display_mode::half;\r
- }\r
- else if(std::abs(in_fps - out_fps/2.0) < epsilon)\r
- {\r
- if(out_mode != core::field_mode::progressive)\r
- return display_mode::invalid;\r
-\r
- if(in_mode != core::field_mode::progressive)\r
- return display_mode::deinterlace_bob;\r
- else\r
- return display_mode::duplicate;\r
- }\r
-\r
- return display_mode::invalid;\r
-}\r
-\r
+/*
+* Copyright (c) 2011 Sveriges Television AB <info@casparcg.com>
+*
+* This file is part of CasparCG (www.casparcg.com).
+*
+* CasparCG is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* CasparCG is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with CasparCG. If not, see <http://www.gnu.org/licenses/>.
+*
+* Author: Robert Nagy, ronag89@gmail.com
+*/
+
+#pragma once
+
+#include <core/video_format.h>
+
+#include <ostream>
+
+namespace caspar { namespace ffmpeg {
+
+enum class display_mode
+{
+ simple,
+ deinterlace_bob,
+ invalid
+};
+
+template< typename CharT, typename TraitsT >
+std::basic_ostream< CharT, TraitsT >& operator<< (std::basic_ostream<CharT, TraitsT>& o, display_mode value)
+{
+ switch(value)
+ {
+ case display_mode::simple: return o << L"simple";
+ case display_mode::deinterlace_bob: return o << L"deinterlace_bob";
+ default: return o << L"invalid";
+ }
+}
+
+static display_mode get_display_mode(const core::field_mode in_mode)
+{
+ return in_mode == core::field_mode::progressive ? display_mode::simple : display_mode::deinterlace_bob;
+}
+
}}
\ No newline at end of file