]> git.sesse.net Git - casparcg/blobdiff - modules/ffmpeg/producer/util.cpp
2.0. Fixed rendering stalls caused by ogl frame allocation delays.
[casparcg] / modules / ffmpeg / producer / util.cpp
index 1baa868b25c1c6861e260538ba8ae2fedb32d348..2a2595680536ea0097dcf1aa7c3a40291f229087 100644 (file)
@@ -140,7 +140,7 @@ safe_ptr<core::write_frame> make_write_frame(const void* tag, const safe_ptr<AVF
        {\r
                auto pix_fmt = static_cast<PixelFormat>(decoded_frame->format);\r
 \r
-               auto write = frame_factory->create_frame(tag, desc.pix_fmt != core::pixel_format::invalid ? desc : get_pixel_format_desc(PIX_FMT_BGRA, width, height));\r
+               auto write = frame_factory->create_frame(tag, get_pixel_format_desc(PIX_FMT_BGRA, width, height));\r
                write->set_type(get_mode(*decoded_frame));\r
 \r
                std::shared_ptr<SwsContext> sws_context;\r
@@ -253,7 +253,7 @@ void fix_meta_data(AVFormatContext& context)
                        }\r
                }\r
 \r
-               if(audio_index > -1)\r
+               if(audio_index > -1) // Check for invalid double frame-rate\r
                {\r
                        auto& audio_context = *context.streams[audio_index]->codec;\r
                        auto& audio_stream  = *context.streams[audio_index];\r
@@ -264,7 +264,7 @@ void fix_meta_data(AVFormatContext& context)
                        double fps_nb_frames    = static_cast<double>(duration_sec*fps);\r
                        double stream_nb_frames =  static_cast<double>(video_stream.nb_frames);\r
                        double diff = std::abs(fps_nb_frames - stream_nb_frames*2.0);\r
-                       if(diff < fps_nb_frames*0.01)\r
+                       if(diff < fps_nb_frames*0.05)\r
                                video_context.time_base.num *= 2;\r
                }\r
        }\r