Move volume vconf set to pulseaudio
[platform/core/multimedia/libmm-sound.git] / include / mm_sound.h
index ef35173..8caa3e0 100644 (file)
        </table></div>
 
  */
-#define MM_SOUND_STREAM_TYPE_LEN 64
 
 /*
  * MMSound Volume APIs
@@ -328,17 +327,6 @@ typedef enum {
 } mm_sound_source_type_e;
 
 /**
- * Volume change callback function type.
- *
- * @param      user_data               [in]    Argument passed when callback has called
- *
- * @return     No return value
- * @remark     None.
- * @see                mm_sound_volume_add_callback mm_sound_volume_remove_callback
- */
-typedef void (*volume_callback_fn)(void* user_data);
-
-/**
  * Active volume change callback function type.
  *
  * @param      type                    [in]    The sound type of changed volume
@@ -352,97 +340,9 @@ typedef void (*volume_callback_fn)(void* user_data);
 typedef void (*mm_sound_volume_changed_cb) (volume_type_t type, unsigned int volume, void *user_data);
 
 
-/**
- * This function is to retrieve number of volume level.
- *
- * @param      type                    [in]    volume type to query
- * @param      step                    [out]   number of volume steps
- *
- * @return     This function returns MM_ERROR_NONE on success, or negative value
- *                     with error code.
- * @remark     step means number of steps. so actual volume step can be 0 ~ step-1
- * @see                volume_type_t
- * @pre                None.
- * @post       None.
- * @par Example
- * @code
-int step = 0;
-int ret = 0;
-int max = 0;
 
-ret = mm_sound_volume_get_step(VOLUME_TYPE_SYSTEM, &step);
-if(ret < 0)
-{
-       printf("Can not get volume step\n");
-}
-else
-{
-       max = step - 1;
-       //set system volume to max value
-       mm_sound_volume_set_value(VOLUME_TYPE_SYSTEM, max);
-}
- * @endcode
- */
-int mm_sound_volume_get_step(volume_type_t type, int *step);
-
-
-/**
- * This function is to add volume changed callback.
- *
- * @param      type                    [in]    volume type to set change callback function
- * @param      func                    [in]    callback function pointer
- * @param      user_data               [in]    user data passing to callback function
- *
- * @return     This function returns MM_ERROR_NONE on success, or negative value
- *                     with error code.
- * @remark     Only one callback function per volume type will be registered.
- *                     if you want to change callback function for certain volume type,
- *                     remove callback first via mm_sound_volume_remove_callback().
- * @see                volume_type_t volume_callback_fn
- * @pre                There should be not be pre-registered callback fuction to given volume type.
- * @post       Callback function will be registered to given volume type
- * @par Example
- * @code
-volume_type_t g_vol_type = VOLUME_TYPE_MEDIA;
 
-void _volume_callback(void *data)
-{
-       unsigned int value = 0;
-       int result = 0;
-       volume_type_t *type = (volume_type_t*)data;
-
-       result = mm_sound_volume_get_value(*type, &value);
-       if(result == MM_ERROR_NONE)
-       {
-               printf("Current volume value is %d\n", value);
-       }
-       else
-       {
-               printf("Can not get volume\n");
-       }
-}
-
-int volume_control()
-{
-       int ret = 0;
-
-       ret = mm_sound_volume_add_callback(g_vol_type, _volume_callback, (void*)&g_vol_type);
-       if ( MM_ERROR_NONE != ret)
-       {
-               printf("Can not add callback\n");
-       }
-       else
-       {
-               printf("Add callback success\n");
-       }
-
-       return 0;
-}
-
- * @endcode
- */
-int mm_sound_volume_add_callback(volume_type_t type, volume_callback_fn func, void* user_data);
-int mm_sound_add_volume_changed_callback(mm_sound_volume_changed_cb func, void* user_data, unsigned int *subs_id);
+int mm_sound_add_volume_changed_callback(mm_sound_volume_changed_cb func, void* user_data, unsigned int *id);
 
 
 /**
@@ -493,7 +393,7 @@ int mm_sound_volume_remove_callback(volume_type_t type);
  * @return     This function returns MM_ERROR_NONE on success, or negative value
  *                     with error code.
  **/
-int mm_sound_remove_volume_changed_callback(unsigned int subs_id);
+int mm_sound_remove_volume_changed_callback(unsigned int id);
 
 /**
  * This function is to set volume level of certain volume type.
@@ -503,32 +403,11 @@ int mm_sound_remove_volume_changed_callback(unsigned int subs_id);
  *
  * @return     This function returns MM_ERROR_NONE on success, or negative value
  *                     with error code.
- * @remark     value should be 0 ~ mm_sound_volume_get_step() -1
- * @see                mm_sound_volume_get_step, mm_sound_volume_get_value volume_type_t
+ * @remark     value should be 0 ~ MAX
+ * @see                mm_sound_volume_get_value volume_type_t
  * @pre                None.
  * @post       Volume value will be changed to given value for given volume type.
  * @par Example
- * @code
-int step = 0;
-int ret = 0;
-int max = 0;
-
-ret = mm_sound_volume_get_step(VOLUME_TYPE_SYSTEM, &step);
-if(ret < 0)
-{
-       printf("Can not get volume step\n");
-}
-else
-{
-       max = step - 1;
-       //set system volume to max value
-       ret = mm_sound_volume_set_value(VOLUME_TYPE_SYSTEM, max);
-       if(ret < 0)
-       {
-               printf("Can not set volume value\n");
-       }
-}
- * @endcode
  */
 int mm_sound_volume_set_value(volume_type_t type, const unsigned int volume_level);
 
