mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 06:54:49 +00:00
queue2: Fix handling of the new stream-start event
This commit is contained in:
parent
fc886e03b6
commit
eba7fed1d3
2 changed files with 16 additions and 1 deletions
|
@ -1312,7 +1312,10 @@ gst_queue2_read_item_from_file (GstQueue2 * queue)
|
||||||
{
|
{
|
||||||
GstMiniObject *item;
|
GstMiniObject *item;
|
||||||
|
|
||||||
if (queue->starting_segment != NULL) {
|
if (queue->stream_start_event != NULL) {
|
||||||
|
item = GST_MINI_OBJECT_CAST (queue->stream_start_event);
|
||||||
|
queue->stream_start_event = NULL;
|
||||||
|
} else if (queue->starting_segment != NULL) {
|
||||||
item = GST_MINI_OBJECT_CAST (queue->starting_segment);
|
item = GST_MINI_OBJECT_CAST (queue->starting_segment);
|
||||||
queue->starting_segment = NULL;
|
queue->starting_segment = NULL;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1483,6 +1486,7 @@ gst_queue2_locked_flush (GstQueue2 * queue)
|
||||||
gst_event_unref (queue->starting_segment);
|
gst_event_unref (queue->starting_segment);
|
||||||
queue->starting_segment = NULL;
|
queue->starting_segment = NULL;
|
||||||
queue->segment_event_received = FALSE;
|
queue->segment_event_received = FALSE;
|
||||||
|
gst_event_replace (&queue->stream_start_event, NULL);
|
||||||
|
|
||||||
/* we deleted a lot of something */
|
/* we deleted a lot of something */
|
||||||
GST_QUEUE2_SIGNAL_DEL (queue);
|
GST_QUEUE2_SIGNAL_DEL (queue);
|
||||||
|
@ -1913,6 +1917,13 @@ gst_queue2_locked_enqueue (GstQueue2 * queue, gpointer item,
|
||||||
* from downstream */
|
* from downstream */
|
||||||
queue->unexpected = FALSE;
|
queue->unexpected = FALSE;
|
||||||
break;
|
break;
|
||||||
|
case GST_EVENT_STREAM_START:
|
||||||
|
if (!QUEUE_IS_USING_QUEUE (queue)) {
|
||||||
|
gst_event_replace (&queue->stream_start_event, event);
|
||||||
|
gst_event_unref (event);
|
||||||
|
item = NULL;
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
if (!QUEUE_IS_USING_QUEUE (queue))
|
if (!QUEUE_IS_USING_QUEUE (queue))
|
||||||
goto unexpected_event;
|
goto unexpected_event;
|
||||||
|
@ -3051,6 +3062,7 @@ gst_queue2_change_state (GstElement * element, GstStateChange transition)
|
||||||
}
|
}
|
||||||
queue->segment_event_received = FALSE;
|
queue->segment_event_received = FALSE;
|
||||||
queue->starting_segment = NULL;
|
queue->starting_segment = NULL;
|
||||||
|
gst_event_replace (&queue->stream_start_event, NULL);
|
||||||
GST_QUEUE2_MUTEX_UNLOCK (queue);
|
GST_QUEUE2_MUTEX_UNLOCK (queue);
|
||||||
break;
|
break;
|
||||||
case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
|
case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
|
||||||
|
@ -3085,6 +3097,7 @@ gst_queue2_change_state (GstElement * element, GstStateChange transition)
|
||||||
gst_event_unref (queue->starting_segment);
|
gst_event_unref (queue->starting_segment);
|
||||||
queue->starting_segment = NULL;
|
queue->starting_segment = NULL;
|
||||||
}
|
}
|
||||||
|
gst_event_replace (&queue->stream_start_event, NULL);
|
||||||
GST_QUEUE2_MUTEX_UNLOCK (queue);
|
GST_QUEUE2_MUTEX_UNLOCK (queue);
|
||||||
break;
|
break;
|
||||||
case GST_STATE_CHANGE_READY_TO_NULL:
|
case GST_STATE_CHANGE_READY_TO_NULL:
|
||||||
|
|
|
@ -144,6 +144,8 @@ struct _GstQueue2
|
||||||
gboolean segment_event_received;
|
gboolean segment_event_received;
|
||||||
GstEvent *starting_segment;
|
GstEvent *starting_segment;
|
||||||
|
|
||||||
|
GstEvent *stream_start_event;
|
||||||
|
|
||||||
guint64 ring_buffer_max_size;
|
guint64 ring_buffer_max_size;
|
||||||
guint8 * ring_buffer;
|
guint8 * ring_buffer;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue