diff --git a/ext/smoothstreaming/gstmssdemux.c b/ext/smoothstreaming/gstmssdemux.c index 4d3a86db8b..35a424af94 100644 --- a/ext/smoothstreaming/gstmssdemux.c +++ b/ext/smoothstreaming/gstmssdemux.c @@ -1022,6 +1022,7 @@ gst_mss_demux_stream_store_object (GstMssDemuxStream * stream, GstMiniObject * obj) { GstDataQueueItem *item; + gboolean ret = FALSE; item = g_slice_new (GstDataQueueItem); item->object = (GstMiniObject *) obj; @@ -1032,7 +1033,13 @@ gst_mss_demux_stream_store_object (GstMssDemuxStream * stream, item->destroy = (GDestroyNotify) _free_data_queue_item; - if (!gst_data_queue_push (stream->dataqueue, item)) { + if (G_LIKELY (GST_IS_BUFFER (obj))) { + ret = gst_data_queue_push (stream->dataqueue, item); + } else { + ret = gst_data_queue_push_force (stream->dataqueue, item); + } + + if (!ret) { GST_DEBUG_OBJECT (stream->parent, "Failed to store object %p", obj); item->destroy (item); }