mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-20 16:51:10 +00:00
[MOVED FROM GST-P-FARSIGHT] Use the timestamp from the first buffer as the base
20080704215208-3e2dc-5822771f2694deda4a7cd5cdd3c38ab9eff7fa2d.gz
This commit is contained in:
parent
749e12bb15
commit
9e7cada4a9
1 changed files with 6 additions and 16 deletions
|
@ -130,7 +130,7 @@ gst_mimdec_init (GstMimDec *mimdec, GstMimDecClass *klass)
|
||||||
mimdec->payload_size = -1;
|
mimdec->payload_size = -1;
|
||||||
mimdec->last_ts = -1;
|
mimdec->last_ts = -1;
|
||||||
mimdec->current_ts = -1;
|
mimdec->current_ts = -1;
|
||||||
mimdec->gst_timestamp = -1;
|
mimdec->gst_timestamp = GST_CLOCK_TIME_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -167,19 +167,8 @@ gst_mimdec_chain (GstPad *pad, GstBuffer *in)
|
||||||
gst_adapter_push (mimdec->adapter, buf);
|
gst_adapter_push (mimdec->adapter, buf);
|
||||||
|
|
||||||
|
|
||||||
if (mimdec->gst_timestamp == -1) {
|
if (!GST_CLOCK_TIME_IS_VALID (mimdec->gst_timestamp))
|
||||||
GstClock *clock;
|
mimdec->gst_timestamp = GST_BUFFER_TIMESTAMP (in);
|
||||||
GstClockTime base_time;
|
|
||||||
|
|
||||||
base_time = gst_element_get_base_time (GST_ELEMENT (mimdec));
|
|
||||||
|
|
||||||
clock = gst_element_get_clock (GST_ELEMENT (mimdec));
|
|
||||||
if (clock != NULL) {
|
|
||||||
mimdec->gst_timestamp = gst_clock_get_time (clock) - base_time;
|
|
||||||
gst_object_unref (clock);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// do we have enough bytes to read a header
|
// do we have enough bytes to read a header
|
||||||
while (gst_adapter_available (mimdec->adapter) >= (mimdec->have_header ? mimdec->payload_size : 24)) {
|
while (gst_adapter_available (mimdec->adapter) >= (mimdec->have_header ? mimdec->payload_size : 24)) {
|
||||||
|
@ -286,7 +275,8 @@ gst_mimdec_chain (GstPad *pad, GstBuffer *in)
|
||||||
if (diff < 0 || diff > 5000) {
|
if (diff < 0 || diff > 5000) {
|
||||||
diff = 1000;
|
diff = 1000;
|
||||||
}
|
}
|
||||||
mimdec->gst_timestamp += diff * GST_MSECOND;
|
if (GST_CLOCK_TIME_IS_VALID (mimdec->gst_timestamp))
|
||||||
|
mimdec->gst_timestamp += diff * GST_MSECOND;
|
||||||
}
|
}
|
||||||
GST_BUFFER_TIMESTAMP(out_buf) = mimdec->gst_timestamp;
|
GST_BUFFER_TIMESTAMP(out_buf) = mimdec->gst_timestamp;
|
||||||
mimdec->last_ts = mimdec->current_ts;
|
mimdec->last_ts = mimdec->current_ts;
|
||||||
|
@ -335,7 +325,7 @@ gst_mimdec_change_state (GstElement *element, GstStateChange transition)
|
||||||
mimdec->buffer_size = -1;
|
mimdec->buffer_size = -1;
|
||||||
mimdec->have_header = FALSE;
|
mimdec->have_header = FALSE;
|
||||||
mimdec->payload_size = -1;
|
mimdec->payload_size = -1;
|
||||||
mimdec->gst_timestamp = -1;
|
mimdec->gst_timestamp = GST_CLOCK_TIME_NONE;
|
||||||
mimdec->current_ts = -1;
|
mimdec->current_ts = -1;
|
||||||
mimdec->last_ts = -1;
|
mimdec->last_ts = -1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue