From aee19375793395486b07679f30e3bed5e85119ea Mon Sep 17 00:00:00 2001 From: Carl-Anton Ingmarsson Date: Thu, 4 Jun 2009 19:30:02 +0200 Subject: vdpaumpegdec: fix so that the first frame in a raw mpegvideo stream get timestamp 0 --- sys/vdpau/gstvdpmpegdecoder.c | 11 ++++++----- sys/vdpau/gstvdpmpegdecoder.h | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) (limited to 'sys/vdpau') diff --git a/sys/vdpau/gstvdpmpegdecoder.c b/sys/vdpau/gstvdpmpegdecoder.c index a501d533..dbb87c38 100644 --- a/sys/vdpau/gstvdpmpegdecoder.c +++ b/sys/vdpau/gstvdpmpegdecoder.c @@ -274,16 +274,17 @@ gst_vdp_mpeg_decoder_push_video_buffer (GstVdpMpegDecoder * mpeg_dec, GstVdpVideoBuffer * buffer) { if (GST_BUFFER_TIMESTAMP (buffer) == GST_CLOCK_TIME_NONE) { - GST_BUFFER_TIMESTAMP (buffer) = mpeg_dec->time + - gst_util_uint64_scale_int (GST_SECOND, - mpeg_dec->fps_d, mpeg_dec->fps_n); + GST_BUFFER_TIMESTAMP (buffer) = mpeg_dec->next_timestamp; } + + mpeg_dec->next_timestamp = GST_BUFFER_TIMESTAMP (buffer) + + gst_util_uint64_scale_int (GST_SECOND, mpeg_dec->fps_d, mpeg_dec->fps_n); + gst_buffer_set_caps (GST_BUFFER (buffer), GST_PAD_CAPS (mpeg_dec->src)); GST_DEBUG_OBJECT (mpeg_dec, "Pushing buffer with timestamp: %" GST_TIME_FORMAT, GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buffer))); - mpeg_dec->time = GST_BUFFER_TIMESTAMP (buffer); return gst_pad_push (mpeg_dec->src, GST_BUFFER (buffer)); } @@ -717,7 +718,7 @@ gst_vdp_mpeg_decoder_init (GstVdpMpegDecoder * mpeg_dec, gst_vdp_mpeg_decoder_init_info (&mpeg_dec->vdp_info); mpeg_dec->broken_gop = FALSE; - mpeg_dec->time = 0; + mpeg_dec->next_timestamp = 0; mpeg_dec->adapter = gst_adapter_new (); } diff --git a/sys/vdpau/gstvdpmpegdecoder.h b/sys/vdpau/gstvdpmpegdecoder.h index a48e0c97..3e1bc731 100644 --- a/sys/vdpau/gstvdpmpegdecoder.h +++ b/sys/vdpau/gstvdpmpegdecoder.h @@ -60,7 +60,7 @@ struct _GstVdpMpegDecoder GstBuffer *b_buffer; gboolean broken_gop; - GstClockTime time; + GstClockTime next_timestamp; GstAdapter *adapter; }; -- cgit v1.2.1