@@ -567,805 +446,106 @@ int mm_sound_volume_get_value(volume_type_t type, unsigned int *value);
 
 
 /**
- * This function is to set primary volume type.
- *
- * @param      type                    [in]    volume type to set as primary volume type.
- *
- * @return     This function returns MM_ERROR_NONE on success, or negative value
- *                     with error code.
- * @remark     Application should use this function during foreground.
- *                     Application should clear primary volume type by mm_sound_volume_primary_type_clear() when it goes background.
- * @pre                None.
- * @post       Volume app. will be update given volume type when H/W volume control key pressed.
- * @see                mm_sound_volume_primary_type_clear volume_type_t
- * @par Example
- * @code
-static int _resume(void *data)
-{
-       int ret = 0;
-
-       ret = mm_sound_volume_primary_type_set(VOLUME_TYPE_MEDIA);
-       if(ret < 0)
-       {
-               printf("Can not set primary volume type\n");
-       }
-       ...
-}
-
-static int _pause(void* data)
-{
-       int ret = 0;
-
-       ret = mm_sound_volume_primary_type_set(VOLUME_TYPE_UNKNOWN);
-       if(ret < 0)
-       {
-               printf("Can not clear primary volume type\n");
-       }
-       ...
-}
-
-int main()
-{
-       ...
-       struct appcore_ops ops = {
-               .create = _create,
-               .terminate = _terminate,
-               .pause = _pause,
-               .resume = _resume,
-               .reset = _reset,
-       };
-       ...
-       return appcore_efl_main(PACKAGE, ..., &ops);
-}
- * @endcode
- */
-int mm_sound_volume_primary_type_set(volume_type_t type);
-int mm_sound_volume_primary_type_get(volume_type_t *type);
-int mm_sound_volume_primary_type_clear(void);
-
-int mm_sound_set_call_mute(volume_type_t type, int mute);
-int mm_sound_get_call_mute(volume_type_t type, int *mute);
-
-typedef enum {
-       MM_SOUND_FACTORY_MIC_TEST_STATUS_OFF = 0,
-       MM_SOUND_FACTORY_MIC_TEST_STATUS_MAIN_MIC,
-       MM_SOUND_FACTORY_MIC_TEST_STATUS_SUB_MIC,
-       MM_SOUND_FACTORY_MIC_TEST_STATUS_NUM,
-} mm_sound_factory_mic_test_status_t;/* device in for factory mic test */
-
-int mm_sound_set_factory_mic_test(mm_sound_factory_mic_test_status_t mic_test);
-
-int mm_sound_get_factory_mic_test(mm_sound_factory_mic_test_status_t *mic_test);
-
-typedef enum {
-       MMSOUND_DHA_OFF,
-       MMSOUND_DHA_SOFT_SOUND,
-       MMSOUND_DHA_CLEAR_SOUND,
-       MMSOUND_DHA_PERSNOL_LEFT,
-       MMSOUND_DHA_PERSNOL_RIGHT,
-       MMSOUND_DHA_INVALID,
-} MMSoundDHAMode_t;
-
-
-
-/*
- * MMSound PCM APIs
- */
-typedef void*  MMSoundPcmHandle_t;     /**< MMsound PCM handle type */
-
-/**
- * Enumerations of Format used in MMSoundPcm operation.
- */
-typedef enum {
-       MMSOUND_PCM_U8 = 0x70, /**< unsigned 8bit audio */
-       MMSOUND_PCM_S16_LE,   /**< signed 16bit audio */
-} MMSoundPcmFormat_t;
-
-/**
- * Enumerations of Channel count used in MMSoundPcm operation.
- */
-typedef enum {
-       MMSOUND_PCM_MONO = 0x80,        /**< Mono channel */
-       MMSOUND_PCM_STEREO,                     /**< Stereo channel */
-}MMSoundPcmChannel_t;
-
-/**
- * Get audio stream latency value.
- *
- * @param      handle                  [in]    handle to get latency
- * @param      latency                 [out]   Stream latency value(millisecond).
- *
- * @return     This function returns MM_ERROR_NONE on success, or negative value
- *                     with error code.
- * @remark
- * @see
- */
-int mm_sound_pcm_get_latency(MMSoundPcmHandle_t handle, int *latency);
-
-/**
- * Get started status of pcm stream.
- *
- * @param      handle                  [in]    handle to check pcm start
- * @param      is_started                      [out]   retrieve started status of pcm stream.
- *
- * @return     This function returns MM_ERROR_NONE on success, or negative value
- *                     with error code.
- * @remark
- * @see
- */
-int mm_sound_pcm_is_started(MMSoundPcmHandle_t handle, bool *is_started);
-
-int mm_sound_pcm_play_open_no_session(MMSoundPcmHandle_t *handle, const unsigned int rate, MMSoundPcmChannel_t channel, MMSoundPcmFormat_t format, int volume_config);
-
-/**
- * This function is to create handle for PCM playback.
- *
- * @param      handle                  [out] handle to play pcm data
- * @param      rate                    [in] sample rate (8000Hz ~ 44100Hz)
- * @param      channel                 [in] number of channels (mono or stereo)
- * @param      format                  [in] S8 or S16LE
- * @param      volume config   [in] Volume type & volume gain
- *
- * @return     This function returns suggested buffer size (in bytes) on success, or negative value
- *                     with error code.
- * @remark     use mm_sound_volume_set_value() function to change volume
- * @see                mm_sound_pcm_play_write, mm_sound_pcm_play_close, mm_sound_volume_set_value, MMSoundPcmFormat_t, MMSoundPcmChannel_t volume_type_t
- * @pre                None.
- * @post       PCM play handle will be created.
- * @par Example
- * @code
-#include <mm_sound.h>
-#include <stdio.h>
-#include <alloca.h>
-
-int main(int argc, char* argv[])
-{
-       FILE *fp = NULL;
-       char *buffer = NULL;
-       int ret = 0;
-       int size = 0;
-       int readed = 0;
-       MMSoundPcmHandle_t handle;
-       char *filename = NULL;
-
-       if(argc !=2 )
-       {
-               printf("Usage) %s filename\n", argv[0]);
-               return -1;
-       }
-       filename = argv[1];
-
-       fp = fopen(filename,"r");
-       if(fp ==NULL)
-       {
-               printf("Can not open file %s\n", filename);
-               return -1;
-       }
-
-       size = mm_sound_pcm_play_open(&handle, 44100, MMSOUND_PCM_STEREO, MMSOUND_PCM_S16_LE, VOLUME_TYPE_SYSTEM);
-       if(size < 0)
-       {
-               printf("Can not open playback handle\n");
-               return -2;
-       }
-
-       buffer = alloca(size);
-       while((readed = fread(buffer, size, sizeof(char), fp)) > 0 )
-       {
-               ret = mm_sound_pcm_play_write(handle, (void*)buffer, readed);
-               if(ret < 0)
-               {
-                       printf("write fail\n");
-                       break;
-               }
-               memset(buffer, '\0', sizeof(buffer));
-       }
-
-       fclose(fp);
-       mm_sound_pcm_play_close(handle);
-       return 0;
-}
- * @endcode
- */
-int mm_sound_pcm_play_open(MMSoundPcmHandle_t *handle, const unsigned int rate, MMSoundPcmChannel_t channel, MMSoundPcmFormat_t format, int volume_config);
-
-/**
- * This function start pcm playback
- *
- * @param      handle  [in] handle to start playback
- *
- * @return     This function returns MM_ERROR_NONE on success, or negative value
- *                     with error code.
- * @remark
- * @see
- * @pre                PCM playback handle should be allocated.
- * @post       PCM playback is ready to write.
- */
-int mm_sound_pcm_play_start(MMSoundPcmHandle_t handle);
-
-/**
- * This function stop pcm playback
- *
- * @param      handle  [in] handle to stop playback
- *
- * @return     This function returns MM_ERROR_NONE on success, or negative value
- *                     with error code.
- * @remark
- * @see
- * @pre                PCM playback handle should be allocated.
- * @post       PCM playback data will not be buffered.
- */
-int mm_sound_pcm_play_stop(MMSoundPcmHandle_t handle);
-
-/**
- * This function flush pcm playback
- *
- * @param      handle  [in] handle to flush playback
- *
- * @return     This function returns MM_ERROR_NONE on success, or negative value
- *                     with error code.
- * @remark
- * @see
- * @pre                PCM playback handle should be allocated.
- * @post       PCM playback data will not be buffered.
- */
-int mm_sound_pcm_play_drain(MMSoundPcmHandle_t handle);
-
-/**
- * This function flush pcm playback
- *
- * @param      handle  [in] handle to flush playback
- *
- * @return     This function returns MM_ERROR_NONE on success, or negative value
- *                     with error code.
- * @remark
- * @see
- * @pre                PCM playback handle should be allocated.
- * @post       PCM playback data will not be buffered.
- */
-int mm_sound_pcm_play_flush(MMSoundPcmHandle_t handle);
-
-/**
- * This function is to play PCM memory buffer.
- *
- * @param      handle  [in] handle to play pcm data
- * @param      ptr             [in] pcm buffer address
- * @param      length_byte     [in] size of pcm buffer (in bytes)
- *
- * @return     This function returns written data size on success, or negative value
- *                     with error code.
- * @remark     Make pcm buffer size with returned value of mm_sound_pcm_play_open()
- * @see                mm_sound_pcm_play_open, mm_sound_pcm_play_close
- * @pre                PCM play handle should be created.
- * @post       Sound will be generated with given PCM buffer data.
- * @par Example
- * @code
-#include <mm_sound.h>
-#include <stdio.h>
-#include <alloca.h>
-
-int main(int argc, char* argv[])
-{
-       FILE *fp = NULL;
-       char *buffer = NULL;
-       int ret = 0;
-       int size = 0;
-       int readed = 0;
-       MMSoundPcmHandle_t handle;
-       char *filename = NULL;
-
-       if(argc !=2 )
-       {
-               printf("Usage) %s filename\n", argv[0]);
-               return -1;
-       }
-       filename = argv[1];
-
-       fp = fopen(filename,"r");
-       if(fp ==NULL)
-       {
-               printf("Can not open file %s\n", filename);
-               return -1;
-       }
-
-       size = mm_sound_pcm_play_open(&handle, 44100, MMSOUND_PCM_STEREO, MMSOUND_PCM_S16_LE, VOLUME_TYPE_SYSTEM);
-       if(size < 0)
-       {
-               printf("Can not open playback handle\n");
-               return -2;
-       }
-
-       buffer = alloca(size);
-       while((readed = fread(buffer, size, sizeof(char), fp)) > 0 )
-       {
-               ret = mm_sound_pcm_play_write(handle, (void*)buffer, readed);
-               if(ret < 0)
-               {
-                       printf("write fail\n");
-                       break;
-               }
-               memset(buffer, '\0', sizeof(buffer));
-       }
-
-       fclose(fp);
-       mm_sound_pcm_play_close(handle);
-       return 0;
-}
- * @endcode
- */
-int mm_sound_pcm_play_write(MMSoundPcmHandle_t handle, void* ptr, unsigned int length_byte);
-
-
-
-/**
- * This function is to close PCM memory playback handle
- *
- * @param      handle  [in] handle to play pcm data
- *
- * @return     This function returns MM_ERROR_NONE on success, or negative value
- *                     with error code.
- * @remark     None
- * @see                mm_sound_pcm_play_open, mm_sound_pcm_play_write
- * @pre                PCM play handle should be created
- * @post       PCM play handle will be terminated.
- * @par Example
- * @code
-#include <mm_sound.h>
-#include <stdio.h>
-#include <alloca.h>
-
-int main(int argc, char* argv[])
-{
-       FILE *fp = NULL;
-       char *buffer = NULL;
-       int ret = 0;
-       int size = 0;
-       int readed = 0;
-       MMSoundPcmHandle_t handle;
-       char *filename = NULL;
-
-       if(argc !=2 )
-       {
-               printf("Usage) %s filename\n", argv[0]);
-               return -1;
-       }
-       filename = argv[1];
-
-       fp = fopen(filename,"r");
-       if(fp ==NULL)
-       {
-               printf("Can not open file %s\n", filename);
-               return -1;
-       }
-
-       size = mm_sound_pcm_play_open(&handle, 44100, MMSOUND_PCM_STEREO, MMSOUND_PCM_S16_LE, VOLUME_TYPE_SYSTEM);
-       if(size < 0)
-       {
-               printf("Can not open playback handle\n");
-               return -2;
-       }
-
-       buffer = alloca(size);
-       while((readed = fread(buffer, size, sizeof(char), fp)) > 0 )
-       {
-               ret = mm_sound_pcm_play_write(handle, (void*)buffer, readed);
-               if(ret < 0)
-               {
-                       printf("write fail\n");
-                       break;
-               }
-               memset(buffer, '\0', sizeof(buffer));
-       }
-
-       fclose(fp);
-       mm_sound_pcm_play_close(handle);
-       return 0;
-}
- * @endcode
- */
-int mm_sound_pcm_play_close(MMSoundPcmHandle_t handle);
-
-/**
- * This function is to ignore session for playback
- *
- * @param      handle  [in] handle to play pcm data
- *
- * @return     This function returns MM_ERROR_NONE on success, or negative value
- *                     with error code.
- * @remark     This function only works for not started pcm handle and can't be reversed.
- * @see
- * @pre                PCM play handle should be created and not started.
- * @post       PCM play session will be set to mix.
- */
-int mm_sound_pcm_play_ignore_session(MMSoundPcmHandle_t *handle);
-
-/**
- * This function is to create handle for PCM capture.
- *
- * @param      handle  [out] handle to capture pcm data
- * @param      rate    [in] sample rate (8000Hz ~ 44100Hz)
- * @param      channel [in] number of channels (mono or stereo)
- * @param      format  [in] S8 or S16LE
- *
- * @return     This function returns suggested buffer size (in bytes) on success, or negative value
- *                     with error code.
- * @remark     only mono channel is valid for now.
- * @see                mm_sound_pcm_capture_read, mm_sound_pcm_capture_close, MMSoundPcmFormat_t, MMSoundPcmChannel_t
- * @pre                None.
- * @post       PCM capture handle will be allocated.
- * @par Example
- * @code
-#include <mm_sound.h>
-#include <stdio.h>
-#include <alloca.h>
-
-int main(int argc, char* argv[])
-{
-       FILE *fp = NULL;
-       char *buffer = NULL;
-       int ret = 0;
-       int size = 0;
-       int count = 0;
-       MMSoundPcmHandle_t handle;
-       char *filename = NULL;
-
-       if(argc !=2 )
-       {
-               printf("Usage) %s filename\n", argv[0]);
-               return -1;
-       }
-       filename = argv[1];
-
-       fp = fopen(filename,"w");
-       if(fp ==NULL)
-       {
-               printf("Can not open file %s\n", filename);
-               return -1;
-       }
-
-       size = mm_sound_pcm_capture_open(&handle, 44100, MMSOUND_PCM_MONO, MMSOUND_PCM_S16_LE);
-       if(size < 0)
-       {
-               printf("Can not open capture handle\n");
-               return -2;
-       }
-
-       buffer = alloca(size);
-       while(1)
-       {
-               ret = mm_sound_pcm_capture_read(handle, (void*)buffer, size);
-               if(ret < 0)
-               {
-                       printf("read fail\n");
-                       break;
-               }
-               fwrite(buffer, ret, sizeof(char), fp);
-               if(count++ > 20) {
-                       break;
-               }
-       }
-
-       fclose(fp);
-       mm_sound_pcm_capture_close(handle);
-       return 0;
-}
-
- * @endcode
- */
-int mm_sound_pcm_capture_open(MMSoundPcmHandle_t *handle, const unsigned int rate, MMSoundPcmChannel_t channel, MMSoundPcmFormat_t format);
-
-/**
- * This function is to create handle for PCM capture of source_type.
- *
- * @param      handle  [out] handle to capture pcm data
- * @param      rate    [in] sample rate (8000Hz ~ 44100Hz)
- * @param      channel [in] number of channels (mono or stereo)
- * @param      format  [in] S8 or S16LE
- * @param      source_type             [in]  The source_type,mm_sound_source_type_e
- *
- * @return     This function returns suggested buffer size (in bytes) on success, or negative value
- *                     with error code.
- * @remark     only mono channel is valid for now.
- * @see                mm_sound_pcm_capture_read, mm_sound_pcm_capture_close, MMSoundPcmFormat_t, MMSoundPcmChannel_t
- * @pre                None.
- * @post       PCM capture handle will be allocated.
- * @par Example
- * @code
-#include <mm_sound.h>
-#include <stdio.h>
-#include <alloca.h>
-
-int main(int argc, char* argv[])
-{
-       FILE *fp = NULL;
-       char *buffer = NULL;
-       int ret = 0;
-       int size = 0;
-       int count = 0;
-       MMSoundPcmHandle_t handle;
-       char *filename = NULL;
-
-       if(argc !=2 )
-       {
-               printf("Usage) %s filename\n", argv[0]);
-               return -1;
-       }
-       filename = argv[1];
-
-       fp = fopen(filename,"w");
-       if(fp ==NULL)
-       {
-               printf("Can not open file %s\n", filename);
-               return -1;
-       }
-
-       size = mm_sound_pcm_capture_open_ex(&handle, 44100, MMSOUND_PCM_MONO, MMSOUND_PCM_S16_LE,1);
-       if(size < 0)
-       {
-               printf("Can not open capture handle\n");
-               return -2;
-       }
-
-       buffer = alloca(size);
-       while(1)
-       {
-               ret = mm_sound_pcm_capture_read(handle, (void*)buffer, size);
-               if(ret < 0)
-               {
-                       printf("read fail\n");
-                       break;
-               }
-               fwrite(buffer, ret, sizeof(char), fp);
-               if(count++ > 20) {
-                       break;
-               }
-       }
-
-       fclose(fp);
-       mm_sound_pcm_capture_close(handle);
-       return 0;
-}
-
- * @endcode
- */
-int mm_sound_pcm_capture_open_ex(MMSoundPcmHandle_t *handle, const unsigned int rate, MMSoundPcmChannel_t channel, MMSoundPcmFormat_t format, mm_sound_source_type_e source_type);
-
-/**
- * This function start pcm capture
- *
- * @param      handle  [in] handle to start capture
- *
- * @return     This function returns read data size on success, or negative value
- *                     with error code.
- * @remark
- * @see
- * @pre                PCM capture handle should be allocated.
- * @post       PCM capture data will be buffered.
- */
-int mm_sound_pcm_capture_start(MMSoundPcmHandle_t handle);
-
-/**
- * This function stop pcm capture
- *
- * @param      handle  [in] handle to stop capture
- *
- * @return     This function returns read data size on success, or negative value
- *                     with error code.
- * @remark
- * @see
- * @pre                PCM capture handle should be allocated.
- * @post       PCM capture data will not be buffered.
- */
-int mm_sound_pcm_capture_stop(MMSoundPcmHandle_t handle);
-
-/**
- * This function flush pcm capture
- *
- * @param      handle  [in] handle to flush capture
- *
- * @return     This function returns MM_ERROR_NONE on success, or negative value
- *                     with error code.
- * @remark
- * @see
- * @pre                PCM capture handle should be allocated.
- * @post       PCM capture data will not be buffered.
- */
-int mm_sound_pcm_capture_flush(MMSoundPcmHandle_t handle);
-
-/**
- * This function captures PCM to memory buffer. (Samsung extension)
- *
- * @param      handle  [in] handle to play pcm data
- * @param      buffer  [in] pcm buffer address
- * @param      length  [in] size of pcm buffer (in bytes)
- *
- * @return     This function returns read data size on success, or negative value
- *                     with error code.
- * @remark     Make pcm buffer size with returned value of mm_sound_pcm_capture_open()
- * @see                mm_sound_pcm_capture_open, mm_sound_pcm_capture_close
- * @pre                PCM capture handle should be allcated.
- * @post       PCM data will be filled to given memory pointer.
- * @par Example
- * @code
-#include <mm_sound.h>
-#include <stdio.h>
-#include <alloca.h>
-
-int main(int argc, char* argv[])
-{
-       FILE *fp = NULL;
-       char *buffer = NULL;
-       int ret = 0;
-       int size = 0;
-       int count = 0;
-       MMSoundPcmHandle_t handle;
-       char *filename = NULL;
-
-       if(argc !=2 )
-       {
-               printf("Usage) %s filename\n", argv[0]);
-               return -1;
-       }
-       filename = argv[1];
-
-       fp = fopen(filename,"w");
-       if(fp ==NULL)
-       {
-               printf("Can not open file %s\n", filename);
-               return -1;
-       }
-
-       size = mm_sound_pcm_capture_open(&handle, 44100, MMSOUND_PCM_MONO, MMSOUND_PCM_S16_LE);
-       if(size < 0)
-       {
-               printf("Can not open capture handle\n");
-               return -2;
-       }
-
-       buffer = alloca(size);
-       while(1)
-       {
-               ret = mm_sound_pcm_capture_read(handle, (void*)buffer, size);
-               if(ret < 0)
-               {
-                       printf("read fail\n");
-                       break;
-               }
-               fwrite(buffer, ret, sizeof(char), fp);
-               if(count++ > 20) {
-                       break;
-               }
-       }
-
-       fclose(fp);
-       mm_sound_pcm_capture_close(handle);
-       return 0;
-}
-
- * @endcode
- */
-int mm_sound_pcm_capture_read(MMSoundPcmHandle_t handle, void *buffer, const unsigned int length );
-
-/**
- * This function captures PCM memory to memory buffer (Samsung extension)
+ * This function is to set primary volume type.
  *
- * @param      handle  [in] handle to capture pcm data
+ * @param      type                    [in]    volume type to set as primary volume type.
  *
- * @return     This function returns MM_ERROR_NONE on success, or negative value
+ * @return     This function returns MM_ERROR_NONE on success, or negative value
  *                     with error code.
- * @remark     None.
- * @see                mm_sound_pcm_capture_open, mm_sound_pcm_capture_read
- * @pre                PCM capture handle should be opend.
- * @post       PCM capture handle will be freed.
+ * @remark     Application should use this function during foreground.
+ * @pre                None.
+ * @post       Volume app. will be update given volume type when H/W volume control key pressed.
+ * @see                volume_type_t
  * @par Example
  * @code
-#include <mm_sound.h>
-#include <stdio.h>
-#include <alloca.h>
-
-int main(int argc, char* argv[])
+static int _resume(void *data)
 {
-       FILE *fp = NULL;
-       char *buffer = NULL;
        int ret = 0;
-       int size = 0;
-       int count = 0;
-       MMSoundPcmHandle_t handle;
-       char *filename = NULL;
-
-       if(argc !=2 )
-       {
-               printf("Usage) %s filename\n", argv[0]);
-               return -1;
-       }
-       filename = argv[1];
 
-       fp = fopen(filename,"w");
-       if(fp ==NULL)
+       ret = mm_sound_volume_primary_type_set(VOLUME_TYPE_MEDIA);
+       if(ret < 0)
        {
-               printf("Can not open file %s\n", filename);
-               return -1;
+               printf("Can not set primary volume type\n");
        }
+       ...
+}
 
-       size = mm_sound_pcm_capture_open(&handle, 44100, MMSOUND_PCM_MONO, MMSOUND_PCM_S16_LE);
-       if(size < 0)
-       {
-               printf("Can not open capture handle\n");
-               return -2;
-       }
+static int _pause(void* data)
+{
+       int ret = 0;
 
-       buffer = alloca(size);
-       while(1)
+       ret = mm_sound_volume_primary_type_set(VOLUME_TYPE_UNKNOWN);
+       if(ret < 0)
        {
-               ret = mm_sound_pcm_capture_read(handle, (void*)buffer, size);
-               if(ret < 0)
-               {
-                       printf("read fail\n");
-                       break;
-               }
-               fwrite(buffer, ret, sizeof(char), fp);
-               if(count++ > 20) {
-                       break;
-               }
+               printf("Can not clear primary volume type\n");
        }
-
-       fclose(fp);
-       mm_sound_pcm_capture_close(handle);
-       return 0;
+       ...
 }
 
+int main()
+{
+       ...
+       struct appcore_ops ops = {
+               .create = _create,
+               .terminate = _terminate,
+               .pause = _pause,
+               .resume = _resume,
+               .reset = _reset,
+       };
+       ...
+       return appcore_efl_main(PACKAGE, ..., &ops);
+}
  * @endcode
  */
