splitmuxsink: Use GstBin async-handling instead of our own.

Set the async-handling property on GstBin to let it manage
async-handling instead of the local handling from the previous
commit. Works because of #174a5e in core
This commit is contained in:
Jan Schmidt 2016-05-14 23:39:22 +10:00
parent 183695c61a
commit fa008f271a
2 changed files with 1 additions and 19 deletions

View file

@ -248,6 +248,7 @@ gst_splitmux_sink_init (GstSplitMuxSink * splitmux)
splitmux->max_files = DEFAULT_MAX_FILES; splitmux->max_files = DEFAULT_MAX_FILES;
GST_OBJECT_FLAG_SET (splitmux, GST_ELEMENT_FLAG_SINK); GST_OBJECT_FLAG_SET (splitmux, GST_ELEMENT_FLAG_SINK);
g_object_set (splitmux, "async-handling", TRUE, NULL);
} }
static void static void
@ -755,8 +756,6 @@ static void
start_next_fragment (GstSplitMuxSink * splitmux) start_next_fragment (GstSplitMuxSink * splitmux)
{ {
/* 1 change to new file */ /* 1 change to new file */
splitmux->switching_fragment = TRUE;
gst_element_set_locked_state (splitmux->muxer, TRUE); gst_element_set_locked_state (splitmux->muxer, TRUE);
gst_element_set_locked_state (splitmux->active_sink, TRUE); gst_element_set_locked_state (splitmux->active_sink, TRUE);
gst_element_set_state (splitmux->muxer, GST_STATE_NULL); gst_element_set_state (splitmux->muxer, GST_STATE_NULL);
@ -769,8 +768,6 @@ start_next_fragment (GstSplitMuxSink * splitmux)
gst_element_set_locked_state (splitmux->muxer, FALSE); gst_element_set_locked_state (splitmux->muxer, FALSE);
gst_element_set_locked_state (splitmux->active_sink, FALSE); gst_element_set_locked_state (splitmux->active_sink, FALSE);
splitmux->switching_fragment = FALSE;
g_list_foreach (splitmux->contexts, (GFunc) restart_context, splitmux); g_list_foreach (splitmux->contexts, (GFunc) restart_context, splitmux);
/* Switch state and go back to processing */ /* Switch state and go back to processing */
@ -822,20 +819,6 @@ bus_handler (GstBin * bin, GstMessage * message)
} }
GST_SPLITMUX_UNLOCK (splitmux); GST_SPLITMUX_UNLOCK (splitmux);
break; break;
case GST_MESSAGE_ASYNC_START:
case GST_MESSAGE_ASYNC_DONE:
/* Ignore state changes from our children while switching */
if (splitmux->switching_fragment) {
if (GST_MESSAGE_SRC (message) == (GstObject *) splitmux->active_sink ||
GST_MESSAGE_SRC (message) == (GstObject *) splitmux->muxer) {
GST_LOG_OBJECT (splitmux,
"Ignoring state change from child %" GST_PTR_FORMAT
" while switching", GST_MESSAGE_SRC (message));
gst_message_unref (message);
return;
}
}
break;
default: default:
break; break;
} }

View file

@ -125,7 +125,6 @@ struct _GstSplitMuxSink {
gsize mux_start_bytes; gsize mux_start_bytes;
gboolean opening_first_fragment; gboolean opening_first_fragment;
gboolean switching_fragment;
}; };
struct _GstSplitMuxSinkClass { struct _GstSplitMuxSinkClass {