summaryrefslogtreecommitdiffstats
path: root/sys/vdpau
diff options
context:
space:
mode:
authorCarl-Anton Ingmarsson <ca.ingmarsson@gmail.com>2009-06-04 19:30:02 +0200
committerJan Schmidt <thaytan@noraisin.net>2009-06-20 15:21:40 +0100
commitaee19375793395486b07679f30e3bed5e85119ea (patch)
tree8a01244f8a3c5e9c9164a031e88047d371eb57fb /sys/vdpau
parent27606d4e104ec0f78f8ef3c4171d68f5069c7c91 (diff)
downloadgst-plugins-bad-aee19375793395486b07679f30e3bed5e85119ea.tar.gz
gst-plugins-bad-aee19375793395486b07679f30e3bed5e85119ea.tar.bz2
gst-plugins-bad-aee19375793395486b07679f30e3bed5e85119ea.zip
vdpaumpegdec: fix so that the first frame in a raw mpegvideo stream get timestamp 0
Diffstat (limited to 'sys/vdpau')
-rw-r--r--sys/vdpau/gstvdpmpegdecoder.c11
-rw-r--r--sys/vdpau/gstvdpmpegdecoder.h2
2 files changed, 7 insertions, 6 deletions
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;
};