-int mm_sound_pcm_capture_close(MMSoundPcmHandle_t handle);
+int mm_sound_volume_primary_type_set(volume_type_t type);
+int mm_sound_volume_primary_type_get(volume_type_t *type);
 
 /**
- * This function is to ignore session for capture
+ * This function is to set sound filter and apply to selected stream type.
  *
- * @param      handle  [in] handle to capture pcm data
+ * @param      stream_type                     [in]    stream type to apply
+ * @param      filter_name                     [in]    name of filter module to apply
+ * @param      filter_parameters       [in]    extra filter parameters(optional)
+ * @param      filter_group            [in]    extra filter group(optional)
  *
- * @return     This function returns MM_ERROR_NONE on success, or negative value
+ * @return     This function returns MM_ERROR_NONE on success, or negative value
  *                     with error code.
- * @remark     This function only works for not started pcm handle and can't be reversed.
- * @see
- * @pre                PCM capture handle should be created and not started.
- * @post       PCM capture session will be set to mix.
+ * @remark     None
+ * @pre                None
+ * @post       None
+ * @see                None
  */
-int mm_sound_pcm_capture_ignore_session(MMSoundPcmHandle_t *handle);
+int mm_sound_set_filter(const char *stream_type, const char *filter_name, const char *filter_parameters, const char *filter_group);
 
 /**
- * This function sets callback function for receiving messages from pcm API.
+ * This function is to unset sound filter and remove from selected stream type.
  *
- * @param      handle          [in]    Handle of pcm.
- * @param      callback        [in]    Message callback function.
- * @param      user_param      [in]    User parameter which is passed to callback function.
+ * @param      stream_type                     [in]    stream type to remove
  *
- * @return     This function returns MM_ERROR_NONE on success, or negative value with error code.
- * @see                MMMessageCallback
+ * @return     This function returns MM_ERROR_NONE on success, or negative value
+ *                     with error code.
  * @remark     None
- * @par Example
- * @code
-int msg_callback(int message, MMMessageParamType *param, void *user_param)
-{
-       switch (message)
-       {
-               case MM_MESSAGE_SOUND_PCM_CAPTURE_RESTRICTED:
-                       //do something
-                       break;
-
-               case MM_MESSAGE_SOUND_PCM_INTERRUPTED:
-                       //do something
-                       break;
-
-               default:
-                       break;
-       }
-       return TRUE;
-}
+ * @pre                None
+ * @post       None
+ * @see                None
+ */
+int mm_sound_unset_filter(const char *stream_type);
 
