summaryrefslogtreecommitdiff
path: root/gst/videoparsers
diff options
context:
space:
mode:
authorMatej Knopp <matej.knopp@gmail.com>2012-04-14 20:53:47 +0200
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2012-04-16 08:42:02 +0200
commit23e312872e4131b95c7807f621cd442c3830665b (patch)
treef3ede41c2dc481fae42a85cf4f083ec16a50224a /gst/videoparsers
parent19ee94a8d15e96127885f489b1c2422b957ba65e (diff)
downloadgstreamer-plugins-bad-23e312872e4131b95c7807f621cd442c3830665b.tar.gz
mpegvideoparse: Fix FPS and frame duration for telecine files
Diffstat (limited to 'gst/videoparsers')
-rw-r--r--gst/videoparsers/gstmpegvideoparse.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/gst/videoparsers/gstmpegvideoparse.c b/gst/videoparsers/gstmpegvideoparse.c
index 9bb046e27..5b6a572e9 100644
--- a/gst/videoparsers/gstmpegvideoparse.c
+++ b/gst/videoparsers/gstmpegvideoparse.c
@@ -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");