From: Sangchul Lee Date: Mon, 19 Jul 2021 11:54:21 +0000 (+0900) Subject: webrtc_sink: Add __find_sink_slot_by_id() and use it X-Git-Tag: submit/tizen/20210729.023123~9 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=89169359355348699a80c575a07858396b681667;p=platform%2Fcore%2Fapi%2Fwebrtc.git webrtc_sink: Add __find_sink_slot_by_id() and use it [Version] 0.2.51 [Issue Type] Refactoring Change-Id: I6d47ae258ca28cb8d3137a2040120d758b000552 Signed-off-by: Sangchul Lee --- diff --git a/packaging/capi-media-webrtc.spec b/packaging/capi-media-webrtc.spec index 1278b9cd..eb8969d7 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.2.50 +Version: 0.2.51 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/src/webrtc_sink.c b/src/webrtc_sink.c index 466fe04b..bba5879f 100644 --- a/src/webrtc_sink.c +++ b/src/webrtc_sink.c @@ -73,6 +73,25 @@ static webrtc_gst_slot_s* __find_sink_slot(webrtc_s *webrtc, const gchar *key) return g_hash_table_lookup(webrtc->gst.sink_slots, key); } +webrtc_gst_slot_s* __find_sink_slot_by_id(webrtc_s *webrtc, unsigned int track_id) +{ + webrtc_gst_slot_s *sink; + gchar *track_name; + + RET_VAL_IF(webrtc == NULL, NULL, "webrtc is NULL"); + RET_VAL_IF(track_id == 0, NULL, "track id is 0"); + + track_name = g_strdup_printf("track_%u", track_id); + + sink = __find_sink_slot(webrtc, track_name); + if (sink == NULL) + LOG_ERROR("could not find an item by [%s] in sink slots", track_name); + + g_free(track_name); + + return sink; +} + static const char *__get_videosink_factory_name(webrtc_display_s *display, webrtc_ini_s *ini, bool *display_is_set) { const char *factory_name = NULL; @@ -878,7 +897,6 @@ error_before_insert: int _set_stream_info_to_sink(webrtc_s *webrtc, unsigned int track_id, sound_stream_info_h stream_info) { webrtc_gst_slot_s *sink; - gchar *track_name; char *stream_type; int stream_index; bool available; @@ -888,16 +906,8 @@ int _set_stream_info_to_sink(webrtc_s *webrtc, unsigned int track_id, sound_stre RET_VAL_IF(track_id == 0, WEBRTC_ERROR_INVALID_PARAMETER, "track id is 0"); RET_VAL_IF(stream_info == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "stream_info is NULL"); - track_name = g_strdup_printf("track_%u", track_id); - - sink = __find_sink_slot(webrtc, track_name); - if (sink == NULL) { - LOG_ERROR("could not find an item by [%s] in sink slots", track_name); - g_free(track_name); - return WEBRTC_ERROR_INVALID_PARAMETER; - } - g_free(track_name); - + sink = __find_sink_slot_by_id(webrtc, track_id); + RET_VAL_IF(sink == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "sink is NULL"); RET_VAL_IF(sink->bin == NULL, WEBRTC_ERROR_INVALID_OPERATION, "bin is NULL"); RET_VAL_IF(sink->encoded_frame_cb != NULL, WEBRTC_ERROR_INVALID_OPERATION, "it may be a forwarding sink for encoded frame callback"); RET_VAL_IF((sink->media_types & MEDIA_TYPE_AUDIO) == 0x0, WEBRTC_ERROR_INVALID_OPERATION, "it's not a audio track"); @@ -929,22 +939,13 @@ int _set_stream_info_to_sink(webrtc_s *webrtc, unsigned int track_id, sound_stre int _set_display_to_sink(webrtc_s *webrtc, unsigned int track_id, unsigned int type, void *display) { webrtc_gst_slot_s *sink; - gchar *track_name; RET_VAL_IF(webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL"); RET_VAL_IF(track_id == 0, WEBRTC_ERROR_INVALID_PARAMETER, "track id is 0"); RET_VAL_IF(display == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "display is NULL"); - track_name = g_strdup_printf("track_%u", track_id); - - sink = __find_sink_slot(webrtc, track_name); - if (sink == NULL) { - LOG_ERROR("could not find an item by [%s] in sink slots", track_name); - g_free(track_name); - return WEBRTC_ERROR_INVALID_PARAMETER; - } - g_free(track_name); - + sink = __find_sink_slot_by_id(webrtc, track_id); + RET_VAL_IF(sink == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "sink is NULL"); RET_VAL_IF(sink->bin == NULL, WEBRTC_ERROR_INVALID_OPERATION, "bin is NULL"); RET_VAL_IF(sink->encoded_frame_cb != NULL, WEBRTC_ERROR_INVALID_OPERATION, "it may be a forwarding sink for encoded frame callback"); RET_VAL_IF((sink->media_types & MEDIA_TYPE_VIDEO) == 0x0, WEBRTC_ERROR_INVALID_OPERATION, "it's not a video track");