webrtc_sink: Save mute value and apply it when audiosink is created 56/289656/1
authorSangchul Lee <sc11.lee@samsung.com>
Sat, 11 Mar 2023 07:04:34 +0000 (16:04 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Mon, 13 Mar 2023 05:04:50 +0000 (14:04 +0900)
[Version] 0.3.291
[Issue type] Improvement

Change-Id: Icb5181afd2c759756187cd2a68ce4fa315c84c15

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

index 42094c628cdf9ac9a020654f1a59f1baf559905b..7d0b0d8d35fcc7ae22e3d6f2cddb876d26bd919a 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-media-webrtc
 Summary:    A WebRTC library in Tizen Native API
-Version:    0.3.290
+Version:    0.3.291
 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);