[0.6.191] volume/mute modification 98/205898/2
authorSangchul Lee <sc11.lee@samsung.com>
Fri, 10 May 2019 07:26:19 +0000 (16:26 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Fri, 10 May 2019 07:37:48 +0000 (16:37 +0900)
- in case of using pulsesink, it is changed to use its
  volume/mute properties instead of volume element to
  set/get volume or mute of the pipeline.
- note that audio sink element which is only using volume
  element is openalsink.

Change-Id: I82307932a63e01a1f2859558628f714bd5998b15
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
packaging/libmm-player.spec
src/mm_player_priv.c

index 4746670986e4605137ce51776b3d517653bce82a..3a939a8c6c6bdeb663b3be6d8183fd28af6beeb4 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libmm-player
 Summary:    Multimedia Framework Player Library
-Version:    0.6.190
+Version:    0.6.191
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
index 72a476b71c34e227efff338502f41fe2aed32ffd..ccdef1b5dd07020ac60788e8e01b65da7adbc578 100644 (file)
@@ -2578,6 +2578,7 @@ void
 __mmplayer_gst_set_pulsesink_property(mmplayer_t *player)
 {
        #define MAX_PROPS_LEN 128
+       mmplayer_gst_element_t *audiobin = NULL;
        gint latency_mode = 0;
        gchar *stream_type = NULL;
        gchar *latency = NULL;
@@ -2592,6 +2593,14 @@ __mmplayer_gst_set_pulsesink_property(mmplayer_t *player)
        MMPLAYER_FENTER();
        MMPLAYER_RETURN_IF_FAIL(player && player->pipeline && player->pipeline->audiobin);
 
+       audiobin = player->pipeline->audiobin;
+
+       g_object_set(G_OBJECT(audiobin[MMPLAYER_A_SINK].gst), "volume", player->sound.volume, NULL);
+       if (player->sound.mute) {
+               LOGD("mute enabled");
+               g_object_set(G_OBJECT(audiobin[MMPLAYER_A_SINK].gst), "mute", player->sound.mute, NULL);
+       }
+
        mm_attrs_get_int_by_name(player->attrs, "sound_stream_index", &stream_id);
        mm_attrs_get_string_by_name(player->attrs, "sound_stream_type", &stream_type);
 
@@ -2601,7 +2610,7 @@ __mmplayer_gst_set_pulsesink_property(mmplayer_t *player)
                snprintf(stream_props, sizeof(stream_props) - 1, "props,media.role=%s, media.parent_id=%d",
                                stream_type, stream_id);
                props = gst_structure_from_string(stream_props, NULL);
-               g_object_set(player->pipeline->audiobin[MMPLAYER_A_SINK].gst, "stream-properties", props, NULL);
+               g_object_set(audiobin[MMPLAYER_A_SINK].gst, "stream-properties", props, NULL);
                LOGI("stream_type[%s], stream_id[%d], result[%s].", stream_type, stream_id, stream_props);
                gst_structure_free(props);
        }
@@ -2620,9 +2629,7 @@ __mmplayer_gst_set_pulsesink_property(mmplayer_t *player)
                break;
        };
 
-       g_object_set(player->pipeline->audiobin[MMPLAYER_A_SINK].gst,
-                       "latency", latency,
-                       NULL);
+       g_object_set(audiobin[MMPLAYER_A_SINK].gst, "latency", latency, NULL);
 
        LOGD("audiosink property - latency=%s", latency);
 
@@ -2724,13 +2731,15 @@ __mmplayer_gst_make_audio_playback_sink(mmplayer_t *player, GList **bucket)
        /* resampler */
        MMPLAYER_CREATE_ELEMENT(audiobin, MMPLAYER_A_RESAMPLER,  player->ini.audioresampler_element, "audio resampler", *bucket, player);
 
-       /* for logical volume control */
-       MMPLAYER_CREATE_ELEMENT(audiobin, MMPLAYER_A_VOL, "volume", "volume", *bucket, player);
-       g_object_set(G_OBJECT(audiobin[MMPLAYER_A_VOL].gst), "volume", player->sound.volume, NULL);
+       if (g_strrstr(player->ini.audiosink_element, "openalsink")) {
+               /* currently, only openalsink uses volume element */
+               MMPLAYER_CREATE_ELEMENT(audiobin, MMPLAYER_A_VOL, "volume", "volume", *bucket, player);
+               g_object_set(G_OBJECT(audiobin[MMPLAYER_A_VOL].gst), "volume", player->sound.volume, NULL);
 
-       if (player->sound.mute) {
-               LOGD("mute enabled");
-               g_object_set(G_OBJECT(audiobin[MMPLAYER_A_VOL].gst), "mute", player->sound.mute, NULL);
+               if (player->sound.mute) {
+                       LOGD("mute enabled");
+                       g_object_set(G_OBJECT(audiobin[MMPLAYER_A_VOL].gst), "mute", player->sound.mute, NULL);
+               }
        }
 
        mm_attrs_get_int_by_name(player->attrs, "content_audio_channels", &channels);
@@ -5192,10 +5201,8 @@ __mmplayer_gst_set_volume_property(mmplayer_t *player, const char *prop_name)
                return MM_ERROR_NONE;
        }
 
-       if (player->build_audio_offload) {
-               LOGD("offload pipeline");
+       if (player->build_audio_offload || g_strrstr(player->ini.audiosink_element, "pulsesink"))
                volume_elem_id = MMPLAYER_A_SINK;
-       }
 
        vol_element = player->pipeline->audiobin[volume_elem_id].gst;
        if (!vol_element) {