webrtc_sink: Add __find_sink_slot_by_id() and use it 66/261466/5
authorSangchul Lee <sc11.lee@samsung.com>
Mon, 19 Jul 2021 11:54:21 +0000 (20:54 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Fri, 23 Jul 2021 02:40:14 +0000 (11:40 +0900)
[Version] 0.2.51
[Issue Type] Refactoring

Change-Id: I6d47ae258ca28cb8d3137a2040120d758b000552
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
packaging/capi-media-webrtc.spec
src/webrtc_sink.c

index 1278b9cd32ee15b1dab96e34cb0bcbce954ce718..eb8969d7011222219a2c7def886bb59c8b98f3a2 100644 (file)
@@ -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
index 466fe04b129d15f27f6acb382d50fff8d4d2b4d2..bba5879fce2fe2fcc2723714eef894b46cf8f7a7 100644 (file)
@@ -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");