]> git.sesse.net Git - casparcg/commitdiff
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches...
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Sun, 27 Nov 2011 17:30:45 +0000 (17:30 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Sun, 27 Nov 2011 17:30:45 +0000 (17:30 +0000)
modules/ffmpeg/producer/util/util.cpp

index e74fedc4b3e05be2e3cf7bc7fed91f886ed95698..bdbdfea98bb4246e756b68494f0357e7f286dbdf 100644 (file)
@@ -304,9 +304,14 @@ void fix_meta_data(AVFormatContext& context)
        }\r
        else\r
        {\r
+               if(video_stream.nb_frames == 0)\r
+                       video_stream.nb_frames = (video_stream.duration*video_stream.time_base.num)/video_stream.time_base.den;\r
+               \r
                if(video_stream.nb_frames == 0)\r
                        video_stream.nb_frames = video_stream.duration;\r
 \r
+               video_context.time_base.num *= video_context.ticks_per_frame;\r
+\r
                if(!is_sane_fps(video_context.time_base))\r
                {                       \r
                        video_context.time_base = fix_time_base(video_context.time_base);\r
@@ -323,25 +328,25 @@ void fix_meta_data(AVFormatContext& context)
                        }\r
                }\r
 \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
-\r
-                       double duration_sec             = audio_stream.duration / static_cast<double>(audio_context.sample_rate);\r
-                       double fps                              = static_cast<double>(video_context.time_base.den) / static_cast<double>(video_context.time_base.num);\r
-\r
-                       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.05)\r
-                               video_context.time_base.num *= 2;\r
-               }\r
-               else\r
-               {\r
-                       video_context.time_base.den = video_stream.r_frame_rate.num;\r
-                       video_context.time_base.num = video_stream.r_frame_rate.den;\r
-               }\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
+               //      \r
+               //      double duration_sec             = audio_stream.duration / static_cast<double>(audio_context.sample_rate);\r
+               //      double fps                              = static_cast<double>(video_context.time_base.den) / static_cast<double>(video_context.time_base.num);\r
+\r
+               //      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.05)\r
+               //              video_context.time_base.num *= 2;\r
+               //}\r
+               //else\r
+               //{\r
+               //      video_context.time_base.den = video_stream.r_frame_rate.num;\r
+               //      video_context.time_base.num = video_stream.r_frame_rate.den;\r
+               //}\r
        }\r
 \r
        double fps = static_cast<double>(video_context.time_base.den) / static_cast<double>(video_context.time_base.num);\r