From: Wim Taymans Date: Mon, 30 Dec 2013 16:36:42 +0000 (+0100) Subject: rtpbin: make request_element method internally X-Git-Tag: 1.19.3~509^2~5029 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ae22c958819abd75f0da25892ceb1ae84476ba1b;p=platform%2Fupstream%2Fgstreamer.git rtpbin: make request_element method internally We can use the same method to create encoder and decoder elements, they are just internal elements that we create. --- diff --git a/gst/rtpmanager/gstrtpbin.c b/gst/rtpmanager/gstrtpbin.c index b2b5803..1d057c1 100644 --- a/gst/rtpmanager/gstrtpbin.c +++ b/gst/rtpmanager/gstrtpbin.c @@ -408,8 +408,8 @@ struct _GstRtpBinSession /* list of GstRtpBinStream */ GSList *streams; - /* list of encoders */ - GSList *encoders; + /* list of elements */ + GSList *elements; /* list of decoders */ GSList *decoders; @@ -736,11 +736,8 @@ free_session (GstRtpBinSession * sess, GstRtpBin * bin) gst_bin_remove (GST_BIN_CAST (bin), sess->session); gst_bin_remove (GST_BIN_CAST (bin), sess->demux); - g_slist_foreach (sess->encoders, (GFunc) remove_bin_element, bin); - g_slist_free (sess->encoders); - - g_slist_foreach (sess->decoders, (GFunc) remove_bin_element, bin); - g_slist_free (sess->decoders); + g_slist_foreach (sess->elements, (GFunc) remove_bin_element, bin); + g_slist_free (sess->elements); g_slist_foreach (sess->streams, (GFunc) free_stream, bin); g_slist_free (sess->streams); @@ -2601,49 +2598,25 @@ gst_rtp_bin_change_state (GstElement * element, GstStateChange transition) } static GstElement * -session_request_encoder (GstRtpBinSession * session, guint signal) -{ - GstElement *encoder = NULL; - GstRtpBin *bin = session->bin; - - g_signal_emit (bin, gst_rtp_bin_signals[signal], 0, session->id, &encoder); - - if (encoder) { - if (!bin_manage_element (bin, encoder)) - goto manage_failed; - session->encoders = g_slist_prepend (session->encoders, encoder); - } - return encoder; - - /* ERRORS */ -manage_failed: - { - GST_WARNING_OBJECT (bin, "unable to manage encoder"); - gst_object_unref (encoder); - return NULL; - } -} - -static GstElement * -session_request_decoder (GstRtpBinSession * session, guint signal) +session_request_element (GstRtpBinSession * session, guint signal) { - GstElement *decoder = NULL; + GstElement *element = NULL; GstRtpBin *bin = session->bin; - g_signal_emit (bin, gst_rtp_bin_signals[signal], 0, session->id, &decoder); + g_signal_emit (bin, gst_rtp_bin_signals[signal], 0, session->id, &element); - if (decoder) { - if (!bin_manage_element (bin, decoder)) + if (element) { + if (!bin_manage_element (bin, element)) goto manage_failed; - session->decoders = g_slist_prepend (session->decoders, decoder); + session->elements = g_slist_prepend (session->elements, element); } - return decoder; + return element; /* ERRORS */ manage_failed: { - GST_WARNING_OBJECT (bin, "unable to manage decoder"); - gst_object_unref (decoder); + GST_WARNING_OBJECT (bin, "unable to manage element"); + gst_object_unref (element); return NULL; } } @@ -2925,7 +2898,7 @@ create_recv_rtp (GstRtpBin * rtpbin, GstPadTemplate * templ, const gchar * name) (GCallback) caps_changed, session); GST_DEBUG_OBJECT (rtpbin, "requesting RTP decoder"); - decoder = session_request_decoder (session, SIGNAL_REQUEST_RTP_DECODER); + decoder = session_request_element (session, SIGNAL_REQUEST_RTP_DECODER); if (decoder) { GstPad *decsrc; GstPadLinkReturn ret; @@ -3088,7 +3061,7 @@ create_recv_rtcp (GstRtpBin * rtpbin, GstPadTemplate * templ, goto pad_failed; GST_DEBUG_OBJECT (rtpbin, "getting RTCP decoder"); - decoder = session_request_decoder (session, SIGNAL_REQUEST_RTCP_DECODER); + decoder = session_request_element (session, SIGNAL_REQUEST_RTCP_DECODER); if (decoder) { GstPad *decsrc; GstPadLinkReturn ret; @@ -3243,7 +3216,7 @@ create_send_rtp (GstRtpBin * rtpbin, GstPadTemplate * templ, const gchar * name) goto no_srcpad; GST_DEBUG_OBJECT (rtpbin, "getting RTP encoder"); - encoder = session_request_encoder (session, SIGNAL_REQUEST_RTP_ENCODER); + encoder = session_request_element (session, SIGNAL_REQUEST_RTP_ENCODER); if (encoder) { gchar *ename; GstPad *encsink; @@ -3384,7 +3357,7 @@ create_rtcp (GstRtpBin * rtpbin, GstPadTemplate * templ, const gchar * name) goto pad_failed; GST_DEBUG_OBJECT (rtpbin, "getting RTCP encoder"); - encoder = session_request_encoder (session, SIGNAL_REQUEST_RTCP_ENCODER); + encoder = session_request_element (session, SIGNAL_REQUEST_RTCP_ENCODER); if (encoder) { gchar *ename; GstPad *encsink;