From 71fe1ad0709a18583d352f63951f4aec9ffffaf7 Mon Sep 17 00:00:00 2001 From: Thiago Santos Date: Thu, 29 Dec 2011 16:56:46 -0300 Subject: [PATCH] output-selector: Do not false warn about unlinked pad When output-selector didn't receive a newsegment event it would warn about pad being unlinked when switching pads. Making the logs wrong and misleading. --- plugins/elements/gstoutputselector.c | 37 +++++++++++++++------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/plugins/elements/gstoutputselector.c b/plugins/elements/gstoutputselector.c index 41b176c062..b3b6c36c8d 100644 --- a/plugins/elements/gstoutputselector.c +++ b/plugins/elements/gstoutputselector.c @@ -453,7 +453,8 @@ gst_output_selector_switch (GstOutputSelector * osel) /* Switch */ GST_OBJECT_LOCK (GST_OBJECT (osel)); - GST_INFO ("switching to pad %" GST_PTR_FORMAT, osel->pending_srcpad); + GST_INFO_OBJECT (osel, "switching to pad %" GST_PTR_FORMAT, + osel->pending_srcpad); if (gst_pad_is_linked (osel->pending_srcpad)) { osel->active_srcpad = osel->pending_srcpad; res = TRUE; @@ -464,23 +465,25 @@ gst_output_selector_switch (GstOutputSelector * osel) /* Send NEWSEGMENT event and latest buffer if switching succeeded * and we already have a valid segment configured */ - if (res && osel->segment.format != GST_FORMAT_UNDEFINED) { - /* Send NEWSEGMENT to the pad we are going to switch to */ - seg = &osel->segment; + if (res) { + if (osel->segment.format != GST_FORMAT_UNDEFINED) { + /* Send NEWSEGMENT to the pad we are going to switch to */ + seg = &osel->segment; - /* If resending then mark newsegment start and position accordingly */ - if (osel->resend_latest && osel->latest_buffer && - GST_BUFFER_TIMESTAMP_IS_VALID (osel->latest_buffer)) { - start = position = GST_BUFFER_TIMESTAMP (osel->latest_buffer); - } else { - start = position = seg->last_stop; - } - ev = gst_event_new_new_segment (TRUE, seg->rate, - seg->format, start, seg->stop, position); - if (!gst_pad_push_event (osel->active_srcpad, ev)) { - GST_WARNING_OBJECT (osel, - "newsegment handling failed in %" GST_PTR_FORMAT, - osel->active_srcpad); + /* If resending then mark newsegment start and position accordingly */ + if (osel->resend_latest && osel->latest_buffer && + GST_BUFFER_TIMESTAMP_IS_VALID (osel->latest_buffer)) { + start = position = GST_BUFFER_TIMESTAMP (osel->latest_buffer); + } else { + start = position = seg->last_stop; + } + ev = gst_event_new_new_segment (TRUE, seg->rate, + seg->format, start, seg->stop, position); + if (!gst_pad_push_event (osel->active_srcpad, ev)) { + GST_WARNING_OBJECT (osel, + "newsegment handling failed in %" GST_PTR_FORMAT, + osel->active_srcpad); + } } /* Resend latest buffer to newly switched pad */