-mm_sound_pcm_set_message_callback(pcmHandle, msg_callback, (void *)pcmHandle);
- * @endcode
+/**
+ * This function is to control filter configurations to selected stream type.
+ *
+ * @param      stream_type                     [in]    stream type to apply
+ * @param      filter_name                     [in]    specify filter module to apply
+ * @param      filter_controls         [in]    filter control parameters(e.g, "0.0, 0.1, 3.0")
+ *
+ * @return     This function returns MM_ERROR_NONE on success, or negative value
+ *                     with error code.
+ * @remark     None
+ * @pre                None
+ * @post       None
+ * @see                None
  */
-int mm_sound_pcm_set_message_callback (MMSoundPcmHandle_t handle, MMMessageCallback callback, void *user_param);
+int mm_sound_control_filter(const char *stream_type, const char *filter_name, const char *filter_controls);
 
 /**
  * Terminate callback function type.
@@ -1412,7 +592,7 @@ void _stop_callback(void* data)
 
 int play_file()
 {
-       char filename[] ="/opt/media/Sound/testfile.wav";
+       char filename[] ="testfile.wav";
        volume_type_t volume = VOLUME_TYPE_SYSTEM;
        int ret = 0;
        int handle = -1;
@@ -1437,10 +617,6 @@ int play_file()
  */
 int mm_sound_play_sound(const char *filename, int volume_config, mm_sound_stop_callback_func callback, void *data, int *handle);
 
