From: Sangchul Lee Date: Tue, 9 Jan 2024 03:57:39 +0000 (+0900) Subject: webrtc_transceiver: Get mid from transceiver name X-Git-Tag: accepted/tizen/8.0/unified/20240112.155130~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8d3b6122fa291248d205edf7eb122a39c7fd96c5;p=platform%2Fcore%2Fapi%2Fwebrtc.git webrtc_transceiver: Get mid from transceiver name This mid value will be set later to rtp header extension for simulcast preparation. [Version] 0.4.31 [Issue Type] Improvement Change-Id: Ie85ddca278eb6a179e1753e5618f010a140ef8e2 Signed-off-by: Sangchul Lee --- diff --git a/include/webrtc_private.h b/include/webrtc_private.h index 1b49dc96..31299052 100644 --- a/include/webrtc_private.h +++ b/include/webrtc_private.h @@ -572,6 +572,7 @@ typedef struct _webrtc_gst_slot_s { struct { GstWebRTCRTPTransceiver *transceiver; webrtc_transceiver_direction_e direction; + gchar *mid; const char *codec; GstPad *src_pad; gulong src_pad_probe_id; diff --git a/packaging/capi-media-webrtc.spec b/packaging/capi-media-webrtc.spec index 11c130ef..40a9658b 100644 --- a/packaging/capi-media-webrtc.spec +++ b/packaging/capi-media-webrtc.spec @@ -1,6 +1,6 @@ Name: capi-media-webrtc Summary: A WebRTC library in Tizen Native API -Version: 0.4.30 +Version: 0.4.31 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/src/webrtc_source.c b/src/webrtc_source.c index f6aafa79..a6d6843b 100644 --- a/src/webrtc_source.c +++ b/src/webrtc_source.c @@ -556,6 +556,7 @@ void _source_slot_destroy_cb(gpointer data) if (source->av[i].transceiver) gst_object_unref(source->av[i].transceiver); + g_free(source->av[i].mid); } if (source->bin) { diff --git a/src/webrtc_transceiver.c b/src/webrtc_transceiver.c index 35f904a1..afaf10c7 100644 --- a/src/webrtc_transceiver.c +++ b/src/webrtc_transceiver.c @@ -75,6 +75,15 @@ static void __webrtcbin_transceiver_set_fec_percentage(webrtc_s *webrtc, GstWebR LOG_INFO("set fec-percentage[%u] to transceiver[%p]", fec_percentage, transceiver); } +static gchar *__get_gst_mid_from_transceiver(bool is_audio, const char *transceiver_name) +{ + g_auto(GStrv) str_arr = NULL; + + RET_VAL_IF(transceiver_name == NULL, NULL, "transceiver_name is NULL"); + + str_arr = g_strsplit(transceiver_name, "webrtctransceiver", 2); + return g_strdup_printf("%s%s", is_audio ? "audio" : "video", str_arr[1]); +} void _webrtcbin_on_new_transceiver_cb(GstElement *webrtcbin, GstWebRTCRTPTransceiver *transceiver, gpointer user_data) { @@ -124,10 +133,11 @@ void _webrtcbin_on_new_transceiver_cb(GstElement *webrtcbin, GstWebRTCRTPTransce source->av[j].transceiver = gst_object_ref(transceiver); g_object_set(G_OBJECT(transceiver), "direction", __convert_transceiver_direction(source->av[j].direction)->gst, NULL); + source->av[j].mid = __get_gst_mid_from_transceiver(j == AV_IDX_AUDIO, GST_OBJECT_NAME(transceiver)); - LOG_INFO("source->id[%u] transceiver[%p for %s, direction:%s]", - source->id, source->av[j].transceiver, j == AV_IDX_AUDIO ? "AUDIO" : "VIDEO", - __convert_transceiver_direction(source->av[j].direction)->str); + LOG_INFO("source->id[%u] source->av[%s][transceiver:%p, direction:%s, mid:%s]", + source->id, j == AV_IDX_AUDIO ? "AUDIO" : "VIDEO", source->av[j].transceiver, + __convert_transceiver_direction(source->av[j].direction)->str, source->av[j].mid); return; } }