mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-10-06 18:52:07 +00:00
input-selector: small code cleanups
Rename TIMESTAMP -> PTS. Move a var down to the scope where it is used. Use g_queue_free_full().
This commit is contained in:
parent
d8bee3c769
commit
8285002693
1 changed files with 17 additions and 22 deletions
|
@ -333,10 +333,8 @@ gst_selector_pad_get_running_time (GstSelectorPad * pad)
|
||||||
|
|
||||||
GST_OBJECT_LOCK (pad);
|
GST_OBJECT_LOCK (pad);
|
||||||
if (pad->active) {
|
if (pad->active) {
|
||||||
GstFormat format = pad->segment.format;
|
|
||||||
|
|
||||||
ret =
|
ret =
|
||||||
gst_segment_to_running_time (&pad->segment, format,
|
gst_segment_to_running_time (&pad->segment, pad->segment.format,
|
||||||
pad->segment.position);
|
pad->segment.position);
|
||||||
}
|
}
|
||||||
GST_OBJECT_UNLOCK (pad);
|
GST_OBJECT_UNLOCK (pad);
|
||||||
|
@ -403,15 +401,12 @@ gst_selector_pad_cache_buffer (GstSelectorPad * selpad, GstBuffer * buffer)
|
||||||
static void
|
static void
|
||||||
gst_selector_pad_free_cached_buffers (GstSelectorPad * selpad)
|
gst_selector_pad_free_cached_buffers (GstSelectorPad * selpad)
|
||||||
{
|
{
|
||||||
GstSelectorPadCachedBuffer *cached_buffer;
|
|
||||||
|
|
||||||
if (!selpad->cached_buffers)
|
if (!selpad->cached_buffers)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (selpad, "Freeing cached buffers");
|
GST_DEBUG_OBJECT (selpad, "Freeing cached buffers");
|
||||||
while ((cached_buffer = g_queue_pop_head (selpad->cached_buffers)))
|
g_queue_free_full (selpad->cached_buffers,
|
||||||
gst_selector_pad_free_cached_buffer (cached_buffer);
|
(GDestroyNotify) gst_selector_pad_free_cached_buffer);
|
||||||
g_queue_free (selpad->cached_buffers);
|
|
||||||
selpad->cached_buffers = NULL;
|
selpad->cached_buffers = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -470,7 +465,6 @@ gst_selector_pad_event (GstPad * pad, GstObject * parent, GstEvent * event)
|
||||||
gst_object_unref (prev_active_sinkpad);
|
gst_object_unref (prev_active_sinkpad);
|
||||||
|
|
||||||
GST_INPUT_SELECTOR_LOCK (sel);
|
GST_INPUT_SELECTOR_LOCK (sel);
|
||||||
active_sinkpad = gst_input_selector_activate_sinkpad (sel, pad);
|
|
||||||
|
|
||||||
/* only forward if we are dealing with the active sinkpad */
|
/* only forward if we are dealing with the active sinkpad */
|
||||||
forward = (pad == active_sinkpad);
|
forward = (pad == active_sinkpad);
|
||||||
|
@ -648,7 +642,7 @@ gst_input_selector_wait_running_time (GstInputSelector * sel,
|
||||||
GST_DEBUG_OBJECT (selpad, "entering wait for buffer %p", buf);
|
GST_DEBUG_OBJECT (selpad, "entering wait for buffer %p", buf);
|
||||||
|
|
||||||
/* If we have no valid timestamp we can't sync this buffer */
|
/* If we have no valid timestamp we can't sync this buffer */
|
||||||
if (!GST_BUFFER_TIMESTAMP_IS_VALID (buf)) {
|
if (!GST_BUFFER_PTS_IS_VALID (buf)) {
|
||||||
GST_DEBUG_OBJECT (selpad, "leaving wait for buffer with "
|
GST_DEBUG_OBJECT (selpad, "leaving wait for buffer with "
|
||||||
"invalid timestamp");
|
"invalid timestamp");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -683,7 +677,7 @@ gst_input_selector_wait_running_time (GstInputSelector * sel,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
running_time = GST_BUFFER_TIMESTAMP (buf);
|
running_time = GST_BUFFER_PTS (buf);
|
||||||
/* If possible try to get the running time at the end of the buffer */
|
/* If possible try to get the running time at the end of the buffer */
|
||||||
if (GST_BUFFER_DURATION_IS_VALID (buf))
|
if (GST_BUFFER_DURATION_IS_VALID (buf))
|
||||||
running_time += GST_BUFFER_DURATION (buf);
|
running_time += GST_BUFFER_DURATION (buf);
|
||||||
|
@ -817,7 +811,7 @@ gst_input_selector_debug_cached_buffers (GstInputSelector * sel)
|
||||||
|
|
||||||
cached_buffer = g_queue_peek_nth (selpad->cached_buffers, i);
|
cached_buffer = g_queue_peek_nth (selpad->cached_buffers, i);
|
||||||
g_string_append_printf (timestamps, " %" GST_TIME_FORMAT,
|
g_string_append_printf (timestamps, " %" GST_TIME_FORMAT,
|
||||||
GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (cached_buffer->buffer)));
|
GST_TIME_ARGS (GST_BUFFER_PTS (cached_buffer->buffer)));
|
||||||
}
|
}
|
||||||
str = g_string_free (timestamps, FALSE);
|
str = g_string_free (timestamps, FALSE);
|
||||||
GST_DEBUG_OBJECT (selpad, "%s", str);
|
GST_DEBUG_OBJECT (selpad, "%s", str);
|
||||||
|
@ -891,7 +885,7 @@ gst_input_selector_cleanup_old_cached_buffers (GstInputSelector * sel,
|
||||||
GSList *l;
|
GSList *l;
|
||||||
|
|
||||||
/* If we have no valid timestamp we can't sync this buffer */
|
/* If we have no valid timestamp we can't sync this buffer */
|
||||||
if (!GST_BUFFER_TIMESTAMP_IS_VALID (buffer)) {
|
if (!GST_BUFFER_PTS_IS_VALID (buffer)) {
|
||||||
maybe_remove = g_slist_append (maybe_remove, cached_buffer);
|
maybe_remove = g_slist_append (maybe_remove, cached_buffer);
|
||||||
queue_position = g_slist_length (maybe_remove);
|
queue_position = g_slist_length (maybe_remove);
|
||||||
continue;
|
continue;
|
||||||
|
@ -900,7 +894,7 @@ gst_input_selector_cleanup_old_cached_buffers (GstInputSelector * sel,
|
||||||
/* the buffer is still valid if its duration is valid and the
|
/* the buffer is still valid if its duration is valid and the
|
||||||
* timestamp + duration is >= time, or if its duration is invalid
|
* timestamp + duration is >= time, or if its duration is invalid
|
||||||
* and the timestamp is >= time */
|
* and the timestamp is >= time */
|
||||||
running_time = GST_BUFFER_TIMESTAMP (buffer);
|
running_time = GST_BUFFER_PTS (buffer);
|
||||||
/* If possible try to get the running time at the end of the buffer */
|
/* If possible try to get the running time at the end of the buffer */
|
||||||
if (GST_BUFFER_DURATION_IS_VALID (buffer))
|
if (GST_BUFFER_DURATION_IS_VALID (buffer))
|
||||||
running_time += GST_BUFFER_DURATION (buffer);
|
running_time += GST_BUFFER_DURATION (buffer);
|
||||||
|
@ -961,14 +955,13 @@ gst_selector_pad_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
|
||||||
GstPad *active_sinkpad;
|
GstPad *active_sinkpad;
|
||||||
GstPad *prev_active_sinkpad = NULL;
|
GstPad *prev_active_sinkpad = NULL;
|
||||||
GstSelectorPad *selpad;
|
GstSelectorPad *selpad;
|
||||||
GstClockTime start_time;
|
|
||||||
|
|
||||||
sel = GST_INPUT_SELECTOR (parent);
|
sel = GST_INPUT_SELECTOR (parent);
|
||||||
selpad = GST_SELECTOR_PAD_CAST (pad);
|
selpad = GST_SELECTOR_PAD_CAST (pad);
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (selpad,
|
GST_DEBUG_OBJECT (selpad,
|
||||||
"entering chain for buf %p with timestamp %" GST_TIME_FORMAT, buf,
|
"entering chain for buf %p with timestamp %" GST_TIME_FORMAT, buf,
|
||||||
GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)));
|
GST_TIME_ARGS (GST_BUFFER_PTS (buf)));
|
||||||
|
|
||||||
GST_INPUT_SELECTOR_LOCK (sel);
|
GST_INPUT_SELECTOR_LOCK (sel);
|
||||||
/* wait or check for flushing */
|
/* wait or check for flushing */
|
||||||
|
@ -1038,8 +1031,9 @@ gst_selector_pad_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* update the segment on the srcpad */
|
/* update the segment on the srcpad */
|
||||||
start_time = GST_BUFFER_TIMESTAMP (buf);
|
if (GST_BUFFER_PTS_IS_VALID (buf)) {
|
||||||
if (GST_CLOCK_TIME_IS_VALID (start_time)) {
|
GstClockTime start_time = GST_BUFFER_PTS (buf);
|
||||||
|
|
||||||
GST_LOG_OBJECT (pad, "received start time %" GST_TIME_FORMAT,
|
GST_LOG_OBJECT (pad, "received start time %" GST_TIME_FORMAT,
|
||||||
GST_TIME_ARGS (start_time));
|
GST_TIME_ARGS (start_time));
|
||||||
if (GST_BUFFER_DURATION_IS_VALID (buf))
|
if (GST_BUFFER_DURATION_IS_VALID (buf))
|
||||||
|
@ -1076,9 +1070,10 @@ gst_selector_pad_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
|
||||||
selpad->events_pending = FALSE;
|
selpad->events_pending = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (prev_active_sinkpad)
|
if (prev_active_sinkpad) {
|
||||||
gst_object_unref (prev_active_sinkpad);
|
gst_object_unref (prev_active_sinkpad);
|
||||||
prev_active_sinkpad = NULL;
|
prev_active_sinkpad = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (selpad->discont) {
|
if (selpad->discont) {
|
||||||
buf = gst_buffer_make_writable (buf);
|
buf = gst_buffer_make_writable (buf);
|
||||||
|
@ -1090,7 +1085,7 @@ gst_selector_pad_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
|
||||||
|
|
||||||
/* forward */
|
/* forward */
|
||||||
GST_LOG_OBJECT (pad, "Forwarding buffer %p with timestamp %" GST_TIME_FORMAT,
|
GST_LOG_OBJECT (pad, "Forwarding buffer %p with timestamp %" GST_TIME_FORMAT,
|
||||||
buf, GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)));
|
buf, GST_TIME_ARGS (GST_BUFFER_PTS (buf)));
|
||||||
|
|
||||||
/* Only make the buffer read-only when necessary */
|
/* Only make the buffer read-only when necessary */
|
||||||
if (sel->sync_streams && sel->cache_buffers)
|
if (sel->sync_streams && sel->cache_buffers)
|
||||||
|
@ -1651,7 +1646,7 @@ gst_input_selector_activate_sinkpad (GstInputSelector * sel, GstPad * pad)
|
||||||
|
|
||||||
selpad->active = TRUE;
|
selpad->active = TRUE;
|
||||||
active_sinkpad = sel->active_sinkpad;
|
active_sinkpad = sel->active_sinkpad;
|
||||||
if (sel->active_sinkpad == NULL) {
|
if (active_sinkpad == NULL) {
|
||||||
GValue item = G_VALUE_INIT;
|
GValue item = G_VALUE_INIT;
|
||||||
GstIterator *iter = gst_element_iterate_sink_pads (GST_ELEMENT_CAST (sel));
|
GstIterator *iter = gst_element_iterate_sink_pads (GST_ELEMENT_CAST (sel));
|
||||||
GstIteratorResult ires;
|
GstIteratorResult ires;
|
||||||
|
|
Loading…
Reference in a new issue