-int mm_sound_play_sound_without_session(const char *filename, int volume_config, mm_sound_stop_callback_func callback, void *data, int *handle);
-
-int mm_sound_play_solo_sound(const char *filename, int volume_config, mm_sound_stop_callback_func callback, void *data, int *handle);
-
 /**
  * This function is to play system sound. And other audio stream will be mute during playing time
  *
@@ -1468,7 +644,7 @@ void _stop_callback(void* data)
 
 int play_file()
 {
-       char filename[] ="/opt/media/Sound/testfile.wav";
+       char filename[] ="testfile.wav";
        volume_type_t volume = VOLUME_TYPE_SYSTEM;
        int ret = 0;
        int handle = -1;
@@ -1493,8 +669,6 @@ int play_file()
  */
 int mm_sound_play_loud_solo_sound(const char *filename, int volume_config, mm_sound_stop_callback_func callback, void *data, int *handle);
 
-int mm_sound_play_loud_solo_sound_no_restore(const char *filename, int volume_config, mm_sound_stop_callback_func callback, void *data, int *handle);
-
 /**
  * This function is to stop playing system sound.
  *
@@ -1519,7 +693,7 @@ void _stop_callback(void* data)
 
 int play_file_one_second()
 {
-       char filename[] ="/opt/media/Sound/testfile.wav";
+       char filename[] ="testfile.wav";
        volume_type_t volume = VOLUME_TYPE_SYSTEM;
        int ret = 0;
        int handle = -1;
@@ -1744,44 +918,6 @@ int mm_sound_play_tone (MMSoundTone_t num, int volume_config, const double volum
 int mm_sound_play_tone_with_stream_info(MMSoundTone_t tone, char *stream_type, int stream_id, const double volume, const int duration, int *handle);
 
 /*
- * Enumerations of System audio route policy
- */
-
-/**
- * This function get a2dp activation information.
- *
- * @param       connected                  [out] is Bluetooth A2DP connected (1:connected, 0:not connected)
- *              bt_name                [out] Bluetooth A2DP connected device name (allocated by internal when connected=1 otherwise set to null)
- *
- *
- * @return     This function returns MM_ERROR_NONE on success, or negative value
- *                     with error code.
- * @remark     This function allocation memory to given bt_name pointer internally.
- *          So application should free given memory pointer later after use.
- *          bt_name will be null if there's no a2dp device is connected (connected is 0)
- * @see                mm_sound_route_set_system_policy mm_sound_route_get_system_policy
- * @pre                None.
- * @post       memory buffer will be allocated and fill with bluetooth device name.
- * @par Example
- * @code
-int ret;
-int connected = 0;
-char* bt_name = NULL;
-ret = mm_sound_route_get_a2dp_status (&connected, &bt_name);
-
-if (ret == MM_ERROR_NONE) {
-       g_print ("### Is Bluetooth A2DP On Success : connected=[%d] name=[%s]\n", connected, bt_name);
-       if (bt_name)
-               free (bt_name);
-} else {
-       g_print ("### Is Bluetooth A2DP On Error : errno [%d]\n", ret);
-
- * @endcode
- */
-int mm_sound_route_get_a2dp_status (bool* connected, char** bt_name);
-
-
-/*
  * Enumerations of device & route
  */
 
