mpegvideoparse: Fix FPS and frame duration for telecine files
authorMatej Knopp <matej.knopp@gmail.com>
Sat, 14 Apr 2012 18:53:47 +0000 (20:53 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Mon, 16 Apr 2012 06:42:02 +0000 (08:42 +0200)
gst/videoparsers/gstmpegvideoparse.c

index 9bb046e..5b6a572 100644 (file)
@@ -283,7 +283,7 @@ gst_mpegv_parse_process_config (GstMpegvParse * mpvparse, GstBuffer * buf,
                 map.data, map.size, tpoffsz->offset)) {
           mpvparse->fps_num =
               mpvparse->sequencehdr.fps_n * (mpvparse->sequenceext.fps_n_ext +
-              1) * 2;
+              1);
           mpvparse->fps_den =
               mpvparse->sequencehdr.fps_d * (mpvparse->sequenceext.fps_d_ext +
               1);
@@ -737,8 +737,10 @@ gst_mpegv_parse_parse_frame (GstBaseParse * parse, GstBaseParseFrame * frame)
     GST_BUFFER_DURATION (buffer) = 0;
   }
 
-  GST_BUFFER_DURATION (buffer) =
-      (1 + mpvparse->frame_repeat_count) * GST_BUFFER_DURATION (buffer);
+  if (GST_CLOCK_TIME_IS_VALID (GST_BUFFER_DURATION (buffer))) {
+    GST_BUFFER_DURATION (buffer) =
+        (1 + mpvparse->frame_repeat_count) * GST_BUFFER_DURATION (buffer) / 2;
+  }
 
   if (G_UNLIKELY (mpvparse->drop && !mpvparse->config)) {
     GST_DEBUG_OBJECT (mpvparse, "dropping frame as no config yet");