mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-23 10:11:08 +00:00
basesink: preroll and sync on gap events
This commit is contained in:
parent
a36d5b7335
commit
5e84524d72
1 changed files with 16 additions and 6 deletions
|
@ -1759,10 +1759,11 @@ gst_base_sink_get_sync_times (GstBaseSink * basesink, GstMiniObject * obj,
|
||||||
|
|
||||||
bclass = GST_BASE_SINK_GET_CLASS (basesink);
|
bclass = GST_BASE_SINK_GET_CLASS (basesink);
|
||||||
|
|
||||||
|
again:
|
||||||
/* start with nothing */
|
/* start with nothing */
|
||||||
start = stop = GST_CLOCK_TIME_NONE;
|
start = stop = GST_CLOCK_TIME_NONE;
|
||||||
|
eos = FALSE;
|
||||||
|
|
||||||
again:
|
|
||||||
if (G_UNLIKELY (GST_IS_EVENT (obj))) {
|
if (G_UNLIKELY (GST_IS_EVENT (obj))) {
|
||||||
GstEvent *event = GST_EVENT_CAST (obj);
|
GstEvent *event = GST_EVENT_CAST (obj);
|
||||||
|
|
||||||
|
@ -1795,17 +1796,26 @@ again:
|
||||||
eos = TRUE;
|
eos = TRUE;
|
||||||
goto eos_done;
|
goto eos_done;
|
||||||
}
|
}
|
||||||
|
case GST_EVENT_GAP:
|
||||||
|
{
|
||||||
|
GstClockTime timestamp, duration;
|
||||||
|
gst_event_parse_gap (event, ×tamp, &duration);
|
||||||
|
|
||||||
|
if (GST_CLOCK_TIME_IS_VALID (timestamp)) {
|
||||||
|
start = timestamp;
|
||||||
|
if (GST_CLOCK_TIME_IS_VALID (duration))
|
||||||
|
stop = start + duration;
|
||||||
|
}
|
||||||
|
*do_sync = TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
/* other events do not need syncing */
|
/* other events do not need syncing */
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* else do buffer sync code */
|
/* else do buffer sync code */
|
||||||
GstBuffer *buffer;
|
GstBuffer *buffer = GST_BUFFER_CAST (obj);
|
||||||
|
|
||||||
eos = FALSE;
|
|
||||||
|
|
||||||
buffer = GST_BUFFER_CAST (obj);
|
|
||||||
|
|
||||||
/* just get the times to see if we need syncing, if the start returns -1 we
|
/* just get the times to see if we need syncing, if the start returns -1 we
|
||||||
* don't sync. */
|
* don't sync. */
|
||||||
|
|
Loading…
Reference in a new issue