@@ -1828,26 +964,6 @@ typedef enum {
 #define MM_SOUND_ROUTE_NUM 16
 #define MM_SOUND_NAME_NUM 32
 
-typedef enum{
-       MM_SOUND_ROUTE_OUT_SPEAKER = MM_SOUND_DEVICE_OUT_SPEAKER, /**< Routing audio output to builtin device such as internal speaker. */
-       MM_SOUND_ROUTE_OUT_RECEIVER = MM_SOUND_DEVICE_OUT_RECEIVER, /**< Routing audio output to builtin device such as internal receiver. */
-       MM_SOUND_ROUTE_OUT_WIRED_ACCESSORY = MM_SOUND_DEVICE_OUT_WIRED_ACCESSORY,/**< Routing audio output to wired accessory such as headphone, headset, and so on. */
-       MM_SOUND_ROUTE_OUT_BLUETOOTH_SCO = MM_SOUND_DEVICE_OUT_BT_SCO, /**< Routing audio output to bluetooth SCO. */
-       MM_SOUND_ROUTE_OUT_BLUETOOTH_A2DP = MM_SOUND_DEVICE_OUT_BT_A2DP, /**< Routing audio output to bluetooth A2DP. */
-       MM_SOUND_ROUTE_OUT_DOCK = MM_SOUND_DEVICE_OUT_DOCK, /**< Routing audio output to DOCK */
-       MM_SOUND_ROUTE_OUT_HDMI = MM_SOUND_DEVICE_OUT_HDMI, /**< Routing audio output to HDMI */
-       MM_SOUND_ROUTE_OUT_MIRRORING = MM_SOUND_DEVICE_OUT_MIRRORING, /**< Routing audio output to MIRRORING */
-       MM_SOUND_ROUTE_OUT_USB_AUDIO = MM_SOUND_DEVICE_OUT_USB_AUDIO, /**< Routing audio output to USB Audio */
-       MM_SOUND_ROUTE_OUT_MULTIMEDIA_DOCK = MM_SOUND_DEVICE_OUT_MULTIMEDIA_DOCK, /**< Routing audio output to Multimedia DOCK */
-       MM_SOUND_ROUTE_IN_MIC = MM_SOUND_DEVICE_IN_MIC, /**< Routing audio input to device builtin mic. */
-       MM_SOUND_ROUTE_IN_WIRED_ACCESSORY = MM_SOUND_DEVICE_IN_WIRED_ACCESSORY, /**< Routing audio input to wired accessory. */
-       MM_SOUND_ROUTE_IN_MIC_OUT_RECEIVER = MM_SOUND_DEVICE_IN_MIC | MM_SOUND_DEVICE_OUT_RECEIVER, /**< Routing audio input to device builtin mic and routing audio output to builtin receiver*/
-       MM_SOUND_ROUTE_IN_MIC_OUT_SPEAKER = MM_SOUND_DEVICE_IN_MIC | MM_SOUND_DEVICE_OUT_SPEAKER , /**< Routing audio input to device builtin mic and routing audio output to builtin speaker */
-       MM_SOUND_ROUTE_IN_MIC_OUT_HEADPHONE = MM_SOUND_DEVICE_IN_MIC | MM_SOUND_DEVICE_OUT_WIRED_ACCESSORY,/**< Routing audio input to device builtin mic and routing audio output to headphone */
-       MM_SOUND_ROUTE_INOUT_HEADSET = MM_SOUND_DEVICE_IN_WIRED_ACCESSORY | MM_SOUND_DEVICE_OUT_WIRED_ACCESSORY,        /**< Routing audio input and output to headset*/
-       MM_SOUND_ROUTE_INOUT_BLUETOOTH = MM_SOUND_DEVICE_IN_BT_SCO | MM_SOUND_DEVICE_OUT_BT_SCO /**< Routing audio input and output to bluetooth SCO */
-} mm_sound_route;
-
 /*
  * MMSound Device APIs
  */
@@ -1881,22 +997,33 @@ typedef enum
        MM_SOUND_DEVICE_TYPE_BUILTIN_MIC,       /**< Built-in mic. */
        MM_SOUND_DEVICE_TYPE_AUDIOJACK,         /**< Audio jack such as headphone, headset, and so on. */
        MM_SOUND_DEVICE_TYPE_BLUETOOTH,         /**< Bluetooth */
+       MM_SOUND_DEVICE_TYPE_BLUETOOTH_A2DP = MM_SOUND_DEVICE_TYPE_BLUETOOTH,    /**< Bluetooth A2DP */
        MM_SOUND_DEVICE_TYPE_HDMI,              /**< HDMI. */
        MM_SOUND_DEVICE_TYPE_MIRRORING,         /**< MIRRORING. */
        MM_SOUND_DEVICE_TYPE_USB_AUDIO,         /**< USB Audio. */
+       MM_SOUND_DEVICE_TYPE_BLUETOOTH_SCO,     /**< Bluetooth SCO */
 } mm_sound_device_type_e;
 
 typedef void *MMSoundDevice_t;          /**< MMsound Device handle */
 typedef void *MMSoundDeviceList_t;      /**< MMsound Device list handle */
 typedef void (*mm_sound_device_connected_cb) (MMSoundDevice_t device_h, bool is_connected, void *user_data);
 typedef void (*mm_sound_device_info_changed_cb) (MMSoundDevice_t device_h, int changed_info_type, void *user_data);
