webrtc_sink: Save mute value and apply it when audiosink is created 34/289634/3 accepted/tizen/unified/20230322.080551
authorSangchul Lee <sc11.lee@samsung.com>
Sat, 11 Mar 2023 07:04:34 +0000 (16:04 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Mon, 20 Mar 2023 03:48:29 +0000 (12:48 +0900)
[Version] 0.4.3
[Issue Type] Improvement

Change-Id: Icb5181afd2c759756187cd2a68ce4fa315c84c15

packaging/capi-media-webrtc.spec
src/webrtc_sink.c

index 75c8872c9c18f30d477818e3ac31bf89a40ef80b..cb7c1119f9641f2f82343e99ce85c65dfaf46609 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-media-webrtc
 Summary:    A WebRTC library in Tizen Native API
-Version:    0.4.2
+Version:    0.4.3
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
index 97e8cbf6bbfb48f60c4e98936e052ad2ca4f023f..d9c3df1f1243decd160a9928aafcc9cba90f58cd 100644 (file)
@@ -317,6 +317,8 @@ static int __build_audiosink(webrtc_s *webrtc, GstElement *decodebin, GstPad *sr
                                        goto exit;
                        }
                }
+               g_object_set(G_OBJECT(audiosink), "mute", sink->av[AV_IDX_AUDIO].mute, NULL);
+               LOG_DEBUG("audiosink mute[%d]", sink->av[AV_IDX_AUDIO].mute);
 
                if (!(audioresample = _create_element(DEFAULT_ELEMENT_AUDIORESAMPLE, NULL)))
                        goto exit;
@@ -1253,9 +1255,11 @@ int _set_audio_mute_to_sink(webrtc_s *webrtc, unsigned int track_id, bool mute)
        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 an audio track");
        RET_VAL_IF(sink->sound_stream_info.type == NULL, WEBRTC_ERROR_INVALID_OPERATION, "sound_stream_info is not set");
-       RET_VAL_IF(!(audiosink = gst_bin_get_by_name(sink->bin, ELEMENT_NAME_AUDIO_SINK)), WEBRTC_ERROR_INVALID_OPERATION, "could not find audio sink element");
 
-       g_object_set(G_OBJECT(audiosink), "mute", mute, NULL);
+       sink->av[AV_IDX_AUDIO].mute = mute;
+
+       if ((audiosink = gst_bin_get_by_name(sink->bin, ELEMENT_NAME_AUDIO_SINK)))
+               g_object_set(G_OBJECT(audiosink), "mute", mute, NULL);
 
        LOG_INFO("webrtc[%p] track_id[%u] mute[%u]", webrtc, track_id, mute);
 
@@ -1265,7 +1269,6 @@ int _set_audio_mute_to_sink(webrtc_s *webrtc, unsigned int track_id, bool mute)
 int _get_audio_mute_from_sink(webrtc_s *webrtc, unsigned int track_id, bool *muted)
 {
        webrtc_gst_slot_s *sink;
-       GstElement *audiosink;
 
        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");
@@ -1277,9 +1280,8 @@ int _get_audio_mute_from_sink(webrtc_s *webrtc, unsigned int track_id, bool *mut
        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 an audio track");
        RET_VAL_IF(sink->sound_stream_info.type == NULL, WEBRTC_ERROR_INVALID_OPERATION, "sound_stream_info is not set");
-       RET_VAL_IF(!(audiosink = gst_bin_get_by_name(sink->bin, ELEMENT_NAME_AUDIO_SINK)), WEBRTC_ERROR_INVALID_OPERATION, "could not find audio sink element");
 
-       g_object_get(G_OBJECT(audiosink), "mute", muted, NULL);
+       *muted = sink->av[AV_IDX_AUDIO].mute;
 
        LOG_INFO("webrtc[%p] track_id[%u] muted[%u]", webrtc, track_id, *muted);