Remove radio volume logic for media volume 79/209779/3 submit/tizen/20190715.061154
authorSangchul Lee <sc11.lee@samsung.com>
Thu, 11 Jul 2019 01:43:38 +0000 (10:43 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Thu, 11 Jul 2019 05:14:58 +0000 (14:14 +0900)
It is moved to audio HAL.
 :10ab0a383a32f1a69f8d95cb8304343579d70477

For emulator gstpipeline, volume element is remove.
Instead, audiosink volume/mute properties are used.

The dependency of libmm-sound is removed.

[Version] 0.2.46
[Issue Type] Refactoring

Change-Id: I322ca6b00d503d0e8844536d3f92457c8a7ac2a1
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
packaging/libmm-radio.spec
src/include/mm_radio_priv.h
src/include/mm_radio_priv_hal.h
src/mm_radio_priv_emulator.c
src/mm_radio_priv_hal.c

index d9ac893a511fda908e6e5e4acbb7e9505cd14b3b..c76a0bdbaad2bbf5c42a9a63e44d49e8aeaf0a66 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libmm-radio
 Summary:    Multimedia Framework Radio Library
-Version:    0.2.45
+Version:    0.2.46
 Release:    0
 Group:      System/Libraries
 License:    Apache-2.0
@@ -9,7 +9,6 @@ Source1001:     libmm-radio.manifest
 BuildRequires:  pkgconfig(mm-common)
 BuildRequires:  pkgconfig(dlog)
 BuildRequires:  pkgconfig(mm-session)
-BuildRequires:  pkgconfig(mm-sound)
 BuildRequires:  pkgconfig(capi-media-sound-manager)
 %ifnarch %{arm}
 BuildRequires:  pkgconfig(gstreamer-1.0)
index a806c1204d295b273980d4e5cb134e5cf36a1fab..1c88fe2ee7992c72b8070904b00b49d197037a0a 100644 (file)
@@ -169,7 +169,6 @@ typedef struct _mm_radio_gstreamer_s {
        GstElement *pipeline;
        GstElement *audiosrc;
        GstElement *queue2;
-       GstElement *volume;
        GstElement *audiosink;
        GstBuffer *output_buffer;
 } mm_radio_gstreamer_s;
@@ -220,7 +219,6 @@ typedef struct {
        mm_resource_manager_res_h radio_resource;
        int interrupted_by_resource_conflict;
 
-       unsigned int subs_id;
        float local_volume;
 
        /* region settings */
index 327031440ea18b4e734e2cf264126fc464c4aa36..6f011e30c4e0cce43a94aa3b4fedae3123ad29a4 100644 (file)
@@ -201,15 +201,11 @@ typedef struct {
        sound_stream_info_h stream_info;
        virtual_sound_stream_h vstream;
 #endif
-       unsigned int volume_subs_id;
-
        int freq;
 
        /* command lock */
        pthread_mutex_t volume_lock;
 
-       unsigned int max_media_volume;
-       unsigned int media_volume;
        float local_volume;
 
        /* region settings */
index 4c4d94f83c53be12c816ee626f439a463a5d683d..9df743eb69ae832c0a5b66a804ff60f9df43e7c7 100644 (file)
@@ -227,7 +227,6 @@ int _mmradio_create_radio(mm_radio_t * radio)
        radio->radio_fd = -1;
        radio->freq = DEFAULT_FREQ;
        memset(&radio->region_setting, 0, sizeof(MMRadioRegion_t));
-       radio->subs_id = 0;
        radio->local_volume = 1.0;
 
        /* create msg queue for msg thread */
@@ -450,7 +449,7 @@ int _mmradio_mute(mm_radio_t * radio)
 
 #ifdef USE_GST_PIPELINE
        if (radio->pGstreamer_s) {
-               g_object_set(radio->pGstreamer_s->volume, "mute", 1, NULL);
+               g_object_set(radio->pGstreamer_s->audiosink, "mute", 1, NULL);
                MMRADIO_LOG_DEBUG("g_object set mute");
        }
 #endif
@@ -470,7 +469,7 @@ int _mmradio_unmute(mm_radio_t * radio)
 
 #ifdef USE_GST_PIPELINE
        if (radio->pGstreamer_s) {
-               g_object_set(radio->pGstreamer_s->volume, "mute", 0, NULL);
+               g_object_set(radio->pGstreamer_s->audiosink, "mute", 0, NULL);
                MMRADIO_LOG_DEBUG("g_object set  unmute");
        }
 #endif
@@ -679,13 +678,12 @@ int _mmradio_realize_pipeline(mm_radio_t * radio)
 
        radio->pGstreamer_s->audiosrc = gst_element_factory_make("audiotestsrc", "fm audio src");
        radio->pGstreamer_s->queue2 = gst_element_factory_make("queue2", "queue2");
-       radio->pGstreamer_s->volume = gst_element_factory_make("volume", "volume");
        radio->pGstreamer_s->audiosink = gst_element_factory_make("pulsesink", "audio sink");
 
        val = __mmradio_get_wave_num(radio);
        g_object_set(radio->pGstreamer_s->audiosrc, "wave", val, "volume", 0.8, NULL);
 
-       if (!radio->pGstreamer_s->pipeline || !radio->pGstreamer_s->audiosrc || !radio->pGstreamer_s->queue2 || !radio->pGstreamer_s->volume || !radio->pGstreamer_s->audiosink) {
+       if (!radio->pGstreamer_s->pipeline || !radio->pGstreamer_s->audiosrc || !radio->pGstreamer_s->queue2 || !radio->pGstreamer_s->audiosink) {
                MMRADIO_LOG_DEBUG("One element could not be created. Exiting.");
                return MM_ERROR_RADIO_NOT_INITIALIZED;
        }
@@ -693,13 +691,11 @@ int _mmradio_realize_pipeline(mm_radio_t * radio)
        gst_bin_add_many(GST_BIN(radio->pGstreamer_s->pipeline),
                                        radio->pGstreamer_s->audiosrc,
                                        radio->pGstreamer_s->queue2,
-                                       radio->pGstreamer_s->volume,
                                        radio->pGstreamer_s->audiosink,
                                        NULL);
        if (!gst_element_link_many(
                radio->pGstreamer_s->audiosrc,
                radio->pGstreamer_s->queue2,
-               radio->pGstreamer_s->volume,
                radio->pGstreamer_s->audiosink,
                NULL)) {
                MMRADIO_LOG_DEBUG("failed to element link (src - queue - volue - sink)");
@@ -1457,8 +1453,8 @@ int _mmradio_set_volume(mm_radio_t *radio, float volume)
        radio->local_volume = volume;
 
 #ifdef USE_GST_PIPELINE
-       if (radio->pGstreamer_s && radio->pGstreamer_s->volume) {
-               g_object_set(radio->pGstreamer_s->volume, "volume", volume, NULL);
+       if (radio->pGstreamer_s && radio->pGstreamer_s->audiosink) {
+               g_object_set(radio->pGstreamer_s->audiosink, "volume", volume, NULL);
                MMRADIO_LOG_DEBUG("g_object set volume");
        }
 #endif
index c3c3bdc0b855dfc6f0def22d28b34fb761293c10..67d4a0f8fe93c73c62ca686b141856b104dcff46 100644 (file)
@@ -35,7 +35,6 @@
 
 #include <mm_error.h>
 #include <mm_message.h>
-#include <mm_sound.h>
 
 #include "mm_radio_priv_hal.h"
 
@@ -128,8 +127,6 @@ static void __mmradio_destroy_threads(mm_radio_t *radio);
 static int __mmradio_create_thread_type(mm_radio_t *radio, MMRadioThreadTypes type);
 static void __mmradio_destroy_thread_type(mm_radio_t *radio, MMRadioThreadTypes type);
 
-static void __mmradio_volume_changed_cb(volume_type_t type, unsigned int volume, void *user_data);
-static int __mmradio_set_media_volume(mm_radio_t *radio, unsigned int level);
 static int __resource_release_cb(mm_resource_manager_h rm,
        mm_resource_manager_res_h res, void *user_data);
 static void __mmradio_msg_thread(mm_radio_t *radio);
@@ -303,8 +300,6 @@ int _mmradio_realize(mm_radio_t *radio)
 {
        int ret = MM_ERROR_NONE;
        bool update = false;
-       int max = 0;
-       unsigned volume = 0;
        MMRadioRegionType region = MM_RADIO_REGION_GROUP_NONE;
 
        MMRADIO_LOG_FENTER();
@@ -337,28 +332,6 @@ int _mmradio_realize(mm_radio_t *radio)
                return ret;
        }
 #endif
-
-       ret = sound_manager_get_max_volume(SOUND_TYPE_MEDIA, &max);
-       if (ret != MM_ERROR_NONE) {
-               MMRADIO_LOG_WARNING("failed to get max volume");
-               radio->max_media_volume = DEFAULT_MAX_MEDIA_VOLUME;
-       } else {
-               radio->max_media_volume = max;
-       }
-
-       ret = mm_sound_volume_get_value(VOLUME_TYPE_MEDIA, &volume);
-
-       if (ret != MM_ERROR_NONE)
-               MMRADIO_LOG_WARNING("failed to get media volume");
-
-       MMRADIO_VOLUME_LOCK(radio);
-       radio->media_volume = volume;
-       MMRADIO_VOLUME_UNLOCK(radio);
-
-       ret = mm_sound_add_volume_changed_callback(__mmradio_volume_changed_cb, (void *)radio, &radio->volume_subs_id);
-       if (ret != MM_ERROR_NONE)
-               MMRADIO_LOG_WARNING("failed to register volume changed callback");
-
        MMRADIO_SET_STATE(radio, MM_RADIO_STATE_READY);
 
        MMRADIO_LOG_FLEAVE();
@@ -375,10 +348,6 @@ int _mmradio_unrealize(mm_radio_t *radio)
        MMRADIO_CHECK_INSTANCE(radio);
        MMRADIO_CHECK_STATE_RETURN_IF_FAIL(radio, MMRADIO_COMMAND_UNREALIZE);
 
-       ret = mm_sound_remove_volume_changed_callback(radio->volume_subs_id);
-       if (ret != MM_ERROR_NONE)
-               MMRADIO_LOG_WARNING("mm_sound_remove_volume_changed_callback error");
-
        /*Finish if there are scans*/
        _mmradio_stop_scan(radio);
 
@@ -578,7 +547,6 @@ int _mmradio_get_state(mm_radio_t *radio, int *pState)
 int _mmradio_start(mm_radio_t *radio)
 {
        int ret = MM_ERROR_NONE;
-       unsigned int volume = 0;
 
        MMRADIO_LOG_FENTER();
 
@@ -632,16 +600,6 @@ int _mmradio_start(mm_radio_t *radio)
                MMRADIO_LOG_DEBUG("radio prepared and opened");
        }
 
-       ret = mm_sound_volume_get_value(VOLUME_TYPE_MEDIA, &volume);
-       if (ret != MM_ERROR_NONE)
-               MMRADIO_LOG_WARNING("failed to get media volume");
-
-       ret = __mmradio_set_media_volume(radio, volume);
-       if (ret != MM_ERROR_NONE) {
-               MMRADIO_LOG_ERROR("failed to set media volume");
-               goto error1;
-       }
-
        ret = radio_hal_start(radio->hal_inf);
        if (ret) {
                ret = __convert_error_code(ret, (char *)__FUNCTION__);
@@ -1449,20 +1407,6 @@ static int __mmradio_get_state(mm_radio_t *radio)
        return radio->current_state;
 }
 
-static void __mmradio_volume_changed_cb(volume_type_t type, unsigned int volume, void *user_data)
-{
-       mm_radio_t *radio = (mm_radio_t *)user_data;
-       int ret = MM_ERROR_NONE;
-       MMRADIO_CHECK_INSTANCE_RETURN_VOID(radio);
-       if (type == VOLUME_TYPE_MEDIA) {
-               MMRADIO_LOG_INFO("Change FM Radio volume to %d", volume);
-               ret = __mmradio_set_media_volume(radio, volume);
-               if (ret != MM_ERROR_NONE)
-                       MMRADIO_LOG_ERROR("failed to set media volume");
-               return;
-       }
-}
-
 int _mmradio_get_region_type(mm_radio_t *radio, MMRadioRegionType *type)
 {
        MMRADIO_LOG_FENTER();
@@ -1519,27 +1463,22 @@ int _mmradio_set_volume(mm_radio_t *radio, float volume)
 
        MMRADIO_VOLUME_LOCK(radio);
        radio->local_volume = volume;
-       MMRADIO_VOLUME_UNLOCK(radio);
 
-       ret = radio_hal_set_volume(radio->hal_inf, volume);
-       if (ret) {
-               ret = __convert_error_code(ret, (char *)__FUNCTION__);
-               if (ret == MM_ERROR_NOT_IMPLEMENTED)
-                       MMRADIO_LOG_WARNING("radio_hal_set_volume is not supported");
-               else
-                       MMRADIO_LOG_ERROR("failed to set radio hal volume");
-               return ret;
-       }
+#ifdef TIZEN_FEATURE_SOUND_VSTREAM
+       if (radio->vstream)
+               ret = sound_manager_set_virtual_stream_volume(radio->vstream, (double)radio->local_volume);
+#endif
+       MMRADIO_VOLUME_UNLOCK(radio);
 
        MMRADIO_LOG_FLEAVE();
 
-       return MM_ERROR_NONE;
+       return ret;
 }
 
 int _mmradio_get_volume(mm_radio_t *radio, float *pVolume)
 {
        int ret = MM_ERROR_NONE;
-       float volume = 0.0;
+
        MMRADIO_LOG_FENTER();
 
        MMRADIO_CHECK_INSTANCE(radio);
@@ -1547,20 +1486,8 @@ int _mmradio_get_volume(mm_radio_t *radio, float *pVolume)
 
        MMRADIO_RETURN_VAL_IF_FAIL(pVolume, MM_ERROR_INVALID_ARGUMENT);
 
-       ret = radio_hal_get_volume(radio->hal_inf, &volume);
-       if (ret) {
-               ret = __convert_error_code(ret, (char *)__FUNCTION__);
-               if (ret == MM_ERROR_NOT_IMPLEMENTED)
-                       MMRADIO_LOG_WARNING("radio_hal_get_volume is not supported");
-               else
-                       MMRADIO_LOG_ERROR("failed to get radio hal volume");
-               *pVolume = 0;
-               return ret;
-       }
-
        MMRADIO_VOLUME_LOCK(radio);
-       radio->local_volume = volume;
-       *pVolume = (float)radio->local_volume;
+       *pVolume = radio->local_volume;
        MMRADIO_VOLUME_UNLOCK(radio);
 
        MMRADIO_LOG_FLEAVE();
@@ -1568,37 +1495,6 @@ int _mmradio_get_volume(mm_radio_t *radio, float *pVolume)
        return ret;
 }
 
-static int __mmradio_set_media_volume(mm_radio_t *radio, unsigned int level)
-{
-       int ret = MM_ERROR_NONE;
-
-       MMRADIO_LOG_FENTER();
-
-       MMRADIO_CHECK_INSTANCE(radio);
-       MMRADIO_CHECK_STATE_RETURN_IF_FAIL(radio, MMRADIO_COMMAND_SET_VOLUME);
-
-       MMRADIO_LOG_INFO("Setting %d volume", level);
-
-       MMRADIO_VOLUME_LOCK(radio);
-       radio->media_volume = level;
-       MMRADIO_VOLUME_UNLOCK(radio);
-
-       ret = radio_hal_set_media_volume(radio->hal_inf, level);
-       if (ret) {
-               ret = __convert_error_code(ret, (char *)__FUNCTION__);
-               if (ret == MM_ERROR_NOT_IMPLEMENTED) {
-                       MMRADIO_LOG_WARNING("radio_hal_set_media_volume is not supported");
-               } else if (ret != MM_ERROR_NONE) {
-                       MMRADIO_LOG_ERROR("failed to set radio hal media volume");
-                       return ret;
-               }
-       }
-
-       MMRADIO_LOG_FLEAVE();
-
-       return MM_ERROR_NONE;
-}
-
 static int __resource_release_cb(mm_resource_manager_h rm,
        mm_resource_manager_res_h res, void *user_data)
 {