+typedef void (*mm_sound_device_state_changed_cb) (MMSoundDevice_t device_h, mm_sound_device_state_e state, void *user_data);
 
-int mm_sound_add_device_connected_callback(mm_sound_device_flags_e flags, mm_sound_device_connected_cb func, void *user_data, unsigned int *subs_id);
-int mm_sound_remove_device_connected_callback(unsigned int subs_id);
-int mm_sound_add_device_information_changed_callback(mm_sound_device_flags_e flags, mm_sound_device_info_changed_cb func, void *user_data, unsigned int *subs_id);
-int mm_sound_remove_device_information_changed_callback(unsigned int subs_id);
+int mm_sound_add_device_connected_callback(int flags, mm_sound_device_connected_cb func, void *user_data, unsigned int *id);
+int mm_sound_remove_device_connected_callback(unsigned int id);
+int mm_sound_add_device_information_changed_callback(int flags, mm_sound_device_info_changed_cb func, void *user_data, unsigned int *id);
+int mm_sound_remove_device_information_changed_callback(unsigned int id);
+int mm_sound_add_device_state_changed_callback(int flags, mm_sound_device_state_changed_cb func, void *user_data, unsigned int *id);
+int mm_sound_remove_device_state_changed_callback(unsigned int id);
 
 int mm_sound_get_current_device_list(mm_sound_device_flags_e device_mask, MMSoundDeviceList_t *device_list);
+int mm_sound_get_device_list(int device_mask, MMSoundDeviceList_t *device_list);
+/* Free this device handle with mm_sound_free_device */
+int mm_sound_get_device_by_id(int device_id, MMSoundDevice_t *device);
+int mm_sound_free_device_list(MMSoundDeviceList_t device_list);
+/* Use this only for the device handle which got from mm_sound_get_device_by_id */
+int mm_sound_free_device(MMSoundDevice_t device_h);
 int mm_sound_get_next_device (MMSoundDeviceList_t device_list, MMSoundDevice_t *device);
 int mm_sound_get_prev_device (MMSoundDeviceList_t device_list, MMSoundDevice_t *device);
 int mm_sound_get_device_type(MMSoundDevice_t device_h, mm_sound_device_type_e *type);
