]> git.sesse.net Git - casparcg/blobdiff - modules/ffmpeg/producer/muxer/display_mode.h
[ffmpeg] Ported 2.0.7 ffmpeg producer to 2.1.0 while still keeping the usage of the...
[casparcg] / modules / ffmpeg / producer / muxer / display_mode.h
index 3a469d8e122da656b08851eb5a2f2de2f0d972f5..4e3882a4bcb72aafd2e3745f821366ba8ba6e686 100644 (file)
@@ -30,13 +30,7 @@ namespace caspar { namespace ffmpeg {
 enum class display_mode
 {
        simple,
-       duplicate,
-       half,
-       interlace,
        deinterlace_bob,
-       deinterlace_bob_reinterlace,
-       deinterlace,
-       count,
        invalid
 };
 
@@ -46,65 +40,14 @@ std::basic_ostream< CharT, TraitsT >& operator<< (std::basic_ostream<CharT, Trai
        switch(value)
        {
        case display_mode::simple:                                              return o << L"simple";
-       case display_mode::duplicate:                                   return o << L"duplicate";
-       case display_mode::half:                                                return o << L"half";
-       case display_mode::interlace:                                   return o << L"interlace";
        case display_mode::deinterlace_bob:                             return o << L"deinterlace_bob";
-       case display_mode::deinterlace_bob_reinterlace: return o << L"deinterlace_bob_reinterlace";
-       case display_mode::deinterlace:                                 return o << L"deinterlace";
        default:                                                                                return o << L"invalid";
        }
 }
 
-static display_mode get_display_mode(const core::field_mode in_mode, double in_fps, const core::field_mode out_mode, double out_fps)
-{              
-       static const auto epsilon = 2.0;
-
-       if(in_fps < 20.0 || in_fps > 80.0)
-       {
-               //if(out_mode != core::field_mode::progressive && in_mode == core::field_mode::progressive)
-               //      return display_mode::interlace;
-               
-               if(out_mode == core::field_mode::progressive && in_mode != core::field_mode::progressive)
-               {
-                       if(in_fps < 35.0)
-                               return display_mode::deinterlace;
-                       else
-                               return display_mode::deinterlace_bob;
-               }
-       }
-
-       if(std::abs(in_fps - out_fps) < epsilon)
-       {
-               if(in_mode != core::field_mode::progressive && out_mode == core::field_mode::progressive)
-                       return display_mode::deinterlace;
-               //else if(in_mode == core::field_mode::progressive && out_mode != core::field_mode::progressive)
-               //      simple(); // interlace_duplicate();
-               else
-                       return display_mode::simple;
-       }
-       else if(std::abs(in_fps/2.0 - out_fps) < epsilon)
-       {
-               if(in_mode != core::field_mode::progressive)
-                       return display_mode::invalid;
-
-               if(out_mode != core::field_mode::progressive)
-                       return display_mode::interlace;
-               else
-                       return display_mode::half;
-       }
-       else if(std::abs(in_fps - out_fps/2.0) < epsilon)
-       {
-               if(out_mode != core::field_mode::progressive)
-                       return display_mode::invalid;
-
-               if(in_mode != core::field_mode::progressive)
-                       return display_mode::deinterlace_bob;
-               else
-                       return display_mode::duplicate;
-       }
-
-       return display_mode::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