@@ -1904,42 +1031,8 @@ int mm_sound_get_device_io_direction(MMSoundDevice_t device_h, mm_sound_device_i
 int mm_sound_get_device_id(MMSoundDevice_t device_h, int *id);
 int mm_sound_get_device_state(MMSoundDevice_t device_h, mm_sound_device_state_e *state);
 int mm_sound_get_device_name(MMSoundDevice_t device_h, char **name);
-
-/* below APIs are for product */
-typedef int (*mm_sound_available_route_cb)(mm_sound_route route, void *user_data);
-int mm_sound_is_route_available(mm_sound_route route, bool *is_available);
-int mm_sound_foreach_available_route_cb(mm_sound_available_route_cb, void *user_data);
-int mm_sound_set_active_route(mm_sound_route route);
-int mm_sound_set_active_route_auto(void);
-
-
-/**
- * This function is to set active route without callback to client.
- *
- * @param      route                   [IN]    route
- * @return     This function returns MM_ERROR_NONE on success, or negative value
- *                     with error code.
- * @remark     None.
- * @pre                None.
- * @post       None.
- * @see                mm_sound_set_active_route_without_broadcast mm_sound_route
- */
-int mm_sound_set_active_route_without_broadcast(mm_sound_route route);
-
-/**
- * This function is to get active playback device and capture device.
- *
- * @param      playback_device                 [out]   playback device.
- * @param      capture_device                  [out]   capture device.
- *
- * @return     This function returns MM_ERROR_NONE on success, or negative value
- *                     with error code.
- * @remark     None.
- * @pre                None.
- * @post       None.
- * @see                mm_sound_set_active_route mm_sound_device_in mm_sound_device_out
- */
-int mm_sound_get_active_device(mm_sound_device_in *device_in, mm_sound_device_out *device_out);
+int mm_sound_get_device_vendor_id(MMSoundDevice_t device_h, int *vendor_id);
+int mm_sound_get_device_product_id(MMSoundDevice_t device_h, int *product_id);
 
 /**
  * Active device changed callback function type.
@@ -1952,215 +1045,9 @@ int mm_sound_get_active_device(mm_sound_device_in *device_in, mm_sound_device_ou
  */
 typedef void (*mm_sound_active_device_changed_cb) (mm_sound_device_in device_in, mm_sound_device_out device_out, void *user_data);
 
-/**
- * This function is to add active device callback.
- *
- * @param      name                    [in]    plugin name (name max size : MM_SOUND_NAME_NUM 32)
- * @param      func                    [in]    callback function pointer
- * @param      user_data               [in]    user data passing to callback function
- *
- * @return     This function returns MM_ERROR_NONE on success, or negative value
- *                     with error code.
- * @remark     None.
- * @see                mm_sound_remove_active_device_changed_callback mm_sound_active_device_changed_cb
- * @pre                None.
- * @post       None.
- * @par Example
- * @code
-
-void __active_device_callback(void *user_data)
-{
-       printf("Callback function\n");
-}
-
-int active_device_control()
-{
-       int ret = 0;
-
-       ret = mm_sound_add_active_device_changed_callback(__active_device_callback, NULL);
-       if ( MM_ERROR_NONE != ret)
-       {
-               printf("Can not add callback\n");
-       }
-       else
-       {
-               printf("Add callback success\n");
-       }
-
-       return ret;
-}
-
- * @endcode
- */
-int mm_sound_add_active_device_changed_callback(const char *name,mm_sound_active_device_changed_cb func, void *user_data);
-/**
- * This function is to remove active device callback.
- *
- * @param      name                    [in]    plugin name (name max size : MM_SOUND_NAME_NUM 32)
- * @return     This function returns MM_ERROR_NONE on success, or negative value
- *                     with error code.
- * @remark     None.
- * @pre                Active device callback should be registered.
- * @post       Active device callback deregistered and does not be called anymore.
- * @see                mm_sound_add_active_device_changed_callback mm_sound_active_device_changed_cb
- * @par Example
- * @code
-void __active_device_callback(void *data)
-{
-       printf("Callback function\n");
-}
-
-int active_device_control()
-{
-       int ret = 0;
-
-       mm_sound_add_active_device_changed_callback(__active_device_callback, NULL);
-
-       ret = mm_sound_remove_active_device_changed_callback();
-       if ( MM_ERROR_NONE == ret)
-       {
-               printf("Remove callback success\n");
-       }
-       else
-       {
-               printf("Remove callback failed\n");
-       }
-
-       return ret;
-}
-
- * @endcode
- */
-int mm_sound_remove_active_device_changed_callback(const char *name);
-/**
- * Available route changed callback function type.
- *
- * @param      user_data               [in]    Argument passed when callback has called
- *
- * @return     No return value
- * @remark     None.
- * @see                mm_sound_add_active_device_changed_callback mm_sound_remove_active_device_changed_callback
- */
-typedef void (*mm_sound_available_route_changed_cb) (mm_sound_route route, bool available, void *user_data);
-
-/**
- * This function is to add available device callback.
- *
- * @param      func                    [in]    callback function pointer
- * @param      user_data               [in]    user data passing to callback function
- *
- * @return     This function returns MM_ERROR_NONE on success, or negative value
- *                     with error code.
- * @remark     None.
- * @see                mm_sound_remove_available_route_changed_callback mm_sound_active_device_changed_cb
- * @pre                None.
- * @post       None.
- * @par Example
- * @code
-
-void __available_device_callback(void *user_data)
-{
-       printf("Callback function\n");
-}
-
-int available_device_control()
-{
-       int ret = 0;
-
-       ret = mm_sound_add_available_route_changed_callback(__available_device_callback, NULL);
-       if ( MM_ERROR_NONE != ret)
-       {
-               printf("Can not add callback\n");
-       }
-       else
-       {
-               printf("Add callback success\n");
-       }
-
-       return ret;
-}
-
- * @endcode
- */
-int mm_sound_add_available_route_changed_callback(mm_sound_available_route_changed_cb func, void *user_data);
-
-/**
- * This function is to remove available device callback.
- *
- * @return     This function returns MM_ERROR_NONE on success, or negative value
- *                     with error code.
- * @remark     None.
- * @pre                available device callback should be registered.
- * @post       available device callback deregistered and does not be called anymore.
- * @see                mm_sound_add_available_route_changed_callback mm_sound_active_device_changed_cb
- * @par Example
- * @code
-void __available_device_callback(void *data)
-{
-       printf("Callback function\n");
-}
-
-int available_device_control()
-{
-       int ret = 0;
-
-       mm_sound_add_available_route_changed_callback(__available_device_callback, NULL);
-
-       ret = mm_sound_remove_available_route_changed_callback();
-       if ( MM_ERROR_NONE == ret)
-       {
-               printf("Remove callback success\n");
-       }
-       else
-       {
-               printf("Remove callback failed\n");
-       }
-
-       return ret;
-}
-
- * @endcode
- */
-int mm_sound_remove_available_route_changed_callback(void);
-
- /**
- * This function is to set path for active device.
- *
- * @param      device_out              [in]    active playback device
- * @param      device_in               [in]    active capture device
- *
- * @return     This function returns MM_ERROR_NONE on success, or negative value
- *                     with error code.
- * @remark     None.
- * @see                None
- * @pre                None.
- * @post       None.
- * @par Example
- * @*/
-int mm_sound_set_sound_path_for_active_device(mm_sound_device_out device_out, mm_sound_device_in device_in);
-
-/**
-* This function is to get current audio path.
-*
-* @param   device_out     [in]    active playback device
-* @param   device_in      [in]    active capture device
-*
-* @return  This function returns MM_ERROR_NONE on success, or negative value
-*                 with error code.
-* @remark  None.
-* @see    None
-* @pre    None.
-* @post    None.
-* @par Example
-* @*/
-
-int mm_sound_get_audio_path(mm_sound_device_in *device_in, mm_sound_device_out *device_out);
-
-
-
 typedef void (*mm_sound_test_cb) (int a, void *user_data);
 int mm_sound_test(int a, int b, int* get);
-int mm_sound_add_test_callback(mm_sound_test_cb func, void *user_data, unsigned int *subs_id);
+int mm_sound_add_test_callback(mm_sound_test_cb func, void *user_data, unsigned int *id);
 int mm_sound_remove_test_callback(unsigned int sub_id);
 
 void mm_sound_convert_volume_type_to_stream_type(int volume_type, char *stream_type);
@@ -2170,11 +1057,13 @@ typedef enum {
        MM_SOUND_SIGNAL_MAX,
 } mm_sound_signal_name_t;
 
-typedef void (* mm_sound_signal_callback) (mm_sound_signal_name_t signal, int value, void *user_data);
-int mm_sound_subscribe_signal(mm_sound_signal_name_t signal, unsigned int* subscribe_id, mm_sound_signal_callback callback, void *user_data);
+typedef void (*mm_sound_signal_callback) (mm_sound_signal_name_t signal_type, int value, void *user_data);
+int mm_sound_subscribe_signal(mm_sound_signal_name_t signal_type, unsigned int *subscribe_id, mm_sound_signal_callback callback, void *user_data);
+int mm_sound_subscribe_signal_for_daemon(mm_sound_signal_name_t signal_type, int client_pid, unsigned int *subscribe_id, mm_sound_signal_callback callback, void *user_data);
 void mm_sound_unsubscribe_signal(unsigned int subscribe_id);
-int mm_sound_send_signal(mm_sound_signal_name_t signal, int value);
-int mm_sound_get_signal_value(mm_sound_signal_name_t signal, int *value);
+int mm_sound_send_signal(mm_sound_signal_name_t signal_type, int value);
+int mm_sound_get_signal_value(mm_sound_signal_name_t signal_type, int *value);
+int mm_sound_is_stream_on_device(int stream_id, MMSoundDevice_t device_h, bool *is_on);
 
 /**
        @}