2.0 init
authorSeungbae Shin <seungbae.shin@samsung.com>
Tue, 21 Aug 2012 08:49:29 +0000 (17:49 +0900)
committerSeungbae Shin <seungbae.shin@samsung.com>
Tue, 21 Aug 2012 08:49:29 +0000 (17:49 +0900)
19 files changed:
Makefile.am
audiotest/avsys-audio-test.c
avsys-audio-alsa.c
avsys-audio-ascenario.c
avsys-audio-handle.c
avsys-audio-logical-volume.c
avsys-audio-pasimple.c
avsys-audio-path.c
avsys-audio-sync.c
avsys-audio.c
configure.ac
debian/changelog
debian/rules
include/avsys-audio-alsa.h
include/avsys-audio-pasimple.h
include/avsys-audio-path.h
include/avsys-audio-sync.h
include/avsys-audio.h
packaging/avsystem.spec

index 1fba2b0..b41e175 100644 (file)
@@ -49,8 +49,8 @@ libavsysaudio_la_CFLAGS += $(MMLOG_CFLAGS) \
                        -D__USE_LOGMANAGER__ \
                        -DMM_DEBUG_FLAG
 
-libavsysaudio_la_LIBADD += $(MMLOG_LIBS)
-
+libavsysaudio_la_LIBADD += $(MMLOG_LIBS) \
+                          $(INIPARSER_LIBS)
 
 bin_PROGRAMS = sound_initializer
 sound_initializer_SOURCES = avsys-audio-initializer.c
index c6a53d5..eb8b3d4 100644 (file)
@@ -76,7 +76,7 @@ int __make_param(int op, int mode, int routing, avsys_audio_param_t *param)
 
        param->priority = AVSYS_AUDIO_PRIORITY_NORMAL;
        param->vol_type = AVSYS_AUDIO_VOLUME_TYPE_SYSTEM;
-       param->bluetooth = routing;
+       param->handle_route = routing;
 
        switch (mode) {
        case 0:
@@ -196,7 +196,7 @@ int _capture(int mode, int routing, char *filename)
                goto FAIL;
        }
 
-       fd = open(namebuffer, O_WRONLY | O_CREAT);
+       fd = open(namebuffer, O_WRONLY | O_CREAT, 0644);
        if (fd == -1) {
                printf("Can not open file %s, %s\n", namebuffer, strerror(errno));
                goto FAIL;
index 7e7916a..fa299bd 100644 (file)
 #if defined(_MMFW_I386_ALL_SIMULATOR)
 #define AIF2_DEVICE_NAME "default"
 #define AIF3_DEVICE_NAME "default"
+#define AIF4_DEVICE_NAME "default"
 #else
 #define AIF2_DEVICE_NAME "AIF2"
 #define AIF3_DEVICE_NAME "AIF3"
+#define AIF4_DEVICE_NAME "AIF4"
 #endif
 
 int avsys_audio_alsa_open_AIF_device(const int AIF_type, avsys_audio_alsa_aif_handle_t *handle)
@@ -63,6 +65,10 @@ int avsys_audio_alsa_open_AIF_device(const int AIF_type, avsys_audio_alsa_aif_ha
                strncpy(dev_name, AIF3_DEVICE_NAME, sizeof(dev_name) - 1);
                stream = SND_PCM_STREAM_PLAYBACK;
                break;
+       case AIF4_PLAYBACK:
+               strncpy(dev_name, AIF4_DEVICE_NAME, sizeof(dev_name) - 1);
+               stream = SND_PCM_STREAM_PLAYBACK;
+               break;
        default:
                avsys_critical_r(AVAUDIO, "Invalid AIF device %d\n", AIF_type);
                return AVSYS_STATE_ERR_INVALID_MODE;
@@ -135,6 +141,10 @@ int avsys_audio_alsa_set_AIF_params(avsys_audio_alsa_aif_handle_t *handle)
        if (!ahandle)
                return AVSYS_STATE_ERR_NULL_POINTER;
 
+       /* Skip parameter setting to null device. */
+       if (snd_pcm_type(ahandle) == SND_PCM_TYPE_NULL)
+               return AVSYS_STATE_SUCCESS;
+
        /* Allocate a hardware parameters object. */
        snd_pcm_hw_params_alloca(&params);
        /* Fill it in with default values. */
index c78f155..8e691df 100644 (file)
@@ -36,6 +36,8 @@
 #define STR_BUFF_MAX 128
 #define P_STR_MAX 42
 #define O_STR_MAX 44
+#define CARD_NUMBER 0 /* ALSA card number */
+
 static int __avsys_audio_ascn_make_scenario_str(int input, char *buf, int buf_len)
 {
        char fromStr[P_STR_MAX] = { 0, };
@@ -118,7 +120,8 @@ static int __avsys_audio_ascn_make_scenario_str(int input, char *buf, int buf_le
 int avsys_audio_ascn_bulk_set(int * bulk, int bulk_cnt, AscnResetType clear)
 {
        struct snd_scenario *scn = NULL;
-       char card_name[STR_BUFF_MAX] = { 0, };
+       int card = CARD_NUMBER;
+       char *name = NULL;
        char str_buf[STR_BUFF_MAX] = { 0, };
        char reset_str[STR_BUFF_MAX] = { 0, };
        int err = AVSYS_STATE_SUCCESS;
@@ -144,12 +147,31 @@ int avsys_audio_ascn_bulk_set(int * bulk, int bulk_cnt, AscnResetType clear)
                return AVSYS_STATE_ERR_RANGE_OVER;
        }
 
-       snprintf(card_name, sizeof(card_name) - 1, "default");
+       /* Try to get card name from CARD_NUMBER. */
+       snd_card_get_name(card, &name);
 #if defined(TIME_CHECK)
        gettimeofday(&t_start, NULL);
 #endif
-       //avsys_info(AVAUDIO, "snd_scenario_open() with [%s]\n", card_name);
-       scn = snd_scenario_open(card_name);
+       if (name == NULL) {
+               scn = snd_scenario_open("default");
+               if (scn == NULL)
+               {
+                       avsys_error(AVAUDIO, "snd_scenario_open() failed to open with default\n");
+                       return AVSYS_STATE_ERR_INTERNAL;
+               }
+       } else {
+               scn = snd_scenario_open(name);
+               free(name);
+               if (scn == NULL)
+               {
+                       scn = snd_scenario_open("default");
+                       if (scn == NULL)
+                       {
+                               avsys_error(AVAUDIO, "snd_scenario_open() failed to open with default\n");
+                               return AVSYS_STATE_ERR_INTERNAL;
+                       }
+               }
+       }
 #if defined(TIME_CHECK)
        gettimeofday(&t_stop, NULL);
        if (t_stop.tv_sec == t_start.tv_sec)
@@ -158,12 +180,6 @@ int avsys_audio_ascn_bulk_set(int * bulk, int bulk_cnt, AscnResetType clear)
                check = (t_stop.tv_sec - t_start.tv_sec) * 1000 + (t_stop.tv_usec - t_start.tv_usec) / 1000;
        avsys_warning(AVAUDIO, "[snd_scenario_open()] takes %u msec\n", check);
 #endif
-       if (scn == NULL) {
-               avsys_error_r(AVAUDIO, "alsa scenario open failed %s\n", card_name);
-               return AVSYS_STATE_ERR_INTERNAL;
-       }
-       //avsys_info(AVAUDIO, "snd_scenario_open() success\n");
-
        if (clear != ASCN_RESET_NONE) {
                switch (clear) {
                case ASCN_RESET_ALL:
@@ -241,7 +257,8 @@ bulk_error:
 int avsys_audio_ascn_single_set(char * str)
 {
        struct snd_scenario *scn = NULL;
-       char card_name[STR_BUFF_MAX] = { 0, };
+       int card = CARD_NUMBER;
+       char *name = NULL;
        char cmd_str[STR_BUFF_MAX] = { 0, };
        int err = AVSYS_STATE_SUCCESS;
 
@@ -250,23 +267,40 @@ int avsys_audio_ascn_single_set(char * str)
                return AVSYS_STATE_ERR_NULL_POINTER;
        }
 
-       snprintf(card_name, sizeof(card_name) - 1, "default");
-//     avsys_info(AVAUDIO, "snd_scenario_open() with [%s]\n", card_name);
-       scn = snd_scenario_open(card_name);
-       if (scn == NULL) {
-               avsys_error_r(AVAUDIO, "alsa scenario open failed %s\n", card_name);
-               return AVSYS_STATE_ERR_INTERNAL;
+       /* Try to get card name from CARD_NUMBER. */
+       snd_card_get_name(card, &name);
+
+       if (name == NULL) {
+               scn = snd_scenario_open("default");
+               if (scn == NULL)
+               {
+                       avsys_error(AVAUDIO, "snd_scenario_open() failed to open with default\n");
+                       return AVSYS_STATE_ERR_INTERNAL;
+               }
+       } else {
+               scn = snd_scenario_open(name);
+               free(name);
+               if (scn == NULL)
+               {
+                       scn = snd_scenario_open("default");
+                       if (scn == NULL)
+                       {
+                               avsys_error(AVAUDIO, "snd_scenario_open() failed to open with default\n");
+                               return AVSYS_STATE_ERR_INTERNAL;
+                       }
+               }
        }
-//     avsys_info(AVAUDIO, "snd_scenario_open() success\n");
 
+       /* Set scenario */
        strncpy(cmd_str, str, sizeof(cmd_str) - 1);
        err = snd_scenario_set_scn(scn, str);
-       avsys_warning(AVAUDIO, "alsa scenario set [%s]\n", str);
+       avsys_info(AVAUDIO, "alsa scenario set [%s]\n", str);
 
        if (err < 0) {
-               avsys_error_r(AVAUDIO, "snd_scenario_set(%s) failed\n", str);
+               avsys_error(AVAUDIO, "snd_scenario_set(%s) failed\n", str);
        }
 
+       /* Close scenario manager core */
        snd_scenario_close(scn);
 
        return err;
index fbfa441..2e08ea7 100644 (file)
@@ -146,7 +146,7 @@ int avsys_audio_handle_reset(int *volume_value)
        long long int flag = 0x01;
        avsys_audio_handle_info_t *control = NULL;
        avsys_audio_handle_info_t **temp = NULL;
-       int *lvolume = NULL;
+       int lvolume[AVSYS_AUDIO_VOLUME_TYPE_MAX] = { 0, };
        int default_volume[] = { DEFAULT_VOLUME_SYSTEM, DEFAULT_VOLUME_NOTIFICATION,
                                                DEFAULT_VOLUME_ALARM, DEFAULT_VOLUME_RINGTONE,
                                                DEFAULT_VOLUME_MEDIA, DEFAULT_VOLUME_CALL,
@@ -166,9 +166,23 @@ int avsys_audio_handle_reset(int *volume_value)
        }
 
        if (volume_value == NULL) {
-               lvolume = default_volume;
+               for (i = 0; i < AVSYS_AUDIO_VOLUME_TYPE_MAX; i++) {
+                       lvolume[i] = default_volume[i];
+               }
        } else {
-               lvolume = volume_value;
+               avsys_audio_path_ex_info_t *path_control = NULL;
+
+               if (AVSYS_FAIL(avsys_audio_get_shm(AVSYS_AUDIO_SHM_IDEN_PATH, (void **)&path_control))) {
+                       avsys_error(AVAUDIO, "avsys_audio_get_shm() failed in %s\n", __func__);
+                       return AVSYS_STATE_ERR_INTERNAL;
+               }
+               if (path_control == NULL) {
+                       avsys_error(AVAUDIO, "control is null in %s\n", __func__);
+                       return AVSYS_STATE_ERR_NULL_POINTER;
+               }
+               for (i = 0; i < AVSYS_AUDIO_VOLUME_TYPE_MAX; i++) {
+                       lvolume[i] = volume_value[i];
+               }
        }
 
        for (i = 0; i < AVSYS_AUDIO_HANDLE_MAX; i++) {
@@ -204,6 +218,7 @@ int avsys_audio_handle_reset(int *volume_value)
        control->volume_value[AVSYS_AUDIO_LVOL_GAIN_TYPE_6] = lvolume[6]; /* DEFAULT_VOLUME_FIXED */
        control->volume_value[AVSYS_AUDIO_LVOL_GAIN_TYPE_7] = lvolume[7]; /* DEFAULT_VOLUME_JAVA */
        control->volume_value[AVSYS_AUDIO_LVOL_GAIN_TYPE_8] = lvolume[4]; /* DEFAULT_VOLUME_MEDIA */
+       avsys_error(AVAUDIO, "[zeud] avsys_audio_handle_reset lvolume[0][%d]", lvolume[0]);
        control->ext_device_amp = AVSYS_AUDIO_HANDLE_EXT_DEV_NONE;
        control->primary_volume_pid = 0;
        control->primary_volume_type = -1;
@@ -830,7 +845,7 @@ int avsys_audio_handle_current_playing_volume_type(int *type)
 
        if (control->primary_volume_pid > 2 && AVSYS_FAIL(avsys_check_process(control->primary_volume_pid))) {
                avsys_warning(AVAUDIO, "Primary volume set pid does not exist anymore. clean primary volume\n");
-               control->primary_volume_type = 1;
+               control->primary_volume_type = -1;
                control->primary_volume_pid = 0;
        }
 
@@ -907,6 +922,7 @@ int avsys_audio_handle_update_volume_by_type(const int volume_type, const int vo
        AVSYS_LOCK_SYNC();
 
        control->volume_value[volume_type] = volume_value;
+       avsys_error(AVAUDIO, "[zeud] avsys_audio_handle_update_volume_by_type volume_value[%d]", volume_value);
 
        for (i = 0; i < AVSYS_AUDIO_HANDLE_MAX; i++) {
                int mode;
@@ -936,6 +952,7 @@ int avsys_audio_handle_update_volume_by_type(const int volume_type, const int vo
                set_volume = &(control->handles[i].setting_vol);
                set_volume->level[AVSYS_AUDIO_CHANNEL_LEFT] = control->volume_value[volume_type];
                set_volume->level[AVSYS_AUDIO_CHANNEL_RIGHT] = control->volume_value[volume_type];
+               avsys_error(AVAUDIO, "[zeud] avsys_audio_handle_update_volume_by_type control->volume_value[volume_type][%d]", control->volume_value[volume_type]);
                result = avsys_audio_logical_volume_convert(set_volume, &(control->handles[i].working_vol), &(control->handles[i].gain_setting));
                if (AVSYS_FAIL(result)) {
                        avsys_error(AVAUDIO, "Can not set volume for handle %d. Error 0x%x\n", i, result);
index 47765e0..fdba610 100644 (file)
@@ -33,11 +33,11 @@ static const avsys_logical_gain_t g_volume_table[AVSYS_AUDIO_LVOL_GAIN_TYPE_MAX]
                { /* FNT DEFAULT */
 #if defined(_MMFW_I386_ALL_SIMULATOR)
                        {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{2340,2340}}, {{4680,4680}}, {{7020,7020}}, {{9360,9360}}, {{11700,11700}}, {{14040,14040}}, {{16380,16380}}, {{18720,18720}}, {{21060,21060}}, {{23400,23400}}, {{25740,25740}}, {{28080,28080}}, {{30420,30420}}, {{32760,32760}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_SPK */
-                       {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET0 */
+                       {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET */
                        {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_BTHEADSET */
 #else
                        {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{19000,19000}}, {{22323,22323}}, {{25647,25647}}, {{28971,28971}}, {{32295,32295}}, {{35619,35619}}, {{38943,38943}}, {{42267,42267}}, {{45591,45591}}, {{48915,48915}}, {{52239,52239}}, {{55563,55563}}, {{58887,58887}}, {{62211,62211}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_SPK */
-                       {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET0 */
+                       {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET */
                        {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_BTHEADSET */
 #endif
                },
@@ -46,31 +46,37 @@ static const avsys_logical_gain_t g_volume_table[AVSYS_AUDIO_LVOL_GAIN_TYPE_MAX]
                { /* FNT DEFAULT */
 #if defined(_MMFW_I386_ALL_SIMULATOR)
                        {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{2340,2340}}, {{4680,4680}}, {{7020,7020}}, {{9360,9360}}, {{11700,11700}}, {{14040,14040}}, {{16380,16380}}, {{18720,18720}}, {{21060,21060}}, {{23400,23400}}, {{25740,25740}}, {{28080,28080}}, {{30420,30420}}, {{32760,32760}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_SPK */
-                       {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET0 */
+                       {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET */
                        {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_BTHEADSET */
 #else
                        {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{19000,19000}}, {{22323,22323}}, {{25647,25647}}, {{28971,28971}}, {{32295,32295}}, {{35619,35619}}, {{38943,38943}}, {{42267,42267}}, {{45591,45591}}, {{48915,48915}}, {{52239,52239}}, {{55563,55563}}, {{58887,58887}}, {{62211,62211}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_SPK */
-                       {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET0 */
+                       {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET */
                        {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_BTHEADSET */
 #endif
                },
        },
-       { AVSYS_AUDIO_LVOL_GAIN_TYPE_2, /* alarm */
+       { AVSYS_AUDIO_LVOL_GAIN_TYPE_2, /* alarm : 0~15, default : 7 */
                { /* FNT DEFAULT */
-                       {LVOLUME_MAX_BASIC, {{{0,0}}, {{19000,19000}}, {{25991,25991}}, {{32982,32982}}, {{39973,39973}}, {{46964,46964}}, {{53955,53955}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_SPK */
-                       {LVOLUME_MAX_BASIC, {{{0,0}}, {{20480,20480}}, {{27225,27225}}, {{33969,33969}}, {{40714,40714}}, {{47458,47458}}, {{54203,54203}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET0 */
-                       {LVOLUME_MAX_BASIC, {{{0,0}}, {{20480,20480}}, {{27225,27225}}, {{33969,33969}}, {{40714,40714}}, {{47458,47458}}, {{54203,54203}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_BTHEADSET */
+#if defined(_MMFW_I386_ALL_SIMULATOR)
+                       {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{2340,2340}}, {{4680,4680}}, {{7020,7020}}, {{9360,9360}}, {{11700,11700}}, {{14040,14040}}, {{16380,16380}}, {{18720,18720}}, {{21060,21060}}, {{23400,23400}}, {{25740,25740}}, {{28080,28080}}, {{30420,30420}}, {{32760,32760}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_SPK */
+                       {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET */
+                       {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_BTHEADSET */
+#else
+                       {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{19000,19000}}, {{22323,22323}}, {{25647,25647}}, {{28971,28971}}, {{32295,32295}}, {{35619,35619}}, {{38943,38943}}, {{42267,42267}}, {{45591,45591}}, {{48915,48915}}, {{52239,52239}}, {{55563,55563}}, {{58887,58887}}, {{62211,62211}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_SPK */
+                       {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET */
+                       {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_BTHEADSET */
+#endif
                },
        },
        { AVSYS_AUDIO_LVOL_GAIN_TYPE_3, /* ringtone : 0~15, default : 13 */
                { /* FNT DEFAULT */
 #if defined(_MMFW_I386_ALL_SIMULATOR)
                        {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{2340,2340}}, {{4680,4680}}, {{7020,7020}}, {{9360,9360}}, {{11700,11700}}, {{14040,14040}}, {{16380,16380}}, {{18720,18720}}, {{21060,21060}}, {{23400,23400}}, {{25740,25740}}, {{28080,28080}}, {{30420,30420}}, {{32760,32760}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_SPK */
-                       {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET0 */
+                       {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET */
                        {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_BTHEADSET */
 #else
                        {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{19000,19000}}, {{22323,22323}}, {{25647,25647}}, {{28971,28971}}, {{32295,32295}}, {{35619,35619}}, {{38943,38943}}, {{42267,42267}}, {{45591,45591}}, {{48915,48915}}, {{52239,52239}}, {{55563,55563}}, {{58887,58887}}, {{62211,62211}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_SPK */
-                       {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET0 */
+                       {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET */
                        {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_BTHEADSET */
 #endif
                },
@@ -79,11 +85,11 @@ static const avsys_logical_gain_t g_volume_table[AVSYS_AUDIO_LVOL_GAIN_TYPE_MAX]
                { /* FNT DEFAULT */
 #if defined(_MMFW_I386_ALL_SIMULATOR)
                        {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{2340,2340}}, {{4680,4680}}, {{7020,7020}}, {{9360,9360}}, {{11700,11700}}, {{14040,14040}}, {{16380,16380}}, {{18720,18720}}, {{21060,21060}}, {{23400,23400}}, {{25740,25740}}, {{28080,28080}}, {{30420,30420}}, {{32760,32760}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_SPK */
-                       {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET0 */
+                       {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET */
                        {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_BTHEADSET */
 #else
                        {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{19000,19000}}, {{22323,22323}}, {{25647,25647}}, {{28971,28971}}, {{32295,32295}}, {{35619,35619}}, {{38943,38943}}, {{42267,42267}}, {{45591,45591}}, {{48915,48915}}, {{52239,52239}}, {{55563,55563}}, {{58887,58887}}, {{62211,62211}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_SPK */
-                       {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET0 */
+                       {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET */
                        {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_BTHEADSET */
 #endif
                },
@@ -91,28 +97,28 @@ static const avsys_logical_gain_t g_volume_table[AVSYS_AUDIO_LVOL_GAIN_TYPE_MAX]
        { AVSYS_AUDIO_LVOL_GAIN_TYPE_5, /* call */
                { /* FNT DEFAULT */
                        {LVOLUME_MAX_BASIC, {{{0,0}}, {{19000,19000}}, {{25991,25991}}, {{32982,32982}}, {{39973,39973}}, {{46964,46964}}, {{53955,53955}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_SPK */
-                       {LVOLUME_MAX_BASIC, {{{0,0}}, {{20480,20480}}, {{27225,27225}}, {{33969,33969}}, {{40714,40714}}, {{47458,47458}}, {{54203,54203}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET0 */
+                       {LVOLUME_MAX_BASIC, {{{0,0}}, {{20480,20480}}, {{27225,27225}}, {{33969,33969}}, {{40714,40714}}, {{47458,47458}}, {{54203,54203}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET */
                        {LVOLUME_MAX_BASIC, {{{0,0}}, {{20480,20480}}, {{27225,27225}}, {{33969,33969}}, {{40714,40714}}, {{47458,47458}}, {{54203,54203}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}, {{60947,60947}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_BTHEADSET */
                },
        },
        { AVSYS_AUDIO_LVOL_GAIN_TYPE_6, /* fixed */
                { /* FNT DEFAULT */
                        {LVOLUME_MAX_SINGLE, {{{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_SPK */
-                       {LVOLUME_MAX_SINGLE, {{{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET0 */
+                       {LVOLUME_MAX_SINGLE, {{{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET */
                        {LVOLUME_MAX_SINGLE, {{{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_BTHEADSET */
                },
        },
        { AVSYS_AUDIO_LVOL_GAIN_TYPE_7, /* java */
                { /* FNT DEFAULT */
                        {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{19000,19000}}, {{22323,22323}}, {{25647,25647}}, {{28971,28971}}, {{32295,32295}}, {{35619,35619}}, {{38943,38943}}, {{42267,42267}}, {{45591,45591}}, {{48915,48915}}, {{52239,52239}}, {{55563,55563}}, {{58887,58887}}, {{62211,62211}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_SPK */
-                       {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET0 */
+                       {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET */
                        {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_BTHEADSET */
                },
        },
        { AVSYS_AUDIO_LVOL_GAIN_TYPE_8, /* music only (max level) */
                { /* FNT DEFAULT */
                        {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{19000,19000}}, {{22323,22323}}, {{25647,25647}}, {{28971,28971}}, {{32295,32295}}, {{35619,35619}}, {{38943,38943}}, {{42267,42267}}, {{45591,45591}}, {{48915,48915}}, {{52239,52239}}, {{55563,55563}}, {{58887,58887}}, {{62211,62211}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_SPK */
-                       {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET0 */
+                       {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET */
                        {LVOLUME_MAX_MULTIMEDIA, {{{0,0}}, {{20480,20480}}, {{23698,23698}}, {{26916,26916}}, {{30135,30135}}, {{33353,33353}}, {{36571,36571}}, {{39789,39789}}, {{43008,43008}}, {{46226,46226}}, {{49444,49444}}, {{52662,52662}}, {{55880,55880}}, {{59099,59099}}, {{62317,62317}}, {{65535,65535}}}}, /* AVSYS_AUDIO_LVOL_DEV_TYPE_BTHEADSET */
                },
        },
index 29c4593..99c91c8 100644 (file)
@@ -473,3 +473,40 @@ int avsys_audio_pasimple_get_period_buffer_time(avsys_audio_handle_t *handle, un
        return AVSYS_STATE_SUCCESS;
 }
 
+int avsys_audio_pasimple_cork(avsys_audio_handle_t *handle, int cork)
+{
+       pa_simple *s = NULL;
+       avsys_audio_pasimple_handle_t *device = NULL;
+       int err = 0;
+
+       CHECK_VALID_HANDLE(handle);
+
+       s = (pa_simple *)device->pasimple_handle;
+
+       if (0 > pa_simple_cork(s, cork, &err)) {
+               avsys_error(AVAUDIO, "pa_simple_cork() failed with %s\n", pa_strerror(err));
+               return AVSYS_STATE_ERR_INTERNAL;
+       }
+
+       return AVSYS_STATE_SUCCESS;
+}
+
+int avsys_audio_pasimple_is_corked(avsys_audio_handle_t *handle, int *is_corked)
+{
+       pa_simple *s = NULL;
+       avsys_audio_pasimple_handle_t *device = NULL;
+       int err = 0;
+
+       if (is_corked == NULL)
+               return AVSYS_STATE_ERR_INTERNAL;
+
+       CHECK_VALID_HANDLE(handle);
+
+       s = (pa_simple *)device->pasimple_handle;
+
+       *is_corked = pa_simple_is_corked(s);
+
+       return AVSYS_STATE_SUCCESS;
+}
+
+
index 7967842..6692c63 100644 (file)
@@ -27,6 +27,8 @@
 #include <unistd.h>
 #include <errno.h>
 #include <stdlib.h>
+#include <linux/input.h>
+#include <iniparser.h>
 
 #include "avsys-audio-shm.h"
 #include "avsys-audio-sync.h"
@@ -46,8 +48,6 @@
                                                                        return AVSYS_STATE_ERR_IO_CONTROL; \
                                                                        } }
 
-#define OPEN_AIF_BEFORE_SCENARIO_SET
-
 static int g_playback_path_select_data[AVSYS_AUDIO_PLAYBACK_GAIN_MAX][AVSYS_AUDIO_PATH_EX_OUTMAX] = {
                { /* AVSYS_AUDIO_PLAYBACK_GAIN_AP */
                        /* NONE SPK RECV HEADSET BTHEADSET A2DP HANDSFREE HDMI */
@@ -55,7 +55,7 @@ static int g_playback_path_select_data[AVSYS_AUDIO_PLAYBACK_GAIN_MAX][AVSYS_AUDI
                },
                { /* AVSYS_AUDIO_PLAYBACK_GAIN_FMRADIO */
                        /* NONE SPK RECV HEADSET BTHEADSET A2DP HANDSFREE HDMI */
-                               1,      1,      0,      1,      0,      0,      0,      0
+                               1,      1,      0,      1,      0,      1,      0,      0
                },
                { /* AVSYS_AUDIO_PLAYBACK_GAIN_VOICECALL */
                        /* NONE SPK RECV HEADSET BTHEADSET A2DP HANDSFREE HDMI */
@@ -161,32 +161,19 @@ static int __avsys_audio_path_set_ascn_voicecall(avsys_audio_path_ex_info_t *con
 static int __avsys_audio_path_set_ascn_videocall(avsys_audio_path_ex_info_t *control);
 static int __avsys_audio_path_set_ascn_fmradio(avsys_audio_path_ex_info_t *control);
 static int __avsys_audio_path_set_ascn_ap_capture(avsys_audio_path_ex_info_t *control);
-
-
-typedef int (*_internal_gain_func)(avsys_audio_path_ex_info_t *control);
-static _internal_gain_func playback_gain_func_table[AVSYS_AUDIO_PLAYBACK_GAIN_MAX] =
-{
-               __avsys_audio_path_set_ascn_ap_playback,
-               __avsys_audio_path_set_ascn_fmradio,
-               __avsys_audio_path_set_ascn_voicecall,
-               __avsys_audio_path_set_ascn_videocall,
-               __avsys_audio_path_set_ascn_ap_playback,
-};
-
-static _internal_gain_func capture_gain_func_table[AVSYS_AUDIO_CAPTURE_GAIN_MAX] =
-{
-               __avsys_audio_path_set_ascn_ap_capture,
-               __avsys_audio_path_set_ascn_fmradio,
-               __avsys_audio_path_set_ascn_voicecall,
-               __avsys_audio_path_set_ascn_videocall,
-};
-
 static int __avsys_audio_path_set_hw_controls(avsys_audio_path_ex_info_t *control);
 static int __avsys_audio_path_get_earjack_type(void);
 
 #define AUDIOSYSTEM_CONF       "/opt/etc/audio_system.conf"
 #define CONF_ITEM_COUNT        2
 #define INPUT_DEV_MAX 20
+
+#define EARJACK_EVENT_PATH     "/dev/input/event"
+
+#define AVSYS_AUDIO_INI_DEFAULT_PATH "/usr/etc/mmfw_avsystem.ini"
+#define AVSYS_AUDIO_DEFAULT_CONTROL_AIF_BEFORE_PATH_SET                0
+#define AVSYS_AUDIO_DEFAULT_GAIN_DEBUG_MODE                                    0
+
 static char *conf_string[] = {
        "headset_detection",
        "headset_node",
@@ -195,10 +182,14 @@ static char *conf_string[] = {
 typedef struct {
        char headset_detection;
        char headset_node_number;
-} AudioSystemConf;
+       bool control_aif_before_path_set;
+       bool gain_debug_mode;
+} avsys_audio_conf;
 
-static int __load_conf(AudioSystemConf *data)
+static int __load_conf(avsys_audio_conf *data)
 {
+       dictionary *dict = NULL;
+
 #if defined(_MMFW_I386_ALL_SIMULATOR)
        if (data == NULL)
                return AVSYS_STATE_ERR_NULL_POINTER;
@@ -279,6 +270,20 @@ static int __load_conf(AudioSystemConf *data)
        data->headset_detection = conf_data[0];
        data->headset_node_number = conf_data[1];
 #endif
+
+       /* first, try to load existing ini file */
+       dict = iniparser_load(AVSYS_AUDIO_INI_DEFAULT_PATH);
+       if (dict) { /* if dict is available */
+               data->control_aif_before_path_set = iniparser_getboolean(dict, "aif:control aif before path set", AVSYS_AUDIO_DEFAULT_CONTROL_AIF_BEFORE_PATH_SET);
+               data->gain_debug_mode = iniparser_getboolean(dict, "debug:gain debug mode", AVSYS_AUDIO_DEFAULT_GAIN_DEBUG_MODE);
+
+               /* free dict as we got our own structure */
+               iniparser_freedict (dict);
+       } else { /* if no file exists. create one with set of default values */
+               data->control_aif_before_path_set = AVSYS_AUDIO_DEFAULT_CONTROL_AIF_BEFORE_PATH_SET;
+               data->gain_debug_mode = AVSYS_AUDIO_DEFAULT_GAIN_DEBUG_MODE;
+       }
+
        return AVSYS_STATE_SUCCESS;
 }
 
@@ -289,12 +294,10 @@ int avsys_audio_path_ex_init(void)
        avsys_audio_path_ex_info_t **temp = NULL;
        gain_info_t default_gain = { AVSYS_AUDIO_PLAYBACK_GAIN_AP, AVSYS_AUDIO_CAPTURE_GAIN_AP };
        path_info_t default_path = { AVSYS_AUDIO_PATH_EX_SPK, AVSYS_AUDIO_PATH_EX_MIC };
-       gain_status_t clean_gain_status = { GS_GAIN_NONE, GS_GAIN_NONE };
-       path_status_t clean_path_status = { PS_PATH_NONE, PS_PATH_NONE };
-       option_info_t default_option = { AVSYS_AUDIO_PATH_OPTION_JACK_AUTO, AVSYS_AUDIO_PATH_OPTION_JACK_AUTO };
+       option_info_t default_option = { AVSYS_AUDIO_PATH_OPTION_NONE, AVSYS_AUDIO_PATH_OPTION_NONE };
        int index = 0;
        int err = AVSYS_STATE_SUCCESS;
-       AudioSystemConf conf = { 1, 4 };
+       avsys_audio_conf conf = { 0, };
 
        /* Check root user */
        err = avsys_check_root_privilege();
@@ -304,7 +307,6 @@ int avsys_audio_path_ex_init(void)
 
        temp = &control;
        avsys_assert(AVSYS_SUCCESS(avsys_audio_create_sync(AVSYS_AUDIO_SYNC_IDEN_PATH)));
-       avsys_assert(AVSYS_SUCCESS(avsys_audio_create_sync(AVSYS_AUDIO_SYNC_IDEN_SOUNDPATH))); /* for audio route policy */
        avsys_assert(AVSYS_SUCCESS(avsys_audio_create_shm(AVSYS_AUDIO_SHM_IDEN_PATH)));
 
        avsys_assert(AVSYS_SUCCESS(avsys_audio_get_shm(AVSYS_AUDIO_SHM_IDEN_PATH, (void **)temp)));
@@ -319,14 +321,10 @@ int avsys_audio_path_ex_init(void)
        control->backup_gain = default_gain;
        control->backup_path = default_path;
        control->option = default_option;
-       control->gain_status = clean_gain_status;
-       control->path_status = clean_path_status;
-       control->p_gain_status = clean_gain_status;
-       control->p_path_status = clean_path_status;
 
        control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_SPK;
        control->inserted = AVSYS_AUDIO_INSERTED_NONE;
-       control->route_policy = AVSYS_AUDIO_ROUTE_POLICY_DEFAULT;
+
        if (AVSYS_FAIL(__load_conf(&conf)))
                avsys_error_r(AVAUDIO, "Can not load audio system configuration file\n");
 
@@ -344,29 +342,9 @@ int avsys_audio_path_ex_init(void)
 
        avsys_error_r(AVAUDIO, "Earjack init value is %d\n", control->inserted);
 
-       {
-               /* Gain tunning Debug mode */
-               FILE *gainTunningFp = NULL;
-               if (NULL != (gainTunningFp = fopen("/opt/etc/gain_tuner.ini", "r"))) {
-                       char buffer[32] = "";
-                       avsys_warning(AVAUDIO, "GAIN TUNNING DEBUG MODE...This degrade sound path performance\n");
-                       memset(buffer, '\0', sizeof(buffer));
-                       if (NULL == fgets(buffer, sizeof(buffer) - 1, gainTunningFp)) {
-                               fclose(gainTunningFp);
-                               control->gain_debug_mode = 0;
-                       } else {
-                               fclose(gainTunningFp);
-                               if (0 == strncmp("debug=1", buffer, 7)) {
-                                       control->gain_debug_mode = 1;
-                               } else {
-                                       control->gain_debug_mode = 0;
-                               }
-                       }
-               } else {
-                       control->gain_debug_mode = 0;
-               }
-       }
-       control->ear_auto = AVSYS_AUDIO_EAR_SWITCH_MANUAL;
+       control->control_aif_before_path_set = conf.control_aif_before_path_set;
+       control->gain_debug_mode = conf.gain_debug_mode;
+
        control->mute = AVSYS_AUDIO_UNMUTE;
        control->path_fixed = PATH_FIXED_NONE;
 
@@ -414,13 +392,11 @@ int avsys_audio_path_ex_reset(int forced)
        avsys_audio_path_ex_info_t **temp = NULL;
        gain_info_t default_gain = { AVSYS_AUDIO_PLAYBACK_GAIN_AP, AVSYS_AUDIO_CAPTURE_GAIN_AP };
        path_info_t default_path = { AVSYS_AUDIO_PATH_EX_SPK, AVSYS_AUDIO_PATH_EX_MIC };
-       gain_status_t clean_gain_status = { GS_GAIN_NONE, GS_GAIN_NONE };
-       path_status_t clean_path_status = { PS_PATH_NONE, PS_PATH_NONE };
-       option_info_t default_option = { AVSYS_AUDIO_PATH_OPTION_JACK_AUTO, AVSYS_AUDIO_PATH_OPTION_JACK_AUTO };
+       option_info_t default_option = { AVSYS_AUDIO_PATH_OPTION_NONE, AVSYS_AUDIO_PATH_OPTION_NONE };
        int index = 0;
        int err = AVSYS_STATE_SUCCESS;
        int backup_debug = 0;
-       AudioSystemConf conf = { 1, 4 };
+       avsys_audio_conf conf = { 0, };
 
        /* Check root user */
        err = avsys_check_root_privilege();
@@ -449,14 +425,10 @@ int avsys_audio_path_ex_reset(int forced)
        control->backup_gain = default_gain;
        control->backup_path = default_path;
        control->option = default_option;
-       control->gain_status = clean_gain_status;
-       control->path_status = clean_path_status;
-       control->p_gain_status = clean_gain_status;
-       control->p_path_status = clean_path_status;
 
        control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_SPK;
        control->inserted = AVSYS_AUDIO_INSERTED_NONE;
-       control->route_policy = AVSYS_AUDIO_ROUTE_POLICY_DEFAULT;
+
        if (AVSYS_FAIL(__load_conf(&conf)))
                avsys_error_r(AVAUDIO, "Can not load audio system configuration file\n");
 
@@ -464,8 +436,13 @@ int avsys_audio_path_ex_reset(int forced)
                control->inserted = __avsys_audio_path_get_earjack_type();
                if (control->inserted == AVSYS_AUDIO_INSERTED_NONE)
                        control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_SPK;
-               else
+               else {
                        control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET;
+                       control->path.playback = AVSYS_AUDIO_PATH_EX_HEADSET;
+
+                       if (control->inserted == AVSYS_AUDIO_INSERTED_4)
+                               control->path.capture = AVSYS_AUDIO_PATH_EX_HEADSETMIC;
+               }
        } else {
                avsys_warning(AVAUDIO, "Ignore headset detection. Use speaker device\n");
                control->inserted = AVSYS_AUDIO_INSERTED_NONE;
@@ -474,29 +451,9 @@ int avsys_audio_path_ex_reset(int forced)
 
        avsys_error_r(AVAUDIO, "Earjack init value is %d\n", control->inserted);
 
-       {
-               /* Gain tunning Debug mode */
-               FILE *gainTunningFp = NULL;
-               if (NULL != (gainTunningFp = fopen("/opt/etc/gain_tuner.ini", "r"))) {
-                       char buffer[32] = "";
-                       avsys_warning(AVAUDIO, "GAIN TUNNING DEBUG MODE...This degrade sound path performance\n");
-                       memset(buffer, '\0', sizeof(buffer));
-                       if (NULL == fgets(buffer, sizeof(buffer) - 1, gainTunningFp)) {
-                               fclose(gainTunningFp);
-                               control->gain_debug_mode = 0;
-                       } else {
-                               fclose(gainTunningFp);
-                               if (0 == strncmp("debug=1", buffer, 7)) {
-                                       control->gain_debug_mode = 1;
-                               } else {
-                                       control->gain_debug_mode = 0;
-                               }
-                       }
-               } else {
-                       control->gain_debug_mode = 0;
-               }
-       }
-       control->ear_auto = AVSYS_AUDIO_EAR_SWITCH_MANUAL;
+       control->control_aif_before_path_set = conf.control_aif_before_path_set;
+       control->gain_debug_mode = conf.gain_debug_mode;
+
        control->mute = AVSYS_AUDIO_UNMUTE;
        control->path_fixed = PATH_FIXED_NONE;
 
@@ -589,10 +546,7 @@ int avsys_audio_path_ex_dump(void)
                        str_playback_gain[control->gain.playback], str_capture_gain[control->gain.capture]);
        fprintf(stdout, " Current Out / In              : %-s / %-s\n", str_out[control->path.playback], str_in[control->path.capture] );
        fprintf(stdout, " Gain debug mode               : 0x%-x\n", control->gain_debug_mode);
-       fprintf(stdout, " Gain status                   : 0x%x  0x%x\n", control->gain_status.playback, control->gain_status.capture);
-       fprintf(stdout, " Path status                   : 0x%x  0x%x\n", control->path_status.playback, control->path_status.capture);
        fprintf(stdout, " Auto EarJack Control          : %-s\n", str_ear[control->ear_auto]);
-       fprintf(stdout, " Audio Route Policy            : %-s\n", str_route[control->route_policy]);
        fprintf(stdout, " Physical Earjack? [type]      : %-s [%-s]\n", str_yn[control->inserted != AVSYS_AUDIO_INSERTED_NONE], str_earType[control->inserted]);
        fprintf(stdout, " Path Fixed State              : 0x%-x\n", control->path_fixed);
        fprintf(stdout, " Mute status                   : %d\n", control->mute);
@@ -607,9 +561,6 @@ int avsys_audio_path_ex_dump(void)
                        fprintf(stdout, " Path sync lock required PIDs   : %d\n", control->pathlock_pid[index]);
                index++;
        } while (index < AVSYS_AUDIO_LOCK_SLOT_MAX);
-       fprintf(stdout, " Option Lagacy                 : %-s\n", str_yn[(control->option.playback & AVSYS_AUDIO_PATH_OPTION_LEGACY_MODE) ? 1 : 0]);
-       fprintf(stdout, " Option Jack Playback          : %-s\n", str_yn[(control->option.playback & AVSYS_AUDIO_PATH_OPTION_JACK_AUTO) ? 1 : 0]);
-       fprintf(stdout, " Option Jack Capture           : %-s\n", str_yn[(control->option.capture & AVSYS_AUDIO_PATH_OPTION_JACK_AUTO) ? 1 : 0]);
        fprintf(stdout, " Option Dual out               : %-s\n", str_yn[(control->option.playback & AVSYS_AUDIO_PATH_OPTION_DUAL_OUT) ? 1 : 0]);
        fprintf(stdout, " Option Forced                 : %-s\n", str_yn[(control->option.playback & AVSYS_AUDIO_PATH_OPTION_FORCED) ? 1 : 0]);
 
@@ -668,7 +619,7 @@ int avsys_audio_path_earjack_init(int *init_type, int *outfd)
 #if !defined(_MMFW_I386_ALL_SIMULATOR)
        char eventnode_filename[32] = { 0, };
        int fd = 0;
-       AudioSystemConf conf = { 1, 4 };
+       avsys_audio_conf conf = { 0, };
 
        if (outfd == NULL || init_type == NULL) {
                avsys_error(AVAUDIO, "input parameter is null\n");
@@ -681,10 +632,10 @@ int avsys_audio_path_earjack_init(int *init_type, int *outfd)
 
        if (!conf.headset_detection) {
                avsys_error(AVAUDIO, "Earjack control daemon will be closed by user option...\n");
-               return AVSYS_STATE_SUCCESS;
+               return AVSYS_STATE_ERR_DEVICE_NOT_SUPPORT;
        }
 
-       snprintf(eventnode_filename, sizeof(eventnode_filename), "/dev/event%01d", conf.headset_node_number);
+       snprintf(eventnode_filename, sizeof(eventnode_filename), "%s%01d", EARJACK_EVENT_PATH, conf.headset_node_number);
 
        fd = open(eventnode_filename, O_RDONLY);
        if (fd == -1) {
@@ -725,9 +676,8 @@ int avsys_audio_path_earjack_wait(int fd, int *current_type, int *new_type, int
        fd_set set;
        int readtemp;
        int select_ret = 0;
-       struct avsys_audio_jack_event jevent;
+       struct input_event jevent;
        int res = AVSYS_STATE_SUCCESS;
-       int set_flag = 0;
        int cur_type = -1;
 
        if (new_type == NULL || is_auto_mute == NULL)
@@ -774,8 +724,6 @@ int avsys_audio_path_earjack_wait(int fd, int *current_type, int *new_type, int
                } else {
                        readtemp = 0;
                }
-
-               set_flag = 1;   /* need change earphone status */
                break;
        default:
                readtemp = cur_type; /* same value */
@@ -802,17 +750,10 @@ int avsys_audio_path_earjack_wait(int fd, int *current_type, int *new_type, int
                *current_type = control->inserted;
                *is_auto_mute = 0;
                res = AVSYS_STATE_SUCCESS;
-       } else if (control->ear_auto == AVSYS_AUDIO_EAR_SWITCH_MANUAL) {
-               *is_auto_mute = 0;
-               /* return warning */
-               if (set_flag) {
-                       control->inserted = *new_type;
-                       set_flag = 0;
-               }
-               res = AVSYS_STATE_WAR_INTERNAL;
        }
 
        return res;
+
 #else
        return AVSYS_STATE_ERR_DEVICE_NOT_SUPPORT;
 #endif
@@ -834,27 +775,6 @@ int avsys_audio_path_earjack_process(int new_type)
 
        control->inserted = new_type;
 
-       if (control->ear_auto == AVSYS_AUDIO_EAR_SWITCH_MANUAL) {
-               return AVSYS_STATE_SUCCESS;
-       }
-
-       /* Capture/Playback Gain Control */
-       avsys_warning(AVAUDIO, "Gain C(%d), P(%d)\n", control->gain.capture, control->gain.playback);
-       err = capture_gain_func_table[control->gain.capture] (control);
-       if (AVSYS_FAIL(err)) {
-               avsys_error_r(AVAUDIO, "earjack change failed for %d gain : error 0x%x\n", control->gain.capture, err);
-       }
-
-       err = playback_gain_func_table[control->gain.playback] (control);
-       if (AVSYS_SUCCESS(err)) {
-               /* H/W Control */
-               err = __avsys_audio_path_set_hw_controls(control);
-               if (AVSYS_FAIL(err)) {
-                       avsys_error_r(AVAUDIO, "__avsys_audio_path_set_hw_controls() failed in %s\n", __func__);
-               }
-       } else
-               avsys_error_r(AVAUDIO, "earjack change failed for %d gain : error 0x%x\n", control->gain.playback, err);
-
        return err;
 #else
        return AVSYS_STATE_ERR_DEVICE_NOT_SUPPORT;
@@ -893,8 +813,8 @@ enum {
        CMD_DEVICE_MAX
 };
 
-avsys_audio_alsa_aif_handle_t *g_hAIF[AIF_DEVICE_MAX] = { NULL, NULL, NULL, NULL };
-char *strAIF[AIF_DEVICE_MAX] = { "AIF2 Capture", "AIF2 Playback", "AIF3 Capture", "AIF3 Playback" };
+avsys_audio_alsa_aif_handle_t *g_hAIF[AIF_DEVICE_MAX] = { NULL, NULL, NULL, NULL, NULL };
+char *strAIF[AIF_DEVICE_MAX] = { "AIF2 Capture", "AIF2 Playback", "AIF3 Capture", "AIF3 Playback", "AIF4 Playback" };
 
 #define SET_AIF(index) \
 do {                                                                                                                           \
@@ -970,6 +890,7 @@ static int __avsys_audio_release_path (gain_info_t local_gain, avsys_audio_path_
 {
        int err = AVSYS_STATE_SUCCESS;
        int iAIF = 0;
+       bool close_aif_later = false;
 
        avsys_warning(AVAUDIO, "Release path for %d %d\n", local_gain.playback, local_gain.capture);
 
@@ -977,14 +898,15 @@ static int __avsys_audio_release_path (gain_info_t local_gain, avsys_audio_path_
        case AVSYS_AUDIO_PLAYBACK_GAIN_VOICECALL:
        case AVSYS_AUDIO_PLAYBACK_GAIN_VIDEOCALL:
                if (getpid() == control->path_fixed_pid[PATH_FIXED_TYPE_CALL]) {
-#ifndef OPEN_AIF_BEFORE_SCENARIO_SET   /* FIXME : disable here, close after scenario set */
-                       __avsys_close_aif();
-#endif
+                       if (!control->control_aif_before_path_set) {
+                               __avsys_close_aif();
+                       } else {
+                               close_aif_later = true;
+                       }
 
                        if (AVSYS_FAIL(avsys_audio_ascn_single_set(ASCN_CODEC_DISABLE_ON_SUSPEND))) {
                                avsys_error_r(AVAUDIO, "[%s] failed to set codec_disable_on_suspend\n", __func__);
                        }
-                       control->p_path_status.playback |= PS_CODEC_DISABLE_ON_SUSPEND;
                } else {
                        if (control->path_fixed_pid[PATH_FIXED_TYPE_CALL] < 0) {
                                avsys_warning(AVAUDIO, "Sound path for call released already\n");
@@ -1007,20 +929,11 @@ static int __avsys_audio_release_path (gain_info_t local_gain, avsys_audio_path_
                if (AVSYS_FAIL(avsys_audio_ascn_single_set(ASCN_CODEC_DISABLE_ON_SUSPEND))) {
                        avsys_error_r(AVAUDIO, "[%s] failed to set codec_disable_on_suspend\n", __func__);
                }
-               control->p_path_status.playback |= PS_CODEC_DISABLE_ON_SUSPEND;
 
-               if (AVSYS_FAIL(avsys_audio_ascn_single_set(ASCN_STR_RESET))) {
+               if (AVSYS_FAIL(avsys_audio_ascn_single_set(ASCN_STR_RESET_CAPTURE))) {
                        avsys_error_r(AVAUDIO, "[%s] failed to set reset\n", __func__);
-               } else {
-                       control->p_path_status.playback = PS_PATH_NONE;
                }
 
-               /* TODO: Path fixed clear (path_fixed, path_fixed_pid) */
-               if ((control->path_fixed & PATH_FIXED_WITH_FMRADIO) == 0) {
-                       avsys_error(AVAUDIO, "FM-Radio path release without radio path request\n");
-               }
-               control->path_fixed &= ~PATH_FIXED_WITH_FMRADIO;
-               control->path_fixed_pid[PATH_FIXED_TYPE_FMRADIO] = -1;
                break;
 
        default:
@@ -1037,31 +950,12 @@ static int __avsys_audio_release_path (gain_info_t local_gain, avsys_audio_path_
                control->gain.capture = AVSYS_AUDIO_CAPTURE_GAIN_AP;
                control->path.playback = AVSYS_AUDIO_PATH_EX_SPK;
                control->path.capture = AVSYS_AUDIO_PATH_EX_MIC;
-
-               switch(control->route_policy)
-               {
-               case AVSYS_AUDIO_ROUTE_POLICY_DEFAULT:
-               case AVSYS_AUDIO_ROUTE_POLICY_IGNORE_A2DP:
-                       control->ear_auto = AVSYS_AUDIO_EAR_SWITCH_AUTO_WITH_MUTE;
-                       control->option.playback = AVSYS_AUDIO_PATH_OPTION_JACK_AUTO;
-                       control->option.capture = AVSYS_AUDIO_PATH_OPTION_JACK_AUTO;
-                       break;
-
-               case AVSYS_AUDIO_ROUTE_POLICY_HANDSET_ONLY:
-                       control->ear_auto = AVSYS_AUDIO_EAR_SWITCH_AUTO_WITHOUT_MUTE;
-                       control->option.playback = AVSYS_AUDIO_PATH_OPTION_NONE;
-                       control->option.capture = AVSYS_AUDIO_PATH_OPTION_NONE;
-                       break;
-
-               default:
-                       break;
+               if (control->inserted != AVSYS_AUDIO_INSERTED_NONE) {
+                       control->path.playback = AVSYS_AUDIO_PATH_EX_HEADSET;
+                       if (control->inserted == AVSYS_AUDIO_INSERTED_4)
+                               control->path.capture = AVSYS_AUDIO_PATH_EX_HEADSETMIC;
                }
 
-               control->p_path_status.playback = PS_PATH_NONE;
-               control->p_path_status.capture = PS_PATH_NONE;
-               control->p_gain_status.playback = GS_GAIN_NONE;
-               control->p_gain_status.capture = GS_GAIN_NONE;
-
                /* Playback */
                err = __avsys_audio_path_set_ascn_ap_playback(control);
                if (AVSYS_SUCCESS(err)) {
@@ -1080,17 +974,43 @@ static int __avsys_audio_release_path (gain_info_t local_gain, avsys_audio_path_
                }
        }
 
-       /* FIXME : Close AIF, this will be moved before scneario set */
-#ifdef OPEN_AIF_BEFORE_SCENARIO_SET
-       if ((local_gain.playback == AVSYS_AUDIO_PLAYBACK_GAIN_VOICECALL || local_gain.playback == AVSYS_AUDIO_PLAYBACK_GAIN_VIDEOCALL) &&
-                       getpid() == control->path_fixed_pid[PATH_FIXED_TYPE_CALL]) {
-                               __avsys_close_aif();
+       if (close_aif_later == true) {
+               __avsys_close_aif();
        }
-#endif
 
        return err;
 }
 
+int avsys_audio_path_earjack_get_type()
+{
+       avsys_audio_path_ex_info_t *control = NULL;
+       avsys_audio_path_ex_info_t **temp = NULL;
+       int err = AVSYS_STATE_SUCCESS;
+       int ret = 0;
+
+       temp = &control;
+       if (AVSYS_FAIL(avsys_audio_get_shm(AVSYS_AUDIO_SHM_IDEN_PATH, (void **)temp))) {
+               avsys_error_r(AVAUDIO, "avsys_audio_get_shm() failed in %s\n", __func__);
+               return AVSYS_STATE_ERR_INTERNAL;
+       }
+       if (control == NULL)
+               return AVSYS_STATE_ERR_NULL_POINTER;
+
+       if (AVSYS_FAIL(avsys_audio_lock_sync(AVSYS_AUDIO_SYNC_IDEN_PATH))) {
+               avsys_error_r(AVAUDIO, "avsys_audio_lock_sync() failed in %s\n", __func__);
+               return AVSYS_STATE_ERR_INTERNAL;
+       }
+
+       ret = control->inserted;
+
+       if (AVSYS_FAIL(avsys_audio_unlock_sync(AVSYS_AUDIO_SYNC_IDEN_PATH))) {
+               avsys_error_r(AVAUDIO, "avsys_audio_unlock_sync() failed in %s\n", __func__);
+               return AVSYS_STATE_ERR_INTERNAL;
+       }
+
+       return ret;
+}
+
 int avsys_audio_path_ex_set_path(int gain, int out, int in, int option)
 {
        avsys_audio_path_ex_info_t *control = NULL;
@@ -1100,7 +1020,7 @@ int avsys_audio_path_ex_set_path(int gain, int out, int in, int option)
        pid_t current_pid;
        int err = AVSYS_STATE_SUCCESS;
        char req_release_path = 0;
-       char AIF_control[AIF_DEVICE_MAX] = { CMD_DEVICE_NONE, CMD_DEVICE_NONE, CMD_DEVICE_NONE, CMD_DEVICE_NONE };
+       char AIF_control[AIF_DEVICE_MAX] = { CMD_DEVICE_NONE, CMD_DEVICE_NONE, CMD_DEVICE_NONE, CMD_DEVICE_NONE, CMD_DEVICE_NONE };
        int iAIF = 0;
 
        avsys_warning(AVAUDIO, "=================== [Input Param] gain %d, out %d, in %d, opt 0x%x ====================\n", gain, out, in, option);
@@ -1114,6 +1034,7 @@ int avsys_audio_path_ex_set_path(int gain, int out, int in, int option)
        case AVSYS_AUDIO_GAIN_EX_CAMERA:
        case AVSYS_AUDIO_GAIN_EX_GAME:
                req_gain.playback = AVSYS_AUDIO_PLAYBACK_GAIN_AP;
+               req_gain.capture = AVSYS_AUDIO_CAPTURE_GAIN_AP;
                break;
 
        case AVSYS_AUDIO_GAIN_EX_RINGTONE:
@@ -1179,11 +1100,6 @@ int avsys_audio_path_ex_set_path(int gain, int out, int in, int option)
                        control->path_fixed &= ~PATH_FIXED_WITH_CALL;
                }
        }
-       if (control->path_fixed & PATH_FIXED_WITH_FMRADIO) {
-               if (AVSYS_FAIL(avsys_check_process(control->path_fixed_pid[PATH_FIXED_TYPE_FMRADIO]))) {
-                       control->path_fixed &= ~PATH_FIXED_WITH_FMRADIO;
-               }
-       }
        if (control->path_fixed == PATH_FIXED_NONE) {
                /* forced gain setting when path fixed by dead process */
                if (req_gain.playback != local_gain.playback) {
@@ -1266,6 +1182,7 @@ int avsys_audio_path_ex_set_path(int gain, int out, int in, int option)
 
                        case AVSYS_AUDIO_PLAYBACK_GAIN_FMRADIO:
                                control->path_fixed_pid[PATH_FIXED_TYPE_FMRADIO] = current_pid;
+                               SET_AIF(AIF4_PLAYBACK);
                                break;
                        }
                }
@@ -1309,10 +1226,9 @@ int avsys_audio_path_ex_set_path(int gain, int out, int in, int option)
        }
 
        /* Open AIFs */
-       /* FIXME: this will be moved to after alsa scenraio set */
-#ifdef OPEN_AIF_BEFORE_SCENARIO_SET
-       err = __avsys_open_aif(AIF_control);
-#endif
+       if (control->control_aif_before_path_set) {
+               err = __avsys_open_aif(AIF_control);
+       }
 
        /* Do ALSA scenario control based on gain */
        /* Playback */
@@ -1346,9 +1262,10 @@ int avsys_audio_path_ex_set_path(int gain, int out, int in, int option)
                avsys_warning(AVAUDIO, "capture gain : ap\n");
                err = __avsys_audio_path_set_ascn_ap_capture(control);
        }
-#ifndef OPEN_AIF_BEFORE_SCENARIO_SET
-       err = __avsys_open_aif(AIF_control);
-#endif
+
+       if (!control->control_aif_before_path_set) {
+               err = __avsys_open_aif(AIF_control);
+       }
 
 FINISHED:
        /* UnLOCK */
@@ -1566,116 +1483,45 @@ static int __avsys_audio_path_set_ascn_ap_playback(avsys_audio_path_ex_info_t *c
 
        switch (control->path.playback) {
        case AVSYS_AUDIO_PATH_EX_SPK:
-               if (control->option.playback & AVSYS_AUDIO_PATH_OPTION_LEGACY_MODE) {
-                       avsys_warning(AVAUDIO, "Does not support legacy mode anymore\n");
-               }
-
                if (control->option.playback & AVSYS_AUDIO_PATH_OPTION_DUAL_OUT) {
                        if (callalert_mode) {
-                               control->gain_status.playback = GS_AP_TO_SPK_CALLALERT;
                                cmd_gain[0] = INPUT_AP | OUTPUT_STEREO_SPK | GAIN_CALLALERT;
                        } else {
-                               control->gain_status.playback = GS_AP_TO_SPK;
                                cmd_gain[0] = INPUT_AP | OUTPUT_STEREO_SPK | GAIN_MODE;
                        }
 
                        if (control->inserted == AVSYS_AUDIO_INSERTED_NONE) {
-                               control->path_status.playback = PS_AP_TO_SPK;
                                cmd_path[0] = INPUT_AP | OUTPUT_STEREO_SPK;
                        } else {
-                               control->path_status.playback = PS_AP_TO_SPK | PS_AP_TO_HEADSET;
                                cmd_path[0] = INPUT_AP | OUTPUT_STEREO_SPK;
                                cmd_path[1] = INPUT_AP | OUTPUT_HEADSET;
                        }
                        control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_SPK;
                } else {
-                       if (control->option.playback & AVSYS_AUDIO_PATH_OPTION_JACK_AUTO) {
-                               control->ear_auto = AVSYS_AUDIO_EAR_SWITCH_AUTO_WITH_MUTE;
-                               if (control->inserted == AVSYS_AUDIO_INSERTED_NONE) {
-                                       if (callalert_mode) {
-                                               control->gain_status.playback = GS_AP_TO_SPK_CALLALERT;
-                                               cmd_gain[0] = INPUT_AP | OUTPUT_STEREO_SPK | GAIN_CALLALERT;
-                                       } else {
-                                               control->gain_status.playback = GS_AP_TO_SPK;
-                                               cmd_gain[0] = INPUT_AP | OUTPUT_STEREO_SPK | GAIN_MODE;
-                                       }
-                                       control->path_status.playback = PS_AP_TO_SPK;
-                                       control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_SPK;
-                                       cmd_path[0] = INPUT_AP | OUTPUT_STEREO_SPK;
-                               } else {
-                                       if (callalert_mode) {
-                                               control->gain_status.playback = GS_AP_TO_HEADSET_CALLALERT;
-                                               cmd_gain[0] = INPUT_AP | OUTPUT_HEADSET | GAIN_CALLALERT;
-                                       } else {
-                                               control->gain_status.playback = GS_AP_TO_HEADSET;
-                                               cmd_gain[0] = INPUT_AP | OUTPUT_HEADSET | GAIN_MODE;
-                                       }
-                                       control->path_status.playback = PS_AP_TO_HEADSET;
-                                       control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET;
-                                       cmd_path[0] = INPUT_AP | OUTPUT_HEADSET;
-                               }
+                       if (callalert_mode) {
+                               cmd_gain[0] = INPUT_AP | OUTPUT_STEREO_SPK | GAIN_CALLALERT;
                        } else {
-                               if (callalert_mode) {
-                                       control->gain_status.playback = GS_AP_TO_SPK_CALLALERT;
-                                       cmd_gain[0] = INPUT_AP | OUTPUT_STEREO_SPK | GAIN_CALLALERT;
-                               } else {
-                                       control->gain_status.playback = GS_AP_TO_SPK;
-                                       cmd_gain[0] = INPUT_AP | OUTPUT_STEREO_SPK | GAIN_MODE;
-                               }
-                               control->ear_auto = AVSYS_AUDIO_EAR_SWITCH_AUTO_WITHOUT_MUTE;
-                               control->path_status.playback = PS_AP_TO_SPK;
-                               control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_SPK;
-
-                               cmd_path[0] = INPUT_AP | OUTPUT_STEREO_SPK;
+                               cmd_gain[0] = INPUT_AP | OUTPUT_STEREO_SPK | GAIN_MODE;
                        }
+                       control->ear_auto = AVSYS_AUDIO_EAR_SWITCH_AUTO_WITHOUT_MUTE;
+                       control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_SPK;
+
+                       cmd_path[0] = INPUT_AP | OUTPUT_STEREO_SPK;
                }
                break;
 
        case AVSYS_AUDIO_PATH_EX_RECV:
-               if (control->option.playback & AVSYS_AUDIO_PATH_OPTION_LEGACY_MODE) {
-                       avsys_warning(AVAUDIO, "Does not support legacy mode anymore\n");
-               }
-
-               if (control->option.playback & AVSYS_AUDIO_PATH_OPTION_JACK_AUTO) {
-                       control->ear_auto = AVSYS_AUDIO_EAR_SWITCH_AUTO_WITH_MUTE;
-                       if (control->inserted == AVSYS_AUDIO_INSERTED_NONE) {
-                               control->gain_status.playback = GS_AP_TO_RECV;
-                               control->path_status.playback = PS_AP_TO_RECV;
-                               control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_SPK;
-                               cmd_gain[0] = INPUT_AP | OUTPUT_RECV | GAIN_MODE;
-                               cmd_path[0] = INPUT_AP | OUTPUT_RECV;
-                       } else {
-                               if (callalert_mode) {
-                                       control->gain_status.playback = GS_AP_TO_HEADSET_CALLALERT;
-                                       cmd_gain[0] = INPUT_AP | OUTPUT_HEADSET | GAIN_CALLALERT;
-                               } else {
-                                       control->gain_status.playback = GS_AP_TO_HEADSET;
-                                       cmd_gain[0] = INPUT_AP | OUTPUT_HEADSET | GAIN_MODE;
-                               }
-                               control->path_status.playback = PS_AP_TO_HEADSET;
-                               control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET;
-                               cmd_path[0] = INPUT_AP | OUTPUT_HEADSET;
-                       }
-               } else {
-                       control->ear_auto = AVSYS_AUDIO_EAR_SWITCH_MANUAL;
-                       control->gain_status.playback = GS_AP_TO_RECV;
-                       control->path_status.playback = PS_AP_TO_RECV;
-                       control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_SPK;
-                       cmd_gain[0] = INPUT_AP | OUTPUT_RECV | GAIN_MODE;
-                       cmd_path[0] = INPUT_AP | OUTPUT_RECV;
-               }
+               control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_SPK;
+               cmd_gain[0] = INPUT_AP | OUTPUT_RECV | GAIN_MODE;
+               cmd_path[0] = INPUT_AP | OUTPUT_RECV;
                break;
 
        case AVSYS_AUDIO_PATH_EX_HEADSET:
-               control->ear_auto = AVSYS_AUDIO_EAR_SWITCH_MANUAL;
                if (callalert_mode) {
-                       control->gain_status.playback = GS_AP_TO_HEADSET_CALLALERT;
                        cmd_gain[0] = INPUT_AP | OUTPUT_HEADSET | GAIN_CALLALERT;
                } else {
-                       control->gain_status.playback = GS_AP_TO_HEADSET;
                        cmd_gain[0] = INPUT_AP | OUTPUT_HEADSET | GAIN_MODE;
                }
-               control->path_status.playback = PS_AP_TO_HEADSET;
                control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET;
                cmd_path[0] = INPUT_AP | OUTPUT_HEADSET;
                break;
@@ -1686,9 +1532,6 @@ static int __avsys_audio_path_set_ascn_ap_playback(avsys_audio_path_ex_info_t *c
                break;
 
        case AVSYS_AUDIO_PATH_EX_BTHEADSET:
-               control->ear_auto = AVSYS_AUDIO_EAR_SWITCH_MANUAL;
-               control->gain_status.playback = GS_AP_TO_BT;
-               control->path_status.playback = PS_AP_TO_BT;
                control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_BTHEADSET;
                cmd_gain[0] = INPUT_AP | OUTPUT_BT_HEADSET | GAIN_MODE;
                cmd_path[0] = INPUT_AP | OUTPUT_BT_HEADSET;
@@ -1699,14 +1542,9 @@ static int __avsys_audio_path_set_ascn_ap_playback(avsys_audio_path_ex_info_t *c
                break;
        }
 
-       //avsys_warning(AVAUDIO,"pg(0x%X), g(0x%X), pp(0x%X), p(0x%X)\n", control->p_gain_status, control->gain_status, control->p_path_status, control->path_status);
-       if ((control->p_path_status.playback != control->path_status.playback) || control->gain_debug_mode == 1) {
-               avsys_warning(AVAUDIO, "Run Alsa Scenario Script\n");
-               RET_IO_CTL_ERR_IF_FAIL(avsys_audio_ascn_bulk_set(cmd_gain, 1, ASCN_RESET_PLAYBACK))
-               control->p_gain_status.playback = control->gain_status.playback;
-               RET_IO_CTL_ERR_IF_FAIL(avsys_audio_ascn_bulk_set(cmd_path, 2, ASCN_RESET_NONE))
-               control->p_path_status.playback = control->path_status.playback;
-       }
+       avsys_warning(AVAUDIO, "Run Alsa Scenario Script\n");
+       RET_IO_CTL_ERR_IF_FAIL(avsys_audio_ascn_bulk_set(cmd_gain, 1, ASCN_RESET_PLAYBACK))
+       RET_IO_CTL_ERR_IF_FAIL(avsys_audio_ascn_bulk_set(cmd_path, 2, ASCN_RESET_NONE))
 
        avsys_info(AVAUDIO, ">> leave");
        return AVSYS_STATE_SUCCESS;
@@ -1721,90 +1559,39 @@ static int __avsys_audio_path_set_ascn_videocall(avsys_audio_path_ex_info_t *con
 {
        int cmd_gain[2] = { 0, 0 };
        int cmd_path[3] = { 0, 0, 0 };
-       int skip_clear = 0;
+       int gain_idx = 0;
+       int path_idx = 0;
+
        control->path_fixed = PATH_FIXED_WITH_CALL;
        switch (control->path.playback) {
        case AVSYS_AUDIO_PATH_EX_NONE:
-               if (control->option.playback & AVSYS_AUDIO_PATH_OPTION_LEGACY_MODE) {
-                       /* Legacy mode does not effect here... */
-                       avsys_warning(AVAUDIO, "legacy mode option %s\n", __func__);
-               }
-               control->ear_auto = AVSYS_AUDIO_EAR_SWITCH_MANUAL;
-               if (control->reqgain.playback == control->gain.playback) {
-                       avsys_warning(AVAUDIO, "Output block on videocall");
-               } else {
-                       avsys_warning(AVAUDIO, "Ignore another path setting request during voicecall");
-               }
-               control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_SPK;
+               avsys_warning(AVAUDIO, "[SZ] playback AVSYS_AUDIO_PATH_EX_NONE\n");
                break;
 
        case AVSYS_AUDIO_PATH_EX_SPK:
                if (control->reqgain.playback == control->gain.playback) {
-                       if (control->option.playback & AVSYS_AUDIO_PATH_OPTION_JACK_AUTO) {
-                               control->ear_auto = AVSYS_AUDIO_EAR_SWITCH_AUTO_WITH_MUTE;
-                               if (control->inserted != AVSYS_AUDIO_INSERTED_NONE) {
-                                       control->gain_status.playback = GS_AP_TO_HEADSET;
-                                       control->path_status.playback = PS_AP_TO_HEADSET;
-                                       cmd_gain[0] = INPUT_AP | OUTPUT_HEADSET | GAIN_MODE;
-                                       cmd_path[0] = INPUT_AP | OUTPUT_HEADSET;
-                                       control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET;
-                               } else {
-                                       control->gain_status.playback = GS_AP_TO_SPK;
-                                       control->path_status.playback = PS_AP_TO_SPK;
-                                       cmd_gain[0] = INPUT_AP | OUTPUT_STEREO_SPK | GAIN_MODE;
-                                       cmd_path[0] = INPUT_AP | OUTPUT_STEREO_SPK;
-                                       control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_SPK;
-                               }
-                       } else { /* ear jack manual */
-                               control->ear_auto = AVSYS_AUDIO_EAR_SWITCH_MANUAL;
-                               control->gain_status.playback = GS_AP_TO_SPK;
-                               control->path_status.playback = PS_AP_TO_SPK;
-                               cmd_gain[0] = INPUT_AP | OUTPUT_STEREO_SPK | GAIN_MODE;
-                               cmd_path[0] = INPUT_AP | OUTPUT_STEREO_SPK;
-                               control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_SPK;
-                       }
-               } else { /* changed by priority */
+                       cmd_gain[gain_idx++] = INPUT_AP | OUTPUT_STEREO_SPK | GAIN_MODE;
+                       cmd_path[path_idx++] = INPUT_AP | OUTPUT_STEREO_SPK;
+                       control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_SPK;
+               } else {
                        avsys_warning(AVAUDIO, "Sound Path request during VT call ignored.");
                }
                break;
 
        case AVSYS_AUDIO_PATH_EX_RECV:
                if (control->gain.playback == control->reqgain.playback) {
-                       if (control->option.playback & AVSYS_AUDIO_PATH_OPTION_JACK_AUTO) {
-                               control->ear_auto = AVSYS_AUDIO_EAR_SWITCH_AUTO_WITH_MUTE;
-                               if (control->inserted != AVSYS_AUDIO_INSERTED_NONE) {
-                                       control->gain_status.playback = GS_AP_TO_HEADSET;
-                                       control->path_status.playback = PS_AP_TO_HEADSET;
-                                       cmd_gain[0] = INPUT_AP | OUTPUT_HEADSET | GAIN_MODE;
-                                       cmd_path[0] = INPUT_AP | OUTPUT_HEADSET;
-                                       control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET;
-                               } else {
-                                       control->gain_status.playback = GS_AP_TO_RECV;
-                                       control->path_status.playback = PS_AP_TO_RECV;
-                                       cmd_gain[0] = INPUT_AP | OUTPUT_RECV | GAIN_MODE;
-                                       cmd_path[0] = INPUT_AP | OUTPUT_RECV;
-                                       control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_SPK;
-                               }
-                       } else  { /* ear jack manual */
-                               control->ear_auto = AVSYS_AUDIO_EAR_SWITCH_MANUAL;
-                               control->gain_status.playback = GS_AP_TO_RECV;
-                               control->path_status.playback = PS_AP_TO_RECV;
-                               cmd_gain[0] = INPUT_AP | OUTPUT_RECV | GAIN_MODE;
-                               cmd_path[0] = INPUT_AP | OUTPUT_RECV;
-                               control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_SPK;
-                       }
-               } else { /* changed by priority */
+                       cmd_gain[gain_idx++] = INPUT_AP | OUTPUT_RECV | GAIN_MODE;
+                       cmd_path[path_idx++] = INPUT_AP | OUTPUT_RECV;
+                       control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_SPK;
+               } else {
                        avsys_warning(AVAUDIO, "Sound Path request during VT call ignored.");
-               } /* reqgain, gain */
+               }
                break;
 
        case AVSYS_AUDIO_PATH_EX_HEADSET:
                if (control->reqgain.playback == control->gain.playback) {
-                       control->ear_auto = AVSYS_AUDIO_EAR_SWITCH_MANUAL;
-                       control->gain_status.playback = GS_AP_TO_HEADSET;
-                       control->path_status.playback = PS_AP_TO_HEADSET;
-                       cmd_gain[0] = INPUT_AP | OUTPUT_HEADSET | GAIN_MODE;
-                       cmd_path[0] = INPUT_AP | OUTPUT_HEADSET;
+                       cmd_gain[gain_idx++] = INPUT_AP | OUTPUT_HEADSET | GAIN_MODE;
+                       cmd_path[path_idx++] = INPUT_AP | OUTPUT_HEADSET;
                        control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET;
                } else {
                        avsys_warning(AVAUDIO, "Sound Path request during VT call ignored.");
@@ -1813,11 +1600,8 @@ static int __avsys_audio_path_set_ascn_videocall(avsys_audio_path_ex_info_t *con
 
        case AVSYS_AUDIO_PATH_EX_BTHEADSET:
                if (control->reqgain.playback == control->gain.playback) {
-                       control->ear_auto = AVSYS_AUDIO_EAR_SWITCH_MANUAL;
-                       control->gain_status.playback = GS_AP_TO_BT;
-                       control->path_status.playback = PS_AP_TO_BT;
-                       cmd_gain[0] = INPUT_AP | OUTPUT_BT_HEADSET | GAIN_MODE;
-                       cmd_path[0] = INPUT_AP | OUTPUT_BT_HEADSET;
+                       cmd_gain[gain_idx++] = INPUT_AP | OUTPUT_BT_HEADSET | GAIN_MODE;
+                       cmd_path[path_idx++] = INPUT_AP | OUTPUT_BT_HEADSET;
                        control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_BTHEADSET;
                } else {
                        avsys_warning(AVAUDIO, "Sound Path request during VT call ignored.");
@@ -1834,61 +1618,27 @@ static int __avsys_audio_path_set_ascn_videocall(avsys_audio_path_ex_info_t *con
 
        switch (control->path.capture) {
        case AVSYS_AUDIO_PATH_EX_NONE:
-               if (control->reqgain.capture == control->gain.capture) {
-                       /* Clear modem input */
-                       control->path_status.capture &= ~(PS_MAINMIC_TO_AP | PS_SUBMIC_TO_AP | PS_EARMIC_TO_AP | PS_BTMIC_TO_AP);
-               } else {
-                       avsys_warning(AVAUDIO, "Ignore another path setting request during VT call (input)\n");
-               }
+               avsys_warning(AVAUDIO, "[SZ] capture AVSYS_AUDIO_PATH_EX_NONE\n");
                break;
 
        case AVSYS_AUDIO_PATH_EX_MIC:
-               if (control->option.capture & AVSYS_AUDIO_PATH_OPTION_JACK_AUTO) {
-                       if ((control->inserted == AVSYS_AUDIO_INSERTED_4) && (control->path_status.playback & PS_AP_TO_HEADSET)) {
-                               control->gain_status.capture |= GS_EARMIC_TO_AP;
-                               control->path_status.capture |= PS_EARMIC_TO_AP;
-                               cmd_gain[1] = INPUT_EAR_MIC | OUTPUT_AP | GAIN_MODE;
-                               cmd_path[1] = INPUT_EAR_MIC | OUTPUT_AP;
-                       } else {
-                               if (control->option.capture & AVSYS_AUDIO_PATH_OPTION_USE_SUBMIC) {
-                                       control->gain_status.capture |= GS_SUBMIC_TO_AP;
-                                       control->path_status.capture |= PS_SUBMIC_TO_AP;
-                                       cmd_gain[1] = INPUT_SUB_MIC | OUTPUT_AP | GAIN_MODE;
-                                       cmd_path[1] = INPUT_SUB_MIC | OUTPUT_AP;
-                               } else {
-                                       control->gain_status.capture |= GS_MAINMIC_TO_AP;
-                                       control->path_status.capture |= PS_MAINMIC_TO_AP;
-                                       cmd_gain[1] = INPUT_MAIN_MIC | OUTPUT_AP | GAIN_MODE;
-                                       cmd_path[1] = INPUT_MAIN_MIC | OUTPUT_AP;
-                               }
-                       }
+               if (control->option.capture & AVSYS_AUDIO_PATH_OPTION_USE_SUBMIC) {
+                       cmd_gain[gain_idx++] = INPUT_SUB_MIC | OUTPUT_AP | GAIN_MODE;
+                       cmd_path[path_idx++] = INPUT_SUB_MIC | OUTPUT_AP;
                } else {
-                       if (control->option.capture & AVSYS_AUDIO_PATH_OPTION_USE_SUBMIC) {
-                               control->gain_status.capture |= GS_SUBMIC_TO_AP;
-                               control->path_status.capture |= PS_SUBMIC_TO_AP;
-                               cmd_gain[1] = INPUT_SUB_MIC | OUTPUT_AP | GAIN_MODE;
-                               cmd_path[1] = INPUT_SUB_MIC | OUTPUT_AP;
-                       } else {
-                               control->gain_status.capture |= GS_MAINMIC_TO_AP;
-                               control->path_status.capture |= PS_MAINMIC_TO_AP;
-                               cmd_gain[1] = INPUT_MAIN_MIC | OUTPUT_AP | GAIN_MODE;
-                               cmd_path[1] = INPUT_MAIN_MIC | OUTPUT_AP;
-                       }
+                       cmd_gain[gain_idx++] = INPUT_MAIN_MIC | OUTPUT_AP | GAIN_MODE;
+                       cmd_path[path_idx++] = INPUT_MAIN_MIC | OUTPUT_AP;
                }
                break;
 
        case AVSYS_AUDIO_PATH_EX_HEADSETMIC:
-               control->gain_status.capture |= GS_EARMIC_TO_AP;
-               control->path_status.capture |= PS_EARMIC_TO_AP;
-               cmd_gain[1] = INPUT_EAR_MIC | OUTPUT_AP | GAIN_MODE;
-               cmd_path[1] = INPUT_EAR_MIC | OUTPUT_AP;
+               cmd_gain[gain_idx++] = INPUT_EAR_MIC | OUTPUT_AP | GAIN_MODE;
+               cmd_path[path_idx++] = INPUT_EAR_MIC | OUTPUT_AP;
                break;
 
        case AVSYS_AUDIO_PATH_EX_BTMIC:
-               control->gain_status.capture |= GS_BTMIC_TO_AP;
-               control->path_status.capture |= PS_BTMIC_TO_AP;
-               cmd_gain[1] = INPUT_BT_MIC | OUTPUT_AP | GAIN_MODE;
-               cmd_path[1] = INPUT_BT_MIC | OUTPUT_AP;
+               cmd_gain[gain_idx++] = INPUT_BT_MIC | OUTPUT_AP | GAIN_MODE;
+               cmd_path[path_idx++] = INPUT_BT_MIC | OUTPUT_AP;
 
                break;
        case AVSYS_AUDIO_PATH_EX_HANDSFREE:
@@ -1896,16 +1646,9 @@ static int __avsys_audio_path_set_ascn_videocall(avsys_audio_path_ex_info_t *con
                break;
        }
 
-       if((control->p_path_status.playback != control->path_status.playback)
-                       || ((control->p_path_status.capture != control->path_status.capture)) || control->gain_debug_mode == 1) {
-               if(!skip_clear) {
-                       RET_IO_CTL_ERR_IF_FAIL(avsys_audio_ascn_single_set(ASCN_STR_RESET))
-               }
-               RET_IO_CTL_ERR_IF_FAIL(avsys_audio_ascn_bulk_set(cmd_gain, 2, ASCN_RESET_NONE))
-               control->p_gain_status = control->gain_status; /* both playback and capture */
-               RET_IO_CTL_ERR_IF_FAIL(avsys_audio_ascn_bulk_set(cmd_path, 2, ASCN_RESET_NONE))
-               control->p_path_status = control->path_status; /* both playback and capture */
-       }
+       RET_IO_CTL_ERR_IF_FAIL(avsys_audio_ascn_single_set(ASCN_STR_RESET));
+       RET_IO_CTL_ERR_IF_FAIL(avsys_audio_ascn_bulk_set(cmd_gain, 2, ASCN_RESET_NONE));
+       RET_IO_CTL_ERR_IF_FAIL(avsys_audio_ascn_bulk_set(cmd_path, 2, ASCN_RESET_NONE));
 
        return AVSYS_STATE_SUCCESS;
 }
@@ -1919,82 +1662,56 @@ static int __avsys_audio_path_set_ascn_fmradio(avsys_audio_path_ex_info_t *contr
        int skip_clear_record = 0;
        int gain_idx = 0;
        int path_idx = 0;
-       control->path_fixed = PATH_FIXED_WITH_FMRADIO;
+
+       avsys_warning(AVAUDIO, "req gain playback [%x], control gain playback [%x]\n",
+                       control->reqgain.playback, control->gain.playback);
+       avsys_warning(AVAUDIO, "req gain capture [%x], control gain capture [%x]\n",
+                               control->reqgain.capture, control->gain.capture);
+
        switch (control->path.playback) {
        case AVSYS_AUDIO_PATH_EX_NONE:
-               control->ear_auto = AVSYS_AUDIO_EAR_SWITCH_MANUAL;
-               control->gain_status.playback = GS_FMRADIO_TO_SPK;
-               control->path_status.playback = PS_PATH_NONE;
-               cmd_gain[gain_idx++] = INPUT_FMRADIO | OUTPUT_STEREO_SPK | GAIN_MODE;
+               avsys_warning(AVAUDIO, "[SZ] playback AVSYS_AUDIO_PATH_EX_NONE\n");
                break;
 
        case AVSYS_AUDIO_PATH_EX_SPK:
-               if (control->option.playback & AVSYS_AUDIO_PATH_OPTION_JACK_AUTO) {
-                       control->ear_auto = AVSYS_AUDIO_EAR_SWITCH_AUTO_WITHOUT_MUTE;
-                       if (control->reqgain.playback == control->gain.playback) {
-                               if (control->inserted != AVSYS_AUDIO_INSERTED_NONE) {
-                                       control->gain_status.playback = GS_FMRADIO_TO_HEADSET;
-                                       control->path_status.playback = PS_FMRADIO_TO_HEADSET;
-                                       cmd_gain[gain_idx++] = INPUT_FMRADIO | OUTPUT_HEADSET | GAIN_MODE;
-                                       cmd_path[path_idx++] = INPUT_FMRADIO | OUTPUT_HEADSET;
-                                       cmd_path[path_idx++] = INPUT_AP | OUTPUT_HEADSET;
-                               } else {
-                                       control->gain_status.playback = GS_FMRADIO_TO_SPK;
-                                       control->path_status.playback = PS_FMRADIO_TO_SPK;
-                                       cmd_gain[gain_idx++] = INPUT_FMRADIO | OUTPUT_STEREO_SPK | GAIN_MODE;
-                                       cmd_path[path_idx++] = INPUT_FMRADIO | OUTPUT_STEREO_SPK;
-                                       cmd_path[path_idx++] = INPUT_AP | OUTPUT_STEREO_SPK;
-                               }
-                       } else {
-                               /* append ap playback sound path */
-                               control->path_status.playback = control->p_path_status.playback;
-                               if (control->inserted != AVSYS_AUDIO_INSERTED_NONE) {
-                                       control->path_status.playback |= PS_AP_TO_HEADSET;
-                                       control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET;
-                                       cmd_path[path_idx++] = INPUT_AP | OUTPUT_HEADSET;
-                               } else {
-                                       control->path_status.playback |= PS_AP_TO_SPK;
-                                       control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_SPK;
-                                       cmd_path[path_idx++] = INPUT_AP | OUTPUT_STEREO_SPK;
-                               }
-                               skip_clear = 1;
-                       }
-               } else { /* ear jack manual */
-                       control->ear_auto = AVSYS_AUDIO_EAR_SWITCH_MANUAL;
-                       if (control->reqgain.playback == control->gain.playback) {
-                               control->gain_status.playback = GS_FMRADIO_TO_SPK;
-                               control->path_status.playback = PS_FMRADIO_TO_SPK;
-                               cmd_gain[gain_idx++] = INPUT_FMRADIO | OUTPUT_STEREO_SPK | GAIN_MODE;
-                               cmd_path[path_idx++] = INPUT_FMRADIO | OUTPUT_STEREO_SPK;
-                               cmd_path[path_idx++] = INPUT_AP | OUTPUT_STEREO_SPK;
-                       } else {
-                               /* append ap playback sound path */
-                               control->path_status.playback = control->p_path_status.playback;
-                               control->path_status.playback |= PS_AP_TO_SPK;
-                               control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_SPK;
-                               cmd_path[path_idx++] = INPUT_AP | OUTPUT_STEREO_SPK;
-                               skip_clear = 1;
-                       }
+               if (control->reqgain.playback == control->gain.playback) {
+                       avsys_warning(AVAUDIO, "req gain playback == control gain playback\n");
+                       cmd_gain[gain_idx++] = INPUT_AP | OUTPUT_STEREO_SPK | GAIN_MODE;
+                       cmd_path[path_idx++] = INPUT_AP | OUTPUT_STEREO_SPK;
+               } else {
+                       avsys_warning(AVAUDIO, "req gain playback != control gain playback\n");
+                       /* append ap playback sound path */
+                       control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_SPK;
+                       cmd_path[path_idx++] = INPUT_AP | OUTPUT_STEREO_SPK;
+                       skip_clear = 1;
                }
                break;
 
        case AVSYS_AUDIO_PATH_EX_HEADSET:
-               control->ear_auto = AVSYS_AUDIO_EAR_SWITCH_MANUAL;
                if (control->reqgain.playback == control->gain.playback) {
-                       control->gain_status.playback = GS_FMRADIO_TO_HEADSET;
-                       control->path_status.playback = PS_FMRADIO_TO_HEADSET;
-                       cmd_gain[gain_idx++] = INPUT_FMRADIO | OUTPUT_HEADSET | GAIN_MODE;
-                       cmd_path[path_idx++] = INPUT_FMRADIO | OUTPUT_HEADSET;
+                       avsys_warning(AVAUDIO, "req gain playback  == control gain playback\n");
+                       cmd_gain[gain_idx++] = INPUT_AP | OUTPUT_HEADSET | GAIN_MODE;
                        cmd_path[path_idx++] = INPUT_AP | OUTPUT_HEADSET;
                } else {
-                       /* append ap playback */
-                       control->path_status.playback = control->p_path_status.playback;
-                       control->path_status.playback |= PS_AP_TO_HEADSET;
+                       //append ap playback
+                       avsys_warning(AVAUDIO, "req gain playback != control gain playback\n");
                        control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_HEADSET;
                        cmd_path[path_idx++] = INPUT_AP | OUTPUT_HEADSET;
                        skip_clear = 1;
                }
                break;
+
+       case AVSYS_AUDIO_PATH_EX_A2DP:
+               if (control->reqgain.playback == control->gain.playback) {
+                       avsys_warning(AVAUDIO, "req gain playback == control gain playback\n");
+                       //control->ear_auto = AVSYS_AUDIO_EAR_SWITCH_MANUAL;
+               } else {
+                       avsys_warning(AVAUDIO, "req gain playback != control gain playback\n");
+                       control->lvol_dev_type = AVSYS_AUDIO_LVOL_DEV_TYPE_BTHEADSET;
+                       skip_clear = 1;
+               }
+               break;
+
        default:
                break;
        }
@@ -2002,9 +1719,11 @@ static int __avsys_audio_path_set_ascn_fmradio(avsys_audio_path_ex_info_t *contr
        switch (control->path.capture) {
        case AVSYS_AUDIO_PATH_EX_FMINPUT:
                if (control->reqgain.capture == control->gain.capture) {
-                       control->path_status.capture |= PS_FMRADIO_TO_AP;
+                       avsys_warning(AVAUDIO, "req gain capture == control gain capture\n");
+                       cmd_path[path_idx++] = INPUT_FMRADIO | OUTPUT_AP | GAIN_MODE;
                        cmd_path[path_idx++] = INPUT_FMRADIO | OUTPUT_AP;
                        if (control->reqgain.capture == control->pregain.capture) {
+                               avsys_warning(AVAUDIO, "req gain capture == control pregain capture\n");
                                skip_clear_record = 1;
                        }
                }
@@ -2013,18 +1732,13 @@ static int __avsys_audio_path_set_ascn_fmradio(avsys_audio_path_ex_info_t *contr
                break;
        }
 
-       if((control->p_path_status.playback != control->path_status.playback)
-                       || (control->p_path_status.capture != control->path_status.capture) || control->gain_debug_mode == 1) {
-                if (skip_clear_record) {
-                       RET_IO_CTL_ERR_IF_FAIL(avsys_audio_ascn_single_set(ASCN_STR_RESET_PLAYBACK))
-               } else if (!skip_clear) {
-                       RET_IO_CTL_ERR_IF_FAIL(avsys_audio_ascn_single_set(ASCN_STR_RESET))
-               }
-               RET_IO_CTL_ERR_IF_FAIL(avsys_audio_ascn_bulk_set(cmd_gain, gain_idx, ASCN_RESET_NONE))
-               control->p_gain_status = control->gain_status; /* both playback & capture */
-               RET_IO_CTL_ERR_IF_FAIL(avsys_audio_ascn_bulk_set(cmd_path, path_idx, ASCN_RESET_NONE))
-               control->p_path_status = control->path_status; /* both playback & capture */
+       if (skip_clear_record) {
+               RET_IO_CTL_ERR_IF_FAIL(avsys_audio_ascn_single_set(ASCN_STR_RESET_PLAYBACK))
+       } else if (!skip_clear) {
+               RET_IO_CTL_ERR_IF_FAIL(avsys_audio_ascn_single_set(ASCN_STR_RESET))
        }
+       RET_IO_CTL_ERR_IF_FAIL(avsys_audio_ascn_bulk_set(cmd_gain, gain_idx, ASCN_RESET_NONE))
+       RET_IO_CTL_ERR_IF_FAIL(avsys_audio_ascn_bulk_set(cmd_path, path_idx, ASCN_RESET_NONE))
 
        return AVSYS_STATE_SUCCESS;
 }
@@ -2038,56 +1752,20 @@ static int __avsys_audio_path_set_ascn_ap_capture(avsys_audio_path_ex_info_t *co
                                control->path.capture, control->option.capture, control->gain.capture, control->inserted);
        switch(control->path.capture) {
        case AVSYS_AUDIO_PATH_EX_MIC:
-               if (control->option.capture & AVSYS_AUDIO_PATH_OPTION_JACK_AUTO) {
-                       control->ear_auto = AVSYS_AUDIO_EAR_SWITCH_AUTO_WITH_MUTE;
-                       if (control->inserted == AVSYS_AUDIO_INSERTED_4) {
-                               control->gain_status.capture = GS_EARMIC_TO_AP;
-                               control->path_status.capture = PS_EARMIC_TO_AP;
-                               cmd_gain[0] = INPUT_EAR_MIC | OUTPUT_AP | GAIN_MODE;
-                               cmd_path[0] = INPUT_EAR_MIC | OUTPUT_AP;
-                       } else {
-                               if (control->option.capture & AVSYS_AUDIO_PATH_OPTION_USE_SUBMIC) {
-                                       control->gain_status.capture = GS_SUBMIC_TO_AP;
-                                       control->path_status.capture = PS_SUBMIC_TO_AP;
-                                       cmd_gain[0] = INPUT_SUB_MIC | OUTPUT_AP | GAIN_MODE;
-                                       cmd_path[0] = INPUT_SUB_MIC | OUTPUT_AP;
-                               } else if (control->option.capture & AVSYS_AUDIO_PATH_OPTION_USE_STEREOMIC) {
-                                       control->gain_status.capture = GS_STEREOMIC_TO_AP;
-                                       control->path_status.capture = PS_STEREOMIC_TO_AP;
-                                       cmd_gain[0] = INPUT_STEREO_MIC | OUTPUT_AP | GAIN_MODE;
-                                       cmd_path[0] = INPUT_STEREO_MIC | OUTPUT_AP;
-                               } else {
-                                       control->gain_status.capture = GS_MAINMIC_TO_AP;
-                                       control->path_status.capture = PS_MAINMIC_TO_AP;
-                                       cmd_gain[0] = INPUT_MAIN_MIC | OUTPUT_AP | GAIN_MODE;
-                                       cmd_path[0] = INPUT_MAIN_MIC | OUTPUT_AP;
-                               }
-                       }
+               control->ear_auto = AVSYS_AUDIO_EAR_SWITCH_AUTO_WITHOUT_MUTE;
+               if (control->option.capture & AVSYS_AUDIO_PATH_OPTION_USE_SUBMIC) {
+                       cmd_gain[0] = INPUT_SUB_MIC | OUTPUT_AP | GAIN_MODE;
+                       cmd_path[0] = INPUT_SUB_MIC | OUTPUT_AP;
+               } else if (control->option.capture & AVSYS_AUDIO_PATH_OPTION_USE_STEREOMIC) {
+                       cmd_gain[0] = INPUT_STEREO_MIC | OUTPUT_AP | GAIN_MODE;
+                       cmd_path[0] = INPUT_STEREO_MIC | OUTPUT_AP;
                } else {
-                       control->ear_auto = AVSYS_AUDIO_EAR_SWITCH_AUTO_WITHOUT_MUTE;
-                       if (control->option.capture & AVSYS_AUDIO_PATH_OPTION_USE_SUBMIC) {
-                               control->gain_status.capture = GS_SUBMIC_TO_AP;
-                               control->path_status.capture = PS_SUBMIC_TO_AP;
-                               cmd_gain[0] = INPUT_SUB_MIC | OUTPUT_AP | GAIN_MODE;
-                               cmd_path[0] = INPUT_SUB_MIC | OUTPUT_AP;
-                       } else if (control->option.capture & AVSYS_AUDIO_PATH_OPTION_USE_STEREOMIC) {
-                               control->gain_status.capture = GS_STEREOMIC_TO_AP;
-                               control->path_status.capture = PS_STEREOMIC_TO_AP;
-                               cmd_gain[0] = INPUT_STEREO_MIC | OUTPUT_AP | GAIN_MODE;
-                               cmd_path[0] = INPUT_STEREO_MIC | OUTPUT_AP;
-                       } else {
-                               control->gain_status.capture = GS_MAINMIC_TO_AP;
-                               control->path_status.capture = PS_MAINMIC_TO_AP;
-                               cmd_gain[0] = INPUT_MAIN_MIC | OUTPUT_AP | GAIN_MODE;
-                               cmd_path[0] = INPUT_MAIN_MIC | OUTPUT_AP;
-                       }
+                       cmd_gain[0] = INPUT_MAIN_MIC | OUTPUT_AP | GAIN_MODE;
+                       cmd_path[0] = INPUT_MAIN_MIC | OUTPUT_AP;
                }
                break;
 
        case AVSYS_AUDIO_PATH_EX_HEADSETMIC:
-               control->ear_auto = AVSYS_AUDIO_EAR_SWITCH_MANUAL;
-               control->gain_status.capture = GS_EARMIC_TO_AP;
-               control->path_status.capture = PS_EARMIC_TO_AP;
                cmd_gain[0] = INPUT_EAR_MIC | OUTPUT_AP | GAIN_MODE;
                cmd_path[0] = INPUT_EAR_MIC | OUTPUT_AP;
                break;
@@ -2096,12 +1774,8 @@ static int __avsys_audio_path_set_ascn_ap_capture(avsys_audio_path_ex_info_t *co
                break;
        }
 
-       if ((control->p_path_status.capture != control->path_status.capture) || control->gain_debug_mode == 1) {
-               RET_IO_CTL_ERR_IF_FAIL(avsys_audio_ascn_bulk_set(cmd_gain, 2, ASCN_RESET_CAPTURE))
-               control->p_gain_status.capture = control->gain_status.capture;
-               RET_IO_CTL_ERR_IF_FAIL(avsys_audio_ascn_bulk_set(cmd_path, 2, ASCN_RESET_NONE))
-               control->p_path_status.capture = control->path_status.capture;
-       }
+       RET_IO_CTL_ERR_IF_FAIL(avsys_audio_ascn_bulk_set(cmd_gain, 2, ASCN_RESET_CAPTURE))
+       RET_IO_CTL_ERR_IF_FAIL(avsys_audio_ascn_bulk_set(cmd_path, 2, ASCN_RESET_NONE))
 
        avsys_info (AVAUDIO, ">> leave");
 
@@ -2149,11 +1823,6 @@ static int __avsys_audio_path_set_hw_controls(avsys_audio_path_ex_info_t *contro
                                }
                                ptr->path_off = 0;
                                out_device = control->lvol_dev_type;
-                               if (control->path_status.playback == PS_PATH_NONE) {
-                                       ptr->path_off = 1;
-                                       avsys_warning(AVAUDIO, "Path off status...set logical volume device type to speaker\n");
-                                       out_device = AVSYS_AUDIO_LVOL_DEV_TYPE_SPK;
-                               }
                                avsys_audio_logical_volume_update_table(out_device, &ptr->gain_setting);
                                avsys_audio_logical_volume_convert(&ptr->setting_vol, &ptr->working_vol, &ptr->gain_setting);
                        }
@@ -2204,11 +1873,6 @@ int avsys_audio_path_set_volume(int handle)
 
        gain_type = ptr->gain_setting.vol_type;
        out_device = control->lvol_dev_type;
-       if (control->path_status.playback == PS_PATH_NONE) {
-               ptr->path_off = 1;
-               avsys_warning(AVAUDIO, "Path off status...set logical volume device type to speaker\n");
-               out_device = AVSYS_AUDIO_LVOL_DEV_TYPE_SPK;
-       }
        avsys_assert(AVSYS_SUCCESS(avsys_audio_unlock_sync(AVSYS_AUDIO_SYNC_IDEN_PATH)));
        avsys_warning(AVAUDIO, "set path volume  : gain(%d), out_dev(%d)\n", gain_type, out_device);
        err = avsys_audio_logical_volume_set_table(gain_type, out_device, &ptr->gain_setting);
@@ -2218,66 +1882,14 @@ int avsys_audio_path_set_volume(int handle)
 
 int avsys_audio_path_set_route_policy(avsys_audio_route_policy_t route)
 {
-       avsys_audio_path_ex_info_t *control = NULL;
-       avsys_audio_path_ex_info_t **temp = NULL;
-       int err = AVSYS_STATE_SUCCESS;
-
-       temp = &control;
-       avsys_assert(AVSYS_SUCCESS(avsys_audio_get_shm(AVSYS_AUDIO_SHM_IDEN_PATH, (void **)temp)));
-       avsys_assert(control != NULL);
-       avsys_assert(AVSYS_SUCCESS(avsys_audio_lock_sync(AVSYS_AUDIO_SYNC_IDEN_PATH)));
-
-       control->route_policy = route;
-
-       avsys_assert(AVSYS_SUCCESS(avsys_audio_unlock_sync(AVSYS_AUDIO_SYNC_IDEN_PATH)));
-       return err;
+       /* Deprecated */
+       return 0;
 }
 
 int avsys_audio_path_get_route_policy(avsys_audio_route_policy_t *route)
 {
-       avsys_audio_path_ex_info_t *control = NULL;
-       avsys_audio_path_ex_info_t **temp = NULL;
-       int err = AVSYS_STATE_SUCCESS;
-
-       if (!route)
-               return AVSYS_STATE_ERR_INVALID_PARAMETER;
-
-       temp = &control;
-       avsys_assert(AVSYS_SUCCESS(avsys_audio_get_shm(AVSYS_AUDIO_SHM_IDEN_PATH, (void **)temp)));
-       avsys_assert(control != NULL);
-       avsys_assert(AVSYS_SUCCESS(avsys_audio_lock_sync(AVSYS_AUDIO_SYNC_IDEN_PATH)));
-
-       *route = control->route_policy;
-
-       avsys_assert(AVSYS_SUCCESS(avsys_audio_unlock_sync(AVSYS_AUDIO_SYNC_IDEN_PATH)));
-       return err;
-}
-
-int avsys_audio_path_check_loud(bool *loud)
-{
-       avsys_audio_path_ex_info_t *control = NULL;
-       avsys_audio_path_ex_info_t **temp = NULL;
-       int err = AVSYS_STATE_SUCCESS;
-
-       if (!loud)
-               return AVSYS_STATE_ERR_INVALID_PARAMETER;
-
-       temp = &control;
-       avsys_assert(AVSYS_SUCCESS(avsys_audio_get_shm(AVSYS_AUDIO_SHM_IDEN_PATH, (void **)temp)));
-       avsys_assert(control != NULL);
-       avsys_assert(AVSYS_SUCCESS(avsys_audio_lock_sync(AVSYS_AUDIO_SYNC_IDEN_PATH)));
-
-       if ((control->path_status.playback & PS_AP_TO_SPK) ||
-               (control->path_status.playback & PS_AP_TO_RECV) ||
-               (control->path_status.playback & PS_FMRADIO_TO_SPK)) {
-               *loud = true;
-       } else {
-               avsys_info(AVAUDIO, "playback path status 0x%x\n", control->path_status.playback);
-               *loud = false;
-       }
-
-       avsys_assert(AVSYS_SUCCESS(avsys_audio_unlock_sync(AVSYS_AUDIO_SYNC_IDEN_PATH)));
-       return err;
+       /* Deprecated */
+       return 0;
 }
 
 int avsys_audio_path_check_cp_audio(bool *cpaudio, bool *btpath)
index dac16db..f0db338 100644 (file)
@@ -35,8 +35,6 @@
 static avsys_sync_param_t g_presettings[AVSYS_AUDIO_SYNC_IDEN_CNT] = {
        {"audio_handle_lock", AVSYS_KEY_PREFIX_GEN(AVSYS_KEY_PREFIX_AUDIO, AVSYS_AUDIO_SYNC_IDEN_HANDLE)},
        {"audio_path_lock", AVSYS_KEY_PREFIX_GEN(AVSYS_KEY_PREFIX_AUDIO, AVSYS_AUDIO_SYNC_IDEN_PATH)},
-       {"audio_route_policy_lock", AVSYS_KEY_PREFIX_GEN(AVSYS_KEY_PREFIX_AUDIO, AVSYS_AUDIO_SYNC_IDEN_SOUNDPATH)},
-       {"av_volume_sem", AVSYS_KEY_PREFIX_GEN(AVSYS_KEY_PREFIX_AUDIO, AVSYS_AUDIO_SYNC_IDEN_VOLUME)},
 };
 
 int avsys_audio_create_sync(const avsys_audio_sync_iden_t iden)
index 8ce7538..083190a 100644 (file)
@@ -68,9 +68,21 @@ void __fini_module(void);
        }       \
 } while (0)
 
+#define AVSYS_STREAM_LOCK() do {       \
+       pthread_mutex_lock(&gmutex);\
+       avsys_info(AVAUDIO, "(+) LOCKED\n");    \
+} while (0)
+
+#define AVSYS_STREAM_UNLOCK() do {     \
+       pthread_mutex_unlock(&gmutex);\
+       avsys_info(AVAUDIO, "(-) UNLOCKED\n");  \
+} while (0)
+
 /**
  * Internal global variable
  */
+static pthread_mutex_t gmutex = PTHREAD_MUTEX_INITIALIZER;
+
 
 /****************************************************************************
  *
@@ -103,6 +115,8 @@ int avsys_audio_open(avsys_audio_param_t *param, avsys_handle_t *phandle, int *s
                return AVSYS_STATE_ERR_INVALID_FORMAT;
        }
 
+       AVSYS_STREAM_LOCK();
+
        err = avsys_audio_handle_rejuvenation();
        if (AVSYS_FAIL(err)) {
                avsys_error(AVAUDIO, "Unused handle cleanup before handle allocation failed in %s\n", __func__);
@@ -151,14 +165,14 @@ int avsys_audio_open(avsys_audio_param_t *param, avsys_handle_t *phandle, int *s
                if (AVSYS_FAIL(err)) {
                        goto error;
                }
-               err = avsys_audio_handle_update_priority(handle, param->priority, param->bluetooth, AVSYS_AUDIO_SET_PRIORITY);
+               err = avsys_audio_handle_update_priority(handle, param->priority, param->handle_route, AVSYS_AUDIO_SET_PRIORITY);
                if (AVSYS_FAIL(err)) {
                        goto error;
                }
        }
 
        /* open device */
-       err = avsys_audio_pasimple_open_device(p->mode, p->format, p->channels, p->samplerate, p, param->bluetooth);
+       err = avsys_audio_pasimple_open_device(p->mode, p->format, p->channels, p->samplerate, p, param->handle_route);
        if (AVSYS_FAIL(err)) {
                goto error;
        }
@@ -187,7 +201,7 @@ int avsys_audio_open(avsys_audio_param_t *param, avsys_handle_t *phandle, int *s
        if (AVSYS_FAIL(err)) {
                goto error;
        }
-
+       AVSYS_STREAM_UNLOCK();
        return AVSYS_STATE_SUCCESS;
 
 error:
@@ -204,7 +218,7 @@ error:
        avsys_error(AVAUDIO, "failed to open : RESION %x\n", err);
 
        *phandle = (avsys_handle_t)-1;
-
+       AVSYS_STREAM_UNLOCK();
        return err;
 }
 
@@ -216,9 +230,14 @@ int avsys_audio_close(avsys_handle_t handle)
        bool cp_audio = false;
        bool bt_path = false;
 
+       AVSYS_STREAM_LOCK();
        avsys_info(AVAUDIO, "%s, handle=[%d]\n", __func__, (int)handle);
 
-       AVSYS_GET_HANDLE_PTR(HANDLE_PTR_MODE_NORMAL);
+       err = avsys_audio_handle_get_ptr((int)handle, &p, HANDLE_PTR_MODE_NORMAL);
+       if (AVSYS_FAIL(err)) {
+               AVSYS_STREAM_UNLOCK();
+               return err;
+       }
 
        if (AVSYS_FAIL(avsys_audio_handle_update_priority((int)handle, p->priority, AVSYS_AUDIO_HANDLE_ROUTE_FOLLOWING_POLICY, AVSYS_AUDIO_UNSET_PRIORITY))) {
                avsys_error(AVAUDIO, "unset priority of handle %d error: %x\n", handle, err);
@@ -238,10 +257,16 @@ int avsys_audio_close(avsys_handle_t handle)
                avsys_audio_path_set_single_ascn("cp_to_bt");
        }
 
-       AVSYS_RELEASE_HANDLE_PTR(HANDLE_PTR_MODE_NORMAL);
+       if (AVSYS_FAIL(avsys_audio_handle_release_ptr((int)handle, HANDLE_PTR_MODE_NORMAL))) {
+               avsys_error(AVAUDIO, "audio handle release failed\n");
+               AVSYS_STREAM_UNLOCK();
+               return AVSYS_STATE_ERR_INTERNAL;
+       }
 
        avsys_audio_handle_free((int)handle);
 
+       AVSYS_STREAM_UNLOCK();
+
        return err;
 }
 
@@ -640,7 +665,7 @@ static int __avsys_audio_set_info(avsys_audio_handle_t *p, avsys_audio_param_t *
        avsys_info(AVAUDIO, " format     = %d (0: 8bits, 1:16bits, 2:32bits)\n", param->format);
        avsys_info(AVAUDIO, " channel    = %d\n", param->channels);
        avsys_info(AVAUDIO, " samplerate = %d\n", param->samplerate);
-       avsys_info(AVAUDIO, " route      = %d (0: default, 1: handset)\n", param->bluetooth);
+       avsys_info(AVAUDIO, " route      = %d (0: default, 1: handset)\n", param->handle_route);
        avsys_info(AVAUDIO, " Vol type   = %d\n", param->vol_type);
        avsys_info(AVAUDIO, "=============================================\n");
 
@@ -692,6 +717,12 @@ int avsys_audio_earjack_manager_deinit(int waitfd)
 }
 
 EXPORT_API
+int avsys_audio_earjack_manager_get_type(void)
+{
+       return avsys_audio_path_earjack_get_type();
+}
+
+EXPORT_API
 int avsys_audio_earjack_manager_unlock(void)
 {
        return avsys_audio_path_earjack_unlock();
@@ -700,15 +731,15 @@ int avsys_audio_earjack_manager_unlock(void)
 EXPORT_API
 int avsys_audio_set_route_policy(avsys_audio_route_policy_t route)
 {
-       return avsys_audio_path_set_route_policy(route);
+       /* Deprecated */
+       return 0;
 }
 
 EXPORT_API
 int avsys_audio_get_route_policy(avsys_audio_route_policy_t *route)
 {
-       if (route == NULL)
-               return AVSYS_STATE_ERR_NULL_POINTER;
-       return avsys_audio_path_get_route_policy(route);
+       /* Deprecated */
+       return 0;
 }
 
 EXPORT_API
@@ -856,38 +887,42 @@ int avsys_audio_get_period_buffer_time(avsys_handle_t handle, unsigned int *peri
 }
 
 EXPORT_API
-int avsys_audio_get_playing_device_info(avsys_audio_playing_devcie_t *dev)
+int avsys_audio_cork (avsys_handle_t handle, int cork)
 {
        int err = AVSYS_STATE_SUCCESS;
-       int sink_info = 0;
-       bool alsa_loud = false;
+       avsys_audio_handle_t *p = NULL;
 
-       if (!dev)
-               return AVSYS_STATE_ERR_INVALID_PARAMETER;
+       AVSYS_GET_HANDLE_PTR(HANDLE_PTR_MODE_NORMAL);
 
-       err = avsys_audio_pa_ctrl_get_default_sink(&sink_info);
-       if (AVSYS_FAIL(err))
-               return err;
+       err = avsys_audio_pasimple_cork(p, cork);
+       if(AVSYS_FAIL(err)) {
+               avsys_error(AVAUDIO, "avsys_audio_pasimple_cork() failed, 0x%X\n",err);
+       }
 
-       switch (sink_info) {
-       case AVSYS_AUDIO_PA_CTL_SINK_UNKNOWN:
-               avsys_error_r(AVAUDIO, "Unexpected sink information\n");
-               err = AVSYS_STATE_ERR_UNAVAILABLE_DEVICE;
-               break;
-       case AVSYS_AUDIO_PA_CTL_SINK_ALSA:
-               err = avsys_audio_path_check_loud(&alsa_loud);
-               if (AVSYS_FAIL(err))
-                       break;
-               if (alsa_loud == true)
-                       *dev = AVSYS_AUDIO_ROUTE_DEVICE_HANDSET;
-               else
-                       *dev = AVSYS_AUDIO_ROUTE_DEVICE_EARPHONE;
-               break;
-       case AVSYS_AUDIO_PA_CTL_SINK_BLUEZ:
-               *dev = AVSYS_AUDIO_ROUTE_DEVICE_BLUETOOTH;
-               break;
+       AVSYS_RELEASE_HANDLE_PTR(HANDLE_PTR_MODE_NORMAL);
+
+       return err;
+}
+
+EXPORT_API
+int avsys_audio_is_corked (avsys_handle_t handle, int *is_corked)
+{
+       int err = AVSYS_STATE_SUCCESS;
+       avsys_audio_handle_t *p = NULL;
+
+       if (is_corked == NULL) {
+               return AVSYS_STATE_ERR_NULL_POINTER;
+       }
+
+       AVSYS_GET_HANDLE_PTR(HANDLE_PTR_MODE_NORMAL);
+
+       err = avsys_audio_pasimple_is_corked(p, is_corked);
+       if(AVSYS_FAIL(err)) {
+               avsys_error(AVAUDIO, "avsys_audio_pasimple_cork() failed, 0x%X\n",err);
        }
 
+       AVSYS_RELEASE_HANDLE_PTR(HANDLE_PTR_MODE_NORMAL);
+
        return err;
 }
 
index cd205b4..0b681de 100644 (file)
@@ -71,6 +71,10 @@ PKG_CHECK_MODULES(ASCN, libascenario)
 AC_SUBST(ASCN_CFLAGS)
 AC_SUBST(ASCN_LIBS)
 
+PKG_CHECK_MODULES(INIPARSER, iniparser)
+AC_SUBST(INIPARSER_CFLAGS)
+AC_SUBST(INIPARSER_LIBS)
+
 # Checks for header files.
 AC_HEADER_STDC
 AC_CHECK_HEADERS([fcntl.h memory.h stdlib.h string.h sys/time.h unistd.h errno.h sys/types.h sys/stat.h])
index 27b1d9c..0975d24 100644 (file)
-avsystem (0.4.13-4) unstable; urgency=low
+avsystem (0.5.0-8) unstable; urgency=low
 
-  * ringtone type volume adjustment for emualtor
+  * Fix mute problem when boot up if earphone inserted
   * Git: slp/pkgs/a/avsystem
-  * Tag: avsystem_0.4.13-4
+  * Tag: avsystem_0.5.0-7
 
- -- Seungbae Shin <seungbae.shin@samsung.com>  Thu, 19 Apr 2012 18:00:03 +0900
+ -- Hyunseok Lee <hs7388.lee@samsung.com>  Thu, 05 Jul 2012 12:44:35 +0900
 
-avsystem (0.4.13-3) unstable; urgency=low
+avsystem (0.5.0-7) unstable; urgency=low
 
-  * system/notification type volume adjustment for emulator
+  * Fix AIF close control for certain case
   * Git: slp/pkgs/a/avsystem
-  * Tag: avsystem_0.4.13-3
+  * Tag: avsystem_0.5.0-7
 
- -- Seungbae Shin <seungbae.shin@samsung.com>  Wed, 04 Apr 2012 14:53:30 +0900
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Sun, 17 Jun 2012 18:47:04 +0900
 
-avsystem (0.4.13-2) unstable; urgency=low
+avsystem (0.5.0-6) unstable; urgency=low
 
-  * volume adjustment for emulator
+  * Fix earmic path setting when earphone with mic is inserted in media session
   * Git: slp/pkgs/a/avsystem
-  * Tag: avsystem_0.4.13-2
+  * Tag: avsystem_0.5.0-6
 
- -- Seungbae Shin <seungbae.shin@samsung.com>  Tue, 03 Apr 2012 14:29:06 +0900
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Thu, 31 May 2012 22:07:13 +0900
+
+avsystem (0.5.0-5) unstable; urgency=low
+
+  * Change earjack event path from /dev/eventN to /dev/input/eventN
+  * Git: slp/pkgs/a/avsystem
+  * Tag: avsystem_0.5.0-5
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Wed, 30 May 2012 13:22:27 +0900
+
+avsystem (0.5.0-4) unstable; urgency=low
+
+  * Fix wrong pointer access
+  * Git: slp/pkgs/a/avsystem
+  * Tag: avsystem_0.5.0-4
+
+ -- Hyunseok Lee <hs7388.lee@samsung.com>  Thu, 17 May 2012 11:27:56 +0900
+
+avsystem (0.5.0-3) unstable; urgency=low
+
+  * Fix primary volume reset when set process doen't exists
+  * Git: slp/pkgs/a/avsystem
+  * Tag: avsystem_0.5.0-3
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Fri, 11 May 2012 18:07:47 +0900
+
+avsystem (0.5.0-2) unstable; urgency=low
+
+  * Separate AIF control routine
+  * Git: slp/pkgs/a/avsystem
+  * Tag: avsystem_0.5.0-2
+
+ -- Hyunseok Lee <hs7388.lee@samsung.com>  Mon, 07 May 2012 17:17:25 +0900
+
+avsystem (0.5.0-1) unstable; urgency=low
+
+  * Remove duplicated path setting when earjack plug/unplug
+  * Git: slp/pkgs/a/avsystem
+  * Tag: avsystem_0.5.0-1
+
+ -- Hyunseok Lee <hs7388.lee@samsung.com>  Fri, 27 Apr 2012 12:02:58 +0900
+
+avsystem (0.5.0-0) unstable; urgency=low
+
+  * [AudioRoute] cleanup unused/not supported variables
+  * Git: slp/pkgs/a/avsystem
+  * Tag: avsystem_0.5.0-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Mon, 23 Apr 2012 19:48:11 +0900
+
+avsystem (0.4.17-0) unstable; urgency=low
+
+  * change booting priority script (S30->S15)
+  * Git: slp/pkgs/a/avsystem
+  * Tag: avsystem_0.4.17-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Mon, 16 Apr 2012 12:02:33 +0900
+
+avsystem (0.4.16-0) unstable; urgency=low
+
+  * Check card name when set ALSA scenario
+  * Git: slp/pkgs/a/avsystem
+  * Tag: avsystem_0.4.16-0
+
+ -- Seongho Jeong <sh33.jeong@samsung.com>  Thu, 05 Apr 2012 16:41:12 +0900
+
+avsystem (0.4.15-1) unstable; urgency=low
+
+  * sync with obs
+  * Git: slp/pkgs/a/avsystem
+  * Tag: avsystem_0.4.15-1
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Sun, 25 Mar 2012 15:13:30 +0900
+
+avsystem (0.4.15-0) unstable; urgency=low
+
+  * Update packaging/avsystem.spec
+  * Git: slp/pkgs/a/avsystem
+  * Tag: avsystem_0.4.15-0
+
+ -- Seongho Jeong <sh33.jeong@samsung.com>  Mon, 12 Mar 2012 20:23:25 +0900
+
+avsystem (0.4.14-0) unstable; urgency=low
+
+  * remove unused volume semaphore
+  * enable test suites
+  * Git: slp/pkgs/a/avsystem
+  * Tag: avsystem_0.4.14-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Fri, 17 Feb 2012 15:17:33 +0900
 
 avsystem (0.4.13-1) unstable; urgency=low
 
-  * Initial release
+  * Disable OPEN_AIF_BEFORE_SCENARIO_SET
   * Git: slp/pkgs/a/avsystem
   * Tag: avsystem_0.4.13-1
 
  -- Hyunseok Lee <hs7388.lee@samsung.com>  Wed, 08 Feb 2012 09:56:41 +0900
+
+avsystem (0.4.13-0) unstable; urgency=low
+
+  * Set CP AIF param from asound.conf
+  * Git: slp/pkgs/a/avsystem
+  * Tag: avsystem_0.4.13-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Fri, 03 Feb 2012 12:43:37 +0900
+
+avsystem (0.4.12-0) unstable; urgency=low
+
+  * Code cleanup
+  * Git: slp/pkgs/a/avsystem
+  * Tag: avsystem_0.4.12-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Tue, 31 Jan 2012 13:54:54 +0900
+
+avsystem (0.4.11-0) unstable; urgency=low
+
+  * change shm path from "/" to "/tmp" (requested by bada)
+  * Git: slp/pkgs/a/avsystem
+  * Tag: avsystem_0.4.11-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Mon, 30 Jan 2012 14:52:34 +0900
+
+avsystem (0.4.10-0) unstable; urgency=low
+
+  * fix fade in/out
+  * Git: slp/pkgs/a/avsystem
+  * Tag: avsystem_0.4.10-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Tue, 10 Jan 2012 21:01:01 +0900
+
+avsystem (0.4.9-0) unstable; urgency=low
+
+  * Removed unused code in sound path setting
+  * Git: slp/pkgs/a/avsystem
+  * Tag: avsystem_0.4.9-0
+
+ -- Seongho Jeong <sh33.jeong@samsung.com>  Fri, 06 Jan 2012 13:25:31 +0900
+
+avsystem (0.4.8-0) unstable; urgency=low
+
+  * Fix check loud for fmradio case
+  * Git: slp/pkgs/a/avsystem
+  * Tag: avsystem_0.4.8-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Tue, 20 Dec 2011 20:24:41 +0900
+
+avsystem (0.4.7-1) unstable; urgency=low
+
+  * Recover some deleted codes & Remove avsys-cam related codes
+  * Git: slp/pkgs/a/avsystem
+  * Tag: avsystem_0.4.7-1
+
+ -- Hyunseok Lee <hs7388.lee@samsung.com>  Fri, 16 Dec 2011 19:28:54 +0900
+
+avsystem (0.4.6-2) unstable; urgency=low
+
+  * Code clean up
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.4.6-2
+
+ -- Hyunseok Lee <hs7388.lee@samsung.com>  Tue, 06 Dec 2011 21:33:31 +0900
+
+avsystem (0.4.6-1) unstable; urgency=low
+
+  * Modified to mix FM radio stream with other audio streams.
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.4.6-1
+
+ -- Hyunseok Lee <hs7388.lee@samsung.com>  Fri, 11 Nov 2011 15:32:11 +0900
+
+avsystem (0.4.6-0) unstable; urgency=low
+
+  * open AIF before scenario set
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.4.6-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Mon, 07 Nov 2011 14:42:49 +0900
+
+avsystem (0.4.5-0) unstable; urgency=low
+
+  * 1. Set max handle as 64
+  * 2. change allocated size from 'int' to 'long long int'
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.4.5-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Fri, 21 Oct 2011 13:31:42 +0900
+
+avsystem (0.4.4-0) unstable; urgency=low
+
+  * Implement virtual sink routing feature
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.4.4-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Thu, 20 Oct 2011 13:32:50 +0900
+
+avsystem (0.4.3-0) unstable; urgency=low
+
+  * Change max handle (16->256)
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.4.3-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Mon, 10 Oct 2011 13:50:09 +0900
+
+avsystem (0.4.2-1) unstable; urgency=low
+
+  * [camera] Fix prevent bug
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.4.2-1
+
+ -- Jeongmo Yang <jm80.yang@samsung.com>  Mon, 10 Oct 2011 13:21:48 +0900
+
+avsystem (0.4.2-0) unstable; urgency=low
+
+  * 1. Fix to set auto earjack when voicecall with bt
+  * 2. Refine comments
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.4.2-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Fri, 07 Oct 2011 16:32:53 +0900
+
+avsystem (0.4.1-1) unstable; urgency=low
+
+  * Reupload for build break
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.4.1-1
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Thu, 22 Sep 2011 12:06:45 +0900
+
+avsystem (0.4.1-0) unstable; urgency=low
+
+  * Enhance debug dump
+  * Check value of jevent
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.4.1-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Thu, 22 Sep 2011 11:43:16 +0900
+
+avsystem (0.4.0-0) unstable; urgency=low
+
+  * Fix earphone control
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.4.0-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Thu, 15 Sep 2011 13:32:33 +0900
+
+avsystem (0.3.50-2) unstable; urgency=low
+
+  * Fix for prevent
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.50-2
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Mon, 22 Aug 2011 15:40:21 +0900
+
+avsystem (0.3.50-1) unstable; urgency=low
+
+  * Code cleanup
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.50-1
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Wed, 13 Jul 2011 19:41:23 +0900
+
+avsystem (0.3.50-0) unstable; urgency=low
+
+  * change vol max (system, noti, ringtone)
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.50-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Tue, 05 Jul 2011 15:31:25 +0900
+
+avsystem (0.3.49-0) unstable; urgency=low
+
+  * [camera] Remove unnecessary code
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.49-0
+
+ -- Jeongmo Yang <jm80.yang@samsung.com>  Tue, 21 Jun 2011 17:33:42 +0900
+
+avsystem (0.3.48-0) unstable; urgency=low
+
+  * fix videocall spkout
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.48-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Fri, 10 Jun 2011 10:55:11 +0900
+
+avsystem (0.3.47-0) unstable; urgency=low
+
+  * [camera] Add screennail get method
+  * [camera] Fix prevent bug
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.47-0
+
+ -- Jeongmo Yang <jm80.yang@samsung.com>  Wed, 08 Jun 2011 18:31:25 +0900
+
+avsystem (0.3.46-0) unstable; urgency=low
+
+  * fix sound transition when bt
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.46-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Thu, 02 Jun 2011 20:15:54 +0900
+
+avsystem (0.3.45-0) unstable; urgency=low
+
+  * add bt_to_cp_gain call
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.45-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Fri, 27 May 2011 11:23:44 +0900
+
+avsystem (0.3.44-0) unstable; urgency=low
+
+  * gain fix
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.44-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Fri, 20 May 2011 16:13:47 +0900
+
+avsystem (0.3.43-1) unstable; urgency=low
+
+  * Remove PLATFORM_INIT macro in configure.ac
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.43-1
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Thu, 19 May 2011 16:26:24 +0900
+
+avsystem (0.3.43-0) unstable; urgency=low
+
+  * open AIF3 when callalert case
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.43-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Wed, 18 May 2011 11:10:20 +0900
+
+avsystem (0.3.42-3) unstable; urgency=low
+
+  * update volume table load from file
+  * add volume table dump utility
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.42-3 
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Wed, 13 Apr 2011 11:45:25 +0900
+
+avsystem (0.3.42-2) unstable; urgency=low
+
+  * update cp related sound path code
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.42-2
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Thu, 07 Apr 2011 16:30:52 +0900
+
+avsystem (0.3.42-1) unstable; urgency=low
+
+  * remove unnecessary audio headers from dev package
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.42-1
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Tue, 22 Mar 2011 10:59:34 +0900
+
+avsystem (0.3.42-0) unstable; urgency=low
+
+  * [camera] Remove deprecated API
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.42-0
+
+ -- Jeongmo Yang <jm80.yang@samsung.com>  Mon, 21 Mar 2011 14:34:36 +0900
+
+avsystem (0.3.41-0) unstable; urgency=low
+
+  * Fix prevent bug
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.41-0
+
+ -- Wonhyung Cho <wh01.cho@samsung.com>  Mon, 14 Mar 2011 11:06:58 +0900
+
+avsystem (0.3.40-1) unstable; urgency=low
+
+  * include avsys-audio-ascenario.h in i386-dev package
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.40-1
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Thu, 10 Mar 2011 19:12:48 +0900
+
+avsystem (0.3.40-0) unstable; urgency=low
+
+  * Add continuous shot features
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.40-0
+
+ -- Wonhyung Cho <wh01.cho@samsung.com>  Wed, 09 Mar 2011 18:36:17 +0900
+
+avsystem (0.3.39-1) unstable; urgency=low
+
+  * fix path release code
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.39-1
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Wed, 23 Feb 2011 16:54:53 +0900
+
+avsystem (0.3.39-0) unstable; urgency=low
+
+  * Make a policy to protect conflict dual camera open
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.39-0
+
+ -- Wonhyung Cho <wh01.cho@samsung.com>  Tue, 22 Feb 2011 17:02:25 +0900
+
+avsystem (0.3.38-1) unstable; urgency=low
+
+  * change AIF2 parameter setting from S16_LE to S16_BE
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.38-1
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Mon, 21 Feb 2011 17:33:18 +0900
+
+avsystem (0.3.38-0) unstable; urgency=low
+
+  * remove signal handler in libavsysaudio.so
+  * remove amp management code
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.38-0
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Wed, 16 Feb 2011 15:53:40 +0900
+
+avsystem (0.3.37-2) unstable; urgency=low
+
+  * reduce pulseaudio buffer time for high latency playback
+  * set umask of sound_initializer only when initial mode
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.37-2
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Wed, 09 Feb 2011 09:53:10 +0900
+
+avsystem (0.3.37-1) unstable; urgency=low
+
+  * reduce high lantecy playback buffertime
+  * set umask(0) only when initialize time
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.37-1
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Tue, 08 Feb 2011 14:11:16 +0900
+
+avsystem (0.3.37-0) unstable; urgency=low
+
+  * set umask(0) when sound_initializer start and set old value when exit
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.37-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Wed, 02 Feb 2011 13:01:41 +0900
+
+avsystem (0.3.36-0) unstable; urgency=low
+
+  * remove unncessary signal handler
+  * remove unncessary audio handle structure member
+  * prevent fix
+  * include cleanup
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.36-0
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Tue, 01 Feb 2011 14:28:59 +0900
+
+avsystem (0.3.35-0) unstable; urgency=low
+
+  * AIF2, AIF3 control update
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.35-0
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Tue, 25 Jan 2011 10:42:42 +0900
+
+avsystem (0.3.34-4) unstable; urgency=low
+
+  * remove unused regacy avsys_audio_path_ex_set_amp() function
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.34-4
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Fri, 14 Jan 2011 19:01:40 +0900
+
+avsystem (0.3.34-3) unstable; urgency=low
+
+  * check return of pa_simple_new_proplist()
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.34-3
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Tue, 11 Jan 2011 14:38:24 +0900
+
+avsystem (0.3.34-2) unstable; urgency=low
+
+  * don't reset rec path during fmradio
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.34-2 
+
+ -- Jisung Ahn <jcastle.ahn@samsung.com>  Fri, 07 Jan 2011 19:55:28 +0900
+
+avsystem (0.3.34-1) unstable; urgency=low
+
+  * fix version
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.34-1
+
+ -- Jisung Ahn <jcastle.ahn@samsung.com>  Thu, 06 Jan 2011 15:37:13 +0900
+
+avsystem (0.3.34-0) unstable; urgency=low
+
+  * update changelog
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.34-0
+
+ -- Jisung Ahn <jcastle.ahn@samsung.com>  Thu, 06 Jan 2011 15:24:52 +0900
+
+avsystem (0.3.33-0) unstable; urgency=low
+
+  * [camera] Do not queue buffer is already queued
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.33-0
+
+ -- Jeongmo Yang <jm80.yang@samsung.com>  Mon, 03 Jan 2011 19:25:15 +0900
+
+avsystem (0.3.32-0) unstable; urgency=low
+
+  * [camera] Add defensive code for JPEG thumbnail
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.32-0
+
+ -- Jeongmo Yang <jm80.yang@samsung.com>  Mon, 27 Dec 2010 19:29:11 +0900
+
+avsystem (0.3.31-1) unstable; urgency=low
+
+  * change method to get default pa sink information
+  * header update
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.31-1
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Mon, 27 Dec 2010 15:37:57 +0900
+
+avsystem (0.3.31-0) unstable; urgency=low
+
+  * audio priority update
+  * playing device information added
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.31-0
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Tue, 21 Dec 2010 15:25:59 +0900
+
+avsystem (0.3.30-0) unstable; urgency=low
+
+  * [camera] Update code for AF
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.30-0
+
+ -- Jeongmo Yang <jm80.yang@samsung.com>  Tue, 14 Dec 2010 22:29:31 +0900
+
+avsystem (0.3.29-3) unstable; urgency=low
+
+  * update buffer parameter
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.29-3
+
+ -- Kwanghui Cho <kwanghui.cho@samsung.com>  Tue, 14 Dec 2010 16:26:16 +0900
+
+avsystem (0.3.29-2) unstable; urgency=low
+
+  * volume table bug fix
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.29-2
+
+ -- Kwanghui Cho <kwanghui.cho@samsung.com>  Mon, 13 Dec 2010 10:53:44 +0900
+
+avsystem (0.3.29-1) unstable; urgency=low
+
+  * add changelog
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.29-1
+
+ -- Kwanghui Cho <kwanghui.cho@samsung.com>  Mon, 13 Dec 2010 10:47:45 +0900
+
+avsystem (0.3.29-0) unstable; urgency=low
+
+  * Change volume control method
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.29-0
+
+ -- Kwanghui Cho <kwanghui.cho@samsung.com>  Mon, 13 Dec 2010 08:44:54 +0900
+
+avsystem (0.3.28-5) unstable; urgency=low
+
+  * Fix debian clean error
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.28-5
+
+ -- Jeongmo Yang <jm80.yang@samsung.com>  Thu, 09 Dec 2010 17:11:10 +0900
+
+avsystem (0.3.28-4) unstable; urgency=low
+
+  * Remove device dependent name and code clean up
+  * Git: 165.213.180.234:slp/pkgs/a/avsystem
+  * Tag: avsystem_0.3.28-4
+
+ -- Jeongmo Yang <jm80.yang@samsung.com>  Wed, 08 Dec 2010 21:18:04 +0900
+
+avsystem (0.3.27-3) unstable; urgency=low
+
+  * Remove iniparser
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.27-3
+
+ -- Wonhyung Cho <wh01.cho@samsung.com>  Fri, 03 Dec 2010 17:41:14 +0900
+
+avsystem (0.3.27-2) unstable; urgency=low
+
+  * Remove iniparser dependancy from dev package
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.27-2
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Wed, 01 Dec 2010 12:37:04 +0900
+
+avsystem (0.3.27-1) unstable; urgency=low
+
+  * [audio] update buffer parameter
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.27-1
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Fri, 26 Nov 2010 15:40:43 +0900
+
+avsystem (0.3.27-0) unstable; urgency=low
+
+  * [audio] priority support
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.27-0
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Fri, 26 Nov 2010 09:11:30 +0900
+
+avsystem (0.3.26-0) unstable; urgency=low
+
+  * [audio] create audio policy lock
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.26-0 
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Thu, 25 Nov 2010 17:32:29 +0900
+
+avsystem (0.3.25-0) unstable; urgency=low
+
+  * [audio] fixed volume type added
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.25-0 
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Wed, 24 Nov 2010 13:46:58 +0900
+
+avsystem (0.3.24-4) unstable; urgency=low
+
+  * [audio] misc fix
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.24-4
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Tue, 23 Nov 2010 14:53:58 +0900
+
+avsystem (0.3.24-3) unstable; urgency=low
+
+  * [audio] apply 20msec clock for gstavsysaudiosrc
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.24-3
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Sat, 20 Nov 2010 10:24:15 +0900
+
+avsystem (0.3.24-2) unstable; urgency=low
+
+  * [audio] check primary volume pid before get current running type
+  * [common] add -fPIC, -Wl,--hash-style=both
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.24-2
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Thu, 18 Nov 2010 15:01:32 +0900
+
+avsystem (0.3.24-1) unstable; urgency=low
+
+  * [audio] avsys_audio_path_earjack_wait() function returns warning when earjack auto mode is MANUL
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.24-1
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Wed, 17 Nov 2010 11:13:51 +0900
+
+avsystem (0.3.24-0) unstable; urgency=low
+
+  * [audio] increase pa stream buffer size
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.24-0
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Fri, 12 Nov 2010 08:24:20 +0900
+
+avsystem (0.3.23-0) unstable; urgency=low
+
+  * [camera] Bug fix - sometimes can not start preview because of state change in AF start function
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.23-0
+
+ -- Jeongmo Yang <jm80.yang@samsung.com>  Thu, 11 Nov 2010 16:49:25 +0900
+
+avsystem (0.3.22-0) unstable; urgency=low
+
+  * [camera] Fix typo in avsys_cam_support_jpeg_encoding
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.22-0
+
+ -- Jeongmo Yang <jm80.yang@samsung.com>  Tue, 09 Nov 2010 21:24:18 +0900
+
+avsystem (0.3.21-0) unstable; urgency=low
+
+  * add avsys_cam_support_jpeg_encoding()
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.21-0
+
+ -- Wonhyung Cho <wh01.cho@samsung.com>  Mon, 08 Nov 2010 21:38:26 +0900
+
+avsystem (0.3.20-0) unstable; urgency=low
+
+  * Add rotation
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.20-0
+
+ -- Wonhyung Cho <wh01.cho@samsung.com>  Fri, 05 Nov 2010 21:21:35 +0900
+
+avsystem (0.3.19-0) unstable; urgency=low
+
+  * [camera] add BSD copyright to videodev2_samsung.h. And small changes
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.19-0
+
+ -- Wonhyung Cho <wh01.cho@samsung.com>  Fri, 05 Nov 2010 16:29:13 +0900
+
+avsystem (0.3.18-1) unstable; urgency=low
+
+  * [audio] semaphore creation mode change from 0600 to 0666
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.18-1
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Thu, 04 Nov 2010 12:11:29 +0900
+
+avsystem (0.3.18-0) unstable; urgency=low
+
+  * [audio] move audio_reset, audio_delay, audio_get_period_buffer_time function to avsys_audio.c
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.18-0
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Wed, 03 Nov 2010 11:20:08 +0900
+
+avsystem (0.3.17-0) unstable; urgency=low
+
+  * [camera] Bug fix - sometimes failed to start preview after capture because of AF stop command
+  * [debug] Add function name and line number to dlog
+  * [audio] remove unused
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.17-0
+
+ -- Jeongmo Yang <jm80.yang@samsung.com>  Mon, 01 Nov 2010 14:54:58 +0900
+
+avsystem (0.3.16-1) unstable; urgency=low
+
+  * Modify copyright
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.16-1
+
+ -- Wonhyung Cho <wh01.cho@samsung.com>  Thu, 28 Oct 2010 17:32:46 +0900
+
+avsystem (0.3.16-0) unstable; urgency=low
+
+  * [audio] Java/Android Volume set error fix
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.16-0
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Wed, 27 Oct 2010 13:45:14 +0900
+
+avsystem (0.3.15-1) unstable; urgency=low
+
+  * [audio] remove condition check before set sound path to dual out
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.15-1
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Mon, 25 Oct 2010 12:08:35 +0900
+
+avsystem (0.3.15-0) unstable; urgency=low
+
+  * [camera] Update code for touch AF
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.15-0
+
+ -- Jeongmo Yang <jm80.yang@samsung.com>  Thu, 21 Oct 2010 16:02:56 +0900
+
+avsystem (0.3.14-0) unstable; urgency=low
+
+  * [audio] add fadedown mute function
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.14-0
+
+ -- Kwanghui Cho <kwanghui.cho@samsung.com>  Thu, 21 Oct 2010 11:29:16 +0900
+
+avsystem (0.3.13-0) unstable; urgency=low
+
+  * [camera] Bug fix - I420 RAW image capture
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.13-0
+
+ -- Jeongmo Yang <jm80.yang@samsung.com>  Mon, 18 Oct 2010 21:36:04 +0900
+
+avsystem (0.3.12-2) unstable; urgency=low
+
+  * [audio] AVSYS_AUDIO_MODE_OUTPUT uses mid latency
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.12-2
+
+ -- Kwanghui Cho <kwanghui.cho@samsung.com>  Mon, 18 Oct 2010 17:49:18 +0900
+
+avsystem (0.3.12-1) unstable; urgency=low
+
+  * [audio] add rc4 script
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.12-1
+
+ -- Kwanghui Cho <kwanghui.cho@samsung.com>  Mon, 18 Oct 2010 15:12:55 +0900
+
+avsystem (0.3.12-0) unstable; urgency=low
+
+  * [audio] make capture latency mode
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.12-0
+
+ -- Kwanghui Cho <kwanghui.cho@samsung.com>  Mon, 18 Oct 2010 11:19:34 +0900
+
+avsystem (0.3.11-0) unstable; urgency=low
+
+  * [audio] remove unused resources
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.11-0
+
+ -- Kwanghui Cho <kwanghui.cho@samsung.com>  Fri, 15 Oct 2010 20:59:28 +0900
+
+avsystem (0.3.10-0) unstable; urgency=low
+
+  * Modify EXIF
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.10-0
+
+ -- Wonhyung Cho <wh01.cho@samsung.com>  Fri, 15 Oct 2010 19:35:46 +0900
+
+avsystem (0.3.9-0) unstable; urgency=low
+
+  * [camera] Fix bug - AF stop before capture start
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.9-0
+
+ -- Jeongmo Yang <jm80.yang@samsung.com>  Wed, 13 Oct 2010 16:08:17 +0900
+
+avsystem (0.3.8-0) unstable; urgency=low
+
+  * [camera] Add get af_status function and remove some unused code
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.8-0
+
+ -- Jeongmo Yang <jm80.yang@samsung.com>  Wed, 13 Oct 2010 14:54:49 +0900
+
+avsystem (0.3.7-0) unstable; urgency=low
+
+  * [camera] Modify JPEG max size
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.7-0
+
+ -- Jeongmo Yang <jm80.yang@samsung.com>  Mon, 11 Oct 2010 13:41:21 +0900
+
+avsystem (0.3.6-0) unstable; urgency=low
+
+  * [camera] Support JPEG thumbnail
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.6-0
+
+ -- Jeongmo Yang <jm80.yang@samsung.com>  Mon, 11 Oct 2010 12:13:19 +0900
+
+avsystem (0.3.5-1) unstable; urgency=low
+
+  * [audio] change abort to errro return when audio handle close failure
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.5-1
+
+ -- Kwanghui Cho <kwanghui.cho@samsung.com>  Mon, 11 Oct 2010 10:31:56 +0900
+
+avsystem (0.3.5-0) unstable; urgency=low
+
+  * [camera] Support 8M JPEG capture and high speed recording with H2 SDK target
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.5-0
+
+ -- Jeongmo Yang <jm80.yang@samsung.com>  Fri, 08 Oct 2010 21:52:33 +0900
+
+avsystem (0.3.4-0) unstable; urgency=low
+
+  * [camera] Update code for touch AF and exif
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.4-0
+
+ -- Jeongmo Yang <jm80.yang@samsung.com>  Thu, 07 Oct 2010 20:16:33 +0900
+
+avsystem (0.3.3-1) unstable; urgency=low
+
+  * [audio] change value of period & buffer time for gstavsysaudiosink
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.3-1
+
+ -- Kwanghui Cho <kwanghui.cho@samsung.com>  Thu, 07 Oct 2010 12:14:37 +0900
+
+avsystem (0.3.3-0) unstable; urgency=low
+
+  * [camera] Update code for touch AF and strobe control
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.3-0
+
+ -- Jeongmo Yang <jm80.yang@samsung.com>  Wed, 06 Oct 2010 17:06:27 +0900
+
+avsystem (0.3.2-0) unstable; urgency=low
+
+  * Add Jpeg interleaved capture code(ZSL releated) with disabled featuring
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.2-0
+
+ -- Wonhyung Cho <wh01.cho@samsung.com>  Wed, 06 Oct 2010 10:30:01 +0900
+
+avsystem (0.3.1-3) unstable; urgency=low
+
+  * Fix sound path bug (on earphone plug event during voice call)
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.1-3
+
+ -- Kwanghui Cho <kwanghui.cho@samsung.com>  Mon, 04 Oct 2010 08:53:05 +0900
+
+avsystem (0.3.1-2) unstable; urgency=low
+
+  * misc cleanup (compile warning)
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.1-2
+
+ -- Kwanghui Cho <kwanghui.cho@samsung.com>  Fri, 01 Oct 2010 09:03:32 +0900
+
+avsystem (0.3.1-1) unstable; urgency=low
+
+  * Add Ext android/java volume type
+  * remove volume sync in sound_intializer
+  * update hibernation reset code (avoid B/S)
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.1-1
+
+ -- Kwanghui Cho <kwanghui.cho@samsung.com>  Thu, 30 Sep 2010 13:10:13 +0900
+
+avsystem (0.3.1-0) unstable; urgency=low
+
+  * Modify AF init scenario when capture start
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.1-0
+
+ -- Jeongmo Yang <jm80.yang@samsung.com>  Tue, 28 Sep 2010 15:53:46 +0900
+
+avsystem (0.3.0-2) unstable; urgency=low
+
+  * Add primary volume api
+  * Support dirty volume set
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.0-2
+
+ -- Kwanghui Cho <kwanghui.cho@samsung.com>  Mon, 27 Sep 2010 19:12:05 +0900
+
+avsystem (0.3.0-1) unstable; urgency=low
+
+  * ext dvice status api added
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.0-1
+
+ -- Kwanghui Cho <kwanghui.cho@samsung.com>  Mon, 27 Sep 2010 12:28:17 +0900
+
+avsystem (0.3.0-0) unstable; urgency=low
+
+  * Extended Volume feature enable
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.3.0-0
+
+ -- Kwanghui Cho <kwanghui.cho@samsung.com>  Fri, 17 Sep 2010 18:50:31 +0900
+
+avsystem (0.2.2-4) unstable; urgency=low
+
+  * add current running volume function
+  * Update avsys_audio_path_ex_reset() function
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.2.2-4
+
+ -- Kwanghui Cho <kwanghui.cho@samsung.com>  Wed, 15 Sep 2010 17:23:53 +0900
+
+avsystem (0.2.2-3) unstable; urgency=low
+
+  * Use ringtone gain when callalert mode
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.2.2-3
+  
+ -- Kwanghui Cho <kwanghui.cho@samsung.com>  Mon, 13 Sep 2010 16:10:19 +0900
+
+avsystem (0.2.2-2) unstable; urgency=low
+
+  * ignore keypad undetected error for p1 target
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.2.2-2
+  
+ -- Kwanghui Cho <kwanghui.cho@samsung.com>  Thu, 09 Sep 2010 15:58:23 +0900
+
+avsystem (0.2.2-1) unstable; urgency=low
+
+  * add set/get audio route value api
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.2.2-1
+  
+ -- Kwanghui Cho <kwanghui.cho@samsung.com>  Wed, 08 Sep 2010 11:23:46 +0900
+
+avsystem (0.2.2-0) unstable; urgency=low
+
+  * Set appropriate value for metering
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.2.2-0
+
+ -- Wonhyung Cho <wh01.cho@samsung.com>  Tue, 07 Sep 2010 15:21:41 +0900
+
+avsystem (0.2.1-4) unstable; urgency=low
+
+  * Fix bug (keytone does not sound)
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.2.1-4
+  
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Mon, 06 Sep 2010 19:48:46 +0900
+
+avsystem (0.2.1-3) unstable; urgency=low
+
+  * Cleanup avsysaudio source code
+  * Add AVSYS_AUDIO_OUTPUT_MODE_VIDEO
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.2.1-3
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Mon, 06 Sep 2010 14:35:15 +0900
+
+avsystem (0.2.1-2) unstable; urgency=low
+
+  * Fix build error of i386 case
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.2.1-2
+
+ -- Wonhyung Cho <wh01.cho@samsung.com>  Thu, 02 Sep 2010 20:31:17 +0900
+
+avsystem (0.2.1-1) unstable; urgency=low
+
+  * Change filename of h1 source, header
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.2.1-1
+
+ -- Wonhyung Cho <wh01.cho@samsung.com>  Thu, 02 Sep 2010 19:48:20 +0900
+
+avsystem (0.2.1-0) unstable; urgency=low
+
+  * Reorganize avsys-cam related sources
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.2.1-0
+
+ -- Wonhyung Cho <wh01.cho@samsung.com>  Thu, 02 Sep 2010 19:31:50 +0900
+
+avsystem (0.2.0-0) unstable; urgency=low
+
+  * Set PulseAudio as default
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.2.0-0
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Thu, 02 Sep 2010 17:42:59 +0900
+
+avsystem (0.1.58-1) unstable; urgency=low
+
+  * Change call path call sequence.
+  * Change location of call device alsa handle (shared memory to local memory)
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.1.58-1
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Wed, 01 Sep 2010 19:53:57 +0900
+
+avsystem (0.1.58-0) unstable; urgency=low
+
+  * Remove avsysvideosink releated sources
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.1.58-0
+
+ -- Wonhyung Cho <wh01.cho@samsung.com>  Wed, 01 Sep 2010 15:26:01 +0900
+
+avsystem (0.1.57-0) unstable; urgency=low
+
+  * Fix pthread handling
+  *   - Wonhyung Cho
+  * Logical volume scale
+  * PASIMPLE support (not enabled yet)
+  * Revise preprocessor name
+  * Alsa drain added
+  *   - Seungbae Shin
+  * Update for Dynamic capabilities
+  * Remove some warnings in avsys-cam.c
+  *   - Jeongmo Yang
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.1.57-0
+  
+ -- Jeongmo Yang <jm80.yang@samsung.com>  Thu, 19 Aug 2010 19:46:46 +0900
+
+avsystem (0.1.56-0) unstable; urgency=low
+
+  * Init lens when AF stop
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.1.56-0
+
+ -- Wonhyung Cho <wh01.cho@samsung.com>  Wed, 04 Aug 2010 16:26:29 +0900
+
+avsystem (0.1.55-0) unstable; urgency=low
+
+  * Improve AF routine
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.1.55-0
+
+ -- Wonhyung Cho <wh01.cho@samsung.com>  Wed, 04 Aug 2010 14:46:01 +0900
+
+avsystem (0.1.54-5) unstable; urgency=low
+
+  * [camera] Bug fix - Change permission of .dev_chk file for security version binary
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.1.54-5
+
+ -- Jeongmo Yang <jm80.yang@samsung.com>  Mon, 02 Aug 2010 11:07:37 +0900
+
+avsystem (0.1.53-5) unstable; urgency=low
+
+  * [DAC] change permission of avsys audio handle/path lock
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.1.53-5
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Sat, 31 Jul 2010 10:59:10 +0900
+
+avsystem (0.1.53-4) unstable; urgency=low
+
+  * [camera] Change permission of .dev_chk file for security version binary
+  * Add maintainer
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.1.53-4
+
+ -- Jeongmo Yang <jm80.yang@samsung.com>  Wed, 28 Jul 2010 22:14:56 +0900
+
+avsystem (0.1.52-3) unstable; urgency=low
+
+  * Add alsa dev dependancy on avsystem-dev package (for gst-exetension)
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.1.52-3
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Fri, 16 Jul 2010 14:05:33 +0900
+
+avsystem (0.1.52-2) unstable; urgency=low
+
+  * Modify dependancy for alsa sdk dev
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.1.52-2
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Thu, 15 Jul 2010 19:49:45 +0900
+
+avsystem (0.1.52-1) unstable; urgency=low
+
+  * Remove snd_scenario_unset_scn() call
+  * Git: 165.213.180.234:/git/slp/pkgs/avsystem
+  * Tag: avsystem_0.1.52-1
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Thu, 15 Jul 2010 11:09:11 +0900
+
+avsystem (0.1.52-0) unstable; urgency=low
+
+  * Rollback AF
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.52-0
+
+ -- Wonhyung Cho <wh01.cho@samsung.com>  Tue, 13 Jul 2010 11:21:03 +0900
+
+avsystem (0.1.51-18) unstable; urgency=low
+
+  * Fix path blocking on MO/MT call & Enable LOG for i386
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.51-18
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Mon, 12 Jul 2010 17:16:54 +0900
+
+avsystem (0.1.51-17) unstable; urgency=low
+
+  * Change maintainer
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.51-17
+
+ -- JongHyuk Choi <jhchoi.choi@samsung.com>  Wed, 07 Jul 2010 14:17:07 +0900
+
+avsystem (0.1.51-16) unstable; urgency=low
+
+  * Update code 
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.51-16
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Tue, 29 Jun 2010 15:49:31 +0900
+
+avsystem (0.1.51-15) unstable; urgency=low
+
+  * Update sound path
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.51-15
+  
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Fri, 25 Jun 2010 13:47:05 +0900
+
+avsystem (0.1.51-14) unstable; urgency=low
+
+  * Query interface changed and added
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.51-14
+
+ -- Kum Jun Seung <junseung.kum@samsung.com>  Fri, 25 Jun 2010 11:35:10 +0900
+
+avsystem (0.1.51-13) unstable; urgency=low
+
+  * update sound path bug
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.51-13
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Tue, 22 Jun 2010 17:29:14 +0900
+
+avsystem (0.1.51-12) unstable; urgency=low
+
+  * update volume table optimize
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.51-12
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Tue, 22 Jun 2010 15:19:46 +0900
+
+avsystem (0.1.51-11) unstable; urgency=low
+
+  * Reupload for mm-log update
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.51-11
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Thu, 17 Jun 2010 13:32:07 +0900
+
+avsystem (0.1.51-10) unstable; urgency=low
+
+  * reupload 
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.51-10
+  
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Wed, 16 Jun 2010 10:45:44 +0900
+
+avsystem (0.1.51-9) unstable; urgency=low
+
+  * Reupload for mm-log update
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.51-9
+  
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Wed, 16 Jun 2010 08:30:21 +0900
+
+avsystem (0.1.51-8) unstable; urgency=low
+
+  * Reupload for mm-log update
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.51-8
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Tue, 15 Jun 2010 18:55:01 +0900
+
+avsystem (0.1.51-7) unstable; urgency=low
+
+  * update sound path code
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.51-7
+  
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Tue, 15 Jun 2010 13:20:28 +0900
+
+avsystem (0.1.51-6) unstable; urgency=low
+
+  * apply duplex sound path
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.51-6
+  
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Wed, 09 Jun 2010 09:33:25 +0900
+
+avsystem (0.1.51-5) unstable; urgency=low
+
+  * Device name and index also can be quried
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.51-5
+
+ -- Kum Jun Seung <junseung.kum@samsung.com>  Mon, 17 May 2010 20:00:06 +0900
+
+avsystem (0.1.51-4) unstable; urgency=low
+
+  * Add missing shmat
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.51-4
+  
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Thu, 13 May 2010 19:33:11 +0900
+
+avsystem (0.1.51-3) unstable; urgency=low
+
+  * update earjack management routine
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.51-3
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Mon, 10 May 2010 18:40:23 +0900
+
+avsystem (0.1.51-2) unstable; urgency=low
+
+  * Error handling of ioctl fixed ( "== -1" deleted )
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.51-2
+
+ -- Kum Jun Seung <junseung.kum@samsung.com>  Mon, 10 May 2010 14:43:43 +0900
+
+avsystem (0.1.51-1) unstable; urgency=low
+
+  * update postinst (remove chwon, chmod) 
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.51-1
+  
+ -- KwangHui <kwanghui.cho@samsung.com>  Mon, 10 May 2010 13:32:22 +0900
+
+avsystem (0.1.51-0) unstable; urgency=low
+
+  * Add earjack manager function & update shared memory permission
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.51-0
+
+ -- KwangHui <kwanghui.cho@samsung.com>  Thu, 06 May 2010 14:21:56 +0900
+
+avsystem (0.1.50-26) unstable; urgency=low
+
+  * link avsys_cam_ctrl_id & query system
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.50-26
+
+ -- Kum Jun Seung <junseung.kum@samsung.com>  Thu, 06 May 2010 16:43:39 +0900
+
+avsystem (0.1.50-25) unstable; urgency=low
+
+  * Add XB-Public-Package & Replace log,ta package with sdk package
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.50-25
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Mon, 03 May 2010 22:37:30 +0900
+
+avsystem (0.1.50-24) unstable; urgency=low
+
+  * make new sdk-dev package which includes .pc & .la files only
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.50-24
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Mon, 03 May 2010 19:09:28 +0900
+
+avsystem (0.1.50-23) unstable; urgency=low
+
+  * splite "reset" script by mode
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.50-23
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Thu, 29 Apr 2010 15:55:58 +0900
+
+avsystem (0.1.50-22) unstable; urgency=low
+
+  * Directory reordering
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.50-22
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Sun, 25 Apr 2010 08:37:01 +0900
+
+avsystem (0.1.50-21) unstable; urgency=low
+
+  * Add external device(fmradio) ampon/off & Fix postinst script
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.50-21
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Sat, 24 Apr 2010 07:04:51 +0900
+
+avsystem (0.1.50-20) unstable; urgency=low
+
+  * deprecated dump functions deleted
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.50-20
+
+ -- Kum Jun Suung <junseung.kum@samsung.com>  Fri, 23 Apr 2010 16:45:20 +0900
+
+avsystem (0.1.50-19) unstable; urgency=low
+
+  * Remove LVVE dependency
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.50-19
+  
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Fri, 23 Apr 2010 07:58:23 +0900
+
+
+avsystem (0.1.50-18) unstable; urgency=low
+
+  * Simulator build prob fixed
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.50-18
+
+ -- Kum Jun Seung <junseung.kum@samsung.com>  Wed, 21 Apr 2010 17:51:04 +0900
+
+avsystem (0.1.50-17) unstable; urgency=low
+
+  * remove path argument from querying load/save functions
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.50-17
+
+ -- Kum Jun Seung <junseung.kum@samsung.com>  Tue, 20 Apr 2010 14:31:41 +0900
+
+avsystem (0.1.50-16) unstable; urgency=low
+
+  * avsystem delete ASYNC_DEV_OPEN feature (enable always)
+  * query functions enabled
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.50-16
+
+ -- Kum Jun Seung <junseung.kum@samsung.com>  Mon, 19 Apr 2010 19:15:13 +0900
+
+avsystem (0.1.50-15) unstable; urgency=low
+
+  * Repackage for mm-log update
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.50-15
+
+ -- Seungbae Shin <seungbae.shin@samsung.com>  Wed, 14 Apr 2010 22:44:59 +0900
+
+avsystem (0.1.50-14) unstable; urgency=low
+
+  * Change alsa device name
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.50-14
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Tue, 13 Apr 2010 12:39:25 +0900
+
+avsystem (0.1.50-13) unstable; urgency=low
+
+  * Fix tag verification failed
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.50-13
+
+ -- YoungHwan Ahn <younghwan_.an@samsung.com>  Thu, 08 Apr 2010 21:50:56 +0900
+
+avsystem (0.1.50-12) unstable; urgency=low
+
+  * add avsysvideo 
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.50-12
+
+ -- YoungHwan Ahn <younghwan_.an@samsung.com>  Thu, 08 Apr 2010 21:12:52 +0900
+
+avsystem (0.1.50-11) unstable; urgency=low
+
+  * add init script
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.50-11
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Thu, 08 Apr 2010 18:48:33 +0900
+
+avsystem (0.1.50-10) unstable; urgency=low
+
+  * update AEC integration - change dependecy of nxp solution
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.50-10
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Mon, 05 Apr 2010 19:14:54 +0900
+
+avsystem (0.1.50-9) unstable; urgency=low
+
+  * update AEC integration
+  * Git: 165.213.180.234:/git/slp2.0/slp2.0-pkgs/avsystem-0.1
+  * Tag: avsystem_0.1.50-9
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Mon, 05 Apr 2010 14:43:47 +0900
+
+avsystem (0.1.50-8) unstable; urgency=low
+
+  * dos2unix fwupdater/avsys-cam-firmware-v4l2.h
+
+ -- Seungbae shin <seungbae.shin@samsung.com>  Mon, 05 Apr 2010 13:49:36 +0900
+
+avsystem (0.1.50-7) unstable; urgency=low
+
+  * Update VT BT call sound path
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Tue, 30 Mar 2010 16:49:59 +0900
+
+avsystem (0.1.50-6) unstable; urgency=low
+
+  * Feature added for CE147 module
+
+ -- Kum Jun Seung <junseung.kum@samsung.com>  Fri, 26 Mar 2010 16:12:34 +0900
+
+avsystem (0.1.50-5) unstable; urgency=low
+
+  * AF retry count bug fix
+
+ -- Kum Jun Seung <junseung.kum@samsung.com>  Fri, 26 Mar 2010 15:10:57 +0900
+
+avsystem (0.1.50-4) unstable; urgency=low
+
+  * There was an missing in previous package
+
+ -- Wonhyung Cho <wh01.cho@samsung.com>  Thu, 25 Mar 2010 14:17:01 +0900
+
+avsystem (0.1.50-3) unstable; urgency=low
+
+  * Toolchain Upgrade
+
+ -- Wonhyung Cho <wh01.cho@samsung.com>  Thu, 25 Mar 2010 13:50:20 +0900
+
+avsystem (0.1.50-2) unstable; urgency=low
+
+  * Camera Qbuf defensive code(preview Q after capture starting) applied
+
+ -- Kum Jun Seung <junseung.kum@samsung.com>  Wed, 24 Mar 2010 16:40:08 +0900
+
+avsystem (0.1.50-1) unstable; urgency=low
+
+  * Change buffer numbers
+
+ -- Wonhyung Cho <wh01.cho@samsung.com>  Mon, 22 Mar 2010 14:51:22 +0900
+
+avsystem (0.1.50-0) unstable; urgency=low
+
+  * Add shmat in earjack manager (to avoid remove of shared memory by system fw)
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Fri, 12 Mar 2010 11:27:59 +0900
+
+avsystem (0.1.49-22) unstable; urgency=low
+
+  * Get cmd Bug fix
+  * jpeg size limit featured
+
+ -- Kum Jun Seung <junseung.kum@samsung.com>  Tue, 09 Mar 2010 10:14:29 +0900
+
+avsystem (0.1.49-21) unstable; urgency=low
+
+  * bug fix for crashing when mosaic shot after multishot
+
+ -- Kum Jun Seung <junseung.kum@samsung.com>  Fri, 05 Mar 2010 22:26:47 +0900
+
+avsystem (0.1.49-20) unstable; urgency=low
+
+  * Make it skip to set S_PARM depending on the input value
+
+ -- Wonhyung Cho <wh01.cho@samsung.com>  Fri, 05 Mar 2010 20:02:10 +0900
+
+avsystem (0.1.49-19) unstable; urgency=low
+
+  * Modify section to main
+
+ -- Kum Jun Seung <junseung.kum@samsung.com>  Fri, 05 Mar 2010 18:18:26 +0900
+
+avsystem (0.1.49-18) unstable; urgency=low
+
+  * self shot bug fix(self shot didn't support compress ratio)
+
+ -- Kum Jun Seung <junseung.kum@samsung.com>  Tue, 02 Mar 2010 15:39:12 +0900
+
+avsystem (0.1.49-17) unstable; urgency=low
+
+  * AF return value fixed along kernel's guide
+
+ -- Kum Jun Seung <junseung.kum@samsung.com>  Fri, 26 Feb 2010 20:01:22 +0900
+
+avsystem (0.1.49-16) unstable; urgency=low
+
+  * facedetection status can be get(temporary solution. it should be solved by kernel)
+
+ -- Kum Jun Seung <junseung.kum@samsung.com>  Fri, 26 Feb 2010 15:37:11 +0900
+
+avsystem (0.1.49-15) unstable; urgency=low
+
+  * facedetection/macro/EINVAL/some other issues fixed
+
+ -- Kum Jun Seung <junseung.kum@samsung.com>  Thu, 25 Feb 2010 17:24:20 +0900
+
+avsystem (0.1.49-14) unstable; urgency=low
+
+  * fix prevent complaint
+
+ -- root <kwanghui.cho@samsung.com>  Mon, 22 Feb 2010 15:49:38 +0900
+
+avsystem (0.1.49-13) unstable; urgency=low
+
+  * Remove sound priority policy
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Sat, 20 Feb 2010 06:48:53 +0900
+
+avsystem (0.1.49-12) unstable; urgency=low
+
+  * Change videodev2.h, videodev2_samsung.h to the version used in kernel
+
+ -- Wonhyung Cho <wh01.cho@samsung.com>  Fri, 19 Feb 2010 13:45:54 +0900
+
+avsystem (0.1.49-11) unstable; urgency=low
+
+  * add gain debug mode 
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Thu, 18 Feb 2010 12:28:44 +0900
+
+avsystem (0.1.49-10) unstable; urgency=low
+
+  * Fix 2nd call bug (codec off)
+  * Prevent Fix
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Thu, 18 Feb 2010 09:44:20 +0900
+
+avsystem (0.1.49-9) unstable; urgency=low
+
+  * jpg compress ratio enabled
+  * af init enabled
+
+ -- Kum Jun Seung <junseung.kum@samsung.com>  Wed, 17 Feb 2010 15:22:41 +0900
+
+avsystem (0.1.49-8) unstable; urgency=low
+
+  * Add "reset" to codec off after FM radio close
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Fri, 12 Feb 2010 19:45:08 +0900
+
+avsystem (0.1.49-7) unstable; urgency=low
+
+  * Skip re-open mic when ap play during voicecall
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Thu, 11 Feb 2010 19:17:56 +0900
+
+avsystem (0.1.49-6) unstable; urgency=low
+
+  * asm/page.h dependency removed
+
+ -- Kum Jun Seung <junseung.kum@samsung.com>  Thu, 11 Feb 2010 14:02:22 +0900
+
+avsystem (0.1.49-5) unstable; urgency=low
+
+  * Change initial sound path from spk to none
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Thu, 11 Feb 2010 12:05:35 +0900
+
+avsystem (0.1.49-4) unstable; urgency=low
+
+  * Add "use sub-mic" sound path option
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Tue, 09 Feb 2010 10:07:43 +0900
+
+avsystem (0.1.49-3) unstable; urgency=low
+
+  * Add time measurement code to avsys-cam
+
+ -- Wonhyung Cho <wh01.cho@samsung.com>  Fri, 05 Feb 2010 14:34:25 +0900
+
+avsystem (0.1.49-2) unstable; urgency=low
+
+  * Call "codec_disable_on_suspend" scenario when end of FM radio
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Mon, 08 Feb 2010 10:48:03 +0900
+
+avsystem (0.1.49-1) unstable; urgency=low
+
+  * Call "codec_disable_on_suspend" scenario when end of voice call
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Mon, 08 Feb 2010 09:03:32 +0900
+
+avsystem (0.1.49-0) unstable; urgency=low
+
+  * reupload
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Fri, 05 Feb 2010 12:22:01 +0900
+
+avsystem (0.1.48) unstable; urgency=low
+
+  * add new avsys_audio_get_volume_max_ex function which drop in replace of avsys_audio_get_volume_max
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Thu, 04 Feb 2010 12:03:40 +0900
+
+avsystem (0.1.47) unstable; urgency=low
+
+  * effect value changed
+
+ -- Kum Jun Seung <junseung.kum@samsung.com>  Wed, 03 Feb 2010 19:46:32 +0900
+
+avsystem (0.1.46) unstable; urgency=low
+
+  * Update Error handling code (shmat)
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Mon, 01 Feb 2010 19:05:34 +0900
+
+avsystem (0.1.45) unstable; urgency=low
+
+  * Add Error handling code in avsys_audio_logical_volume.c file
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Mon, 01 Feb 2010 18:14:23 +0900
+
+avsystem (0.1.44) unstable; urgency=low
+
+  * Fix ctrl cid changed to v4l2_cid_xx
+
+ -- Kum Jun Seung <junseung.kum@samsung.com>  Fri, 29 Jan 2010 21:24:40 +0900
+
+avsystem (0.1.43) unstable; urgency=low
+
+  * Replace OUTPUT_VIDEO mode to LOW_LATENCY mode
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Fri, 29 Jan 2010 08:13:15 +0900
+
+avsystem (0.1.42) unstable; urgency=low
+
+  * Fix SN12 preview bug
+
+ -- Wonhyung Cho <wh01.cho@samsung.com>  Tue, 26 Jan 2010 19:39:54 +0900
+
+avsystem (0.1.41) unstable; urgency=low
+
+  * changelog update for importing again
+
+ -- Kum Jun Seung <junseung.kum@samsung.com>  Mon, 25 Jan 2010 19:27:12 +0900
+
+avsystem (0.1.40) unstable; urgency=low
+
+  * call method changed
+  * redundant S_INPUT changed
+
+ -- Kum Jun Seung <junseung.kum@samsung.com>  Mon, 25 Jan 2010 19:14:21 +0900
+
+avsystem (0.1.39) unstable; urgency=low
+
+  * Change Volume table init. sequence
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Sat, 23 Jan 2010 08:00:52 +0900
+
+avsystem (0.1.38) unstable; urgency=low
+
+  * Add load volume table from file
+  * Mute/Unmute enabled
+  * Prevent Fix
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Fri, 22 Jan 2010 20:41:03 +0900
+
+avsystem (0.1.37) unstable; urgency=low
+
+  * Fix RAW capture format to YUYV
+
+ -- Wonhyung Cho <wh01.cho@samsung.com>  Thu, 21 Jan 2010 17:52:19 +0900
+
+avsystem (0.1.36) unstable; urgency=low
+
+  * Fix configure.ac (--enable-aquila, --enable-p1 option correctly)
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Wed, 20 Jan 2010 16:50:41 +0900
+
+avsystem (0.1.35) unstable; urgency=low
+
+  * Add ap call support 
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Wed, 20 Jan 2010 10:08:30 +0900
+
+avsystem (0.1.34) unstable; urgency=low
+
+  * Integrate FM radio recording gain with FM radio playback gain
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Tue, 19 Jan 2010 19:19:17 +0900
+
+avsystem (0.1.33) unstable; urgency=low
+
+  * add call recording sound path option. 
+  * fix fmradio_to_ap gain setting only when fm radio recording
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Tue, 19 Jan 2010 11:52:48 +0900
+
+avsystem (0.1.32) unstable; urgency=low
+
+  * add workaround sound path fix method for broken hardware
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Mon, 18 Jan 2010 08:43:06 +0900
+
+avsystem (0.1.31) unstable; urgency=low
+
+  * avsystem camera redundant log disabled
+
+ -- Kum Jun Seung <junseung.kum@samsung.com>  Fri, 15 Jan 2010 20:18:53 +0900
+
+avsystem (0.1.30) unstable; urgency=low
+
+  * add dbg package 
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Thu, 14 Jan 2010 17:26:43 +0900
+
+avsystem (0.1.29) unstable; urgency=low
+
+  * Change VT call sound path use ap duplex
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Wed, 13 Jan 2010 19:28:53 +0900
+
+avsystem (0.1.28) unstable; urgency=low
+
+  * avsys camera memory management routine applied (REQBUF = 0 when it stops capturing)
+
+ -- root <junseung.kum@samsung.com>  Wed, 13 Jan 2010 18:31:39 +0900
+
+avsystem (0.1.27) unstable; urgency=low
+
+  * Capture frame available on avsystem camera
+
+ -- root <junseung.kum@samsung.com>  Tue, 12 Jan 2010 15:49:42 +0900
+
+avsystem (0.1.26) unstable; urgency=low
+
+  * Fix logical volume update/set table function. (SIGSEG, crash logger) 
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Mon, 11 Jan 2010 12:21:18 +0900
+
+avsystem (0.1.25) unstable; urgency=low
+
+  * Enable BT voice call sound path
+
+ -- Wonhyung <wh01.cho@samsung.com>  Fri, 08 Jan 2010 17:32:26 +0900
+
+avsystem (0.1.24) unstable; urgency=low
+
+  * Fix configure.ac to apply MMTA to I386 build too.
+
+ -- Wonhyung <wh01.cho@samsung.com>  Tue, 05 Jan 2010 14:37:12 +0900
+
+avsystem (0.1.23) unstable; urgency=low
+
+  * Enable mm_ta for time analysis
+
+ -- Wonhyung <wh01.cho@samsung.com>  Wed, 30 Dec 2009 17:52:27 +0900
+
+avsystem (0.1.22) unstable; urgency=low
+
+  * Add allow mix bit support
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Wed, 30 Dec 2009 16:35:23 +0900
+
+avsystem (0.1.21) unstable; urgency=low
+
+  * Fix semaphore timeout error when eject earjack
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Tue, 29 Dec 2009 19:02:47 +0900
+
+avsystem (0.1.20) unstable; urgency=low
+
+  * Add swgain utility
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Mon, 28 Dec 2009 16:49:17 +0900
+
+avsystem (0.1.19) unstable; urgency=low
+
+  * Remove amp_state control
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Mon, 28 Dec 2009 10:33:14 +0900
+
+avsystem (0.1.18) unstable; urgency=low
+
+  * Add more log & change init backup outpath from none to spk 
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Mon, 28 Dec 2009 09:39:52 +0900
+
+avsystem (0.1.17) unstable; urgency=low
+
+  * bug fix
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Thu, 24 Dec 2009 16:12:12 +0900
+
+avsystem (0.1.16) unstable; urgency=low
+
+  * change audio write on path off from skip to error msg
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Thu, 24 Dec 2009 15:17:32 +0900
+
+avsystem (0.1.15) unstable; urgency=low
+
+  * uncomment avsys_audio_path_ex_amp_all_off
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Thu, 24 Dec 2009 14:53:12 +0900
+
+avsystem (0.1.14) unstable; urgency=low
+
+  * fix voice call path bug & uncomment amp management
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Thu, 24 Dec 2009 11:29:33 +0900
+
+avsystem (0.1.13) unstable; urgency=low
+
+  * apply volume table & priority as separte
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Wed, 23 Dec 2009 19:33:48 +0900
+
+avsystem (0.1.12) unstable; urgency=low
+
+  * update log message
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Wed, 23 Dec 2009 09:46:02 +0900
+
+avsystem (0.1.11) unstable; urgency=low
+
+  * Block Path Mute because of alsa scenario restriction 
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Wed, 23 Dec 2009 07:47:15 +0900
+
+avsystem (0.1.10) unstable; urgency=low
+
+  * Add support for sound priority 
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Tue, 22 Dec 2009 16:53:22 +0900
+
+avsystem (0.1.9) unstable; urgency=low
+
+  * version up for import fail
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Mon, 21 Dec 2009 13:47:06 +0900
+
+avsystem (0.1.8) unstable; urgency=low
+
+  * fix dependency for i386
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Mon, 21 Dec 2009 13:32:15 +0900
+
+avsystem (0.1.7) unstable; urgency=low
+
+  * SDK build support 
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Sat, 19 Dec 2009 13:58:18 +0900
+
+avsystem (0.1.6) unstable; urgency=low
+
+  * Use alsa-scenario-files new version
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Thu, 17 Dec 2009 16:18:26 +0900
+
+avsystem (0.1.5) unstable; urgency=low
+
+  * Add YUY2 format to avsys-cam
+
+ -- Wonhyung Cho <wh01.cho@samsung.com>  Thu, 17 Dec 2009 10:44:34 +0900
+
+avsystem (0.1.4) unstable; urgency=low
+
+  * update alsa-scenario-scn-data dependency
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Thu, 17 Dec 2009 09:03:39 +0900
+
+avsystem (0.1.3) unstable; urgency=low
+
+  * change assert to error return in alsa close function
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Wed, 16 Dec 2009 10:55:12 +0900
+
+avsystem (0.1.2) unstable; urgency=low
+
+  * Add avsys-cam-*
+
+ -- Wonhyung <wh01.cho@samsung.com>  Mon, 14 Dec 2009 20:47:06 +0900
+
+avsystem (0.1.1) unstable; urgency=low
+
+  * Change initial sound path value
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Fri, 11 Dec 2009 09:56:40 +0900
+
+avsystem (0.1.0) unstable; urgency=low
+  * Initial Release. 
+
+ -- KwangHui Cho <kwanghui.cho@samsung.com>  Thu, 03 Dec 2009 12:09:01 +0900
index 7e1bbe7..5b065ea 100755 (executable)
@@ -46,7 +46,7 @@ configure: configure.ac
 config.status: configure
        dh_testdir
        # Add here commands to configure the package.
-       CFLAGS="$(CFLAGS) -DGST_EXT_TIME_ANALYSIS" LDFLAGS="$(LDFLAGS)" ./configure --prefix=$(PREFIX) $(OPTION)
+       CFLAGS="$(CFLAGS) -DGST_EXT_TIME_ANALYSIS" LDFLAGS="$(LDFLAGS)" ./configure --prefix=$(PREFIX) $(OPTION) --enable-audiotest
 
 build: build-stamp
 
@@ -94,9 +94,9 @@ install: build
        # Add here commands to install the package into debian/ncurses.
        $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
        mkdir -p $(CURDIR)/debian/tmp/etc/rc.d/rc3.d/
-       ln -s ../init.d/snd_init $(CURDIR)/debian/tmp/etc/rc.d/rc3.d/S30snd_init
+       ln -s ../init.d/snd_init $(CURDIR)/debian/tmp/etc/rc.d/rc3.d/S15snd_init
        mkdir -p $(CURDIR)/debian/tmp/etc/rc.d/rc4.d/
-       ln -s ../init.d/snd_init $(CURDIR)/debian/tmp/etc/rc.d/rc4.d/S30snd_init
+       ln -s ../init.d/snd_init $(CURDIR)/debian/tmp/etc/rc.d/rc4.d/S15snd_init
 
 # Build architecture-independent files here.
 binary-indep: build install
index 1711f84..56a7091 100644 (file)
@@ -32,6 +32,7 @@ enum AIF_device_type_t {
        AIF2_PLAYBACK,
        AIF3_CAPTURE,
        AIF3_PLAYBACK,
+       AIF4_PLAYBACK,
        AIF_DEVICE_MAX,
 };
 
index 06fec34..acd0528 100644 (file)
@@ -49,6 +49,8 @@ int avsys_audio_pasimple_drain(avsys_audio_handle_t *handle);
 int avsys_audio_pasimple_delay(avsys_audio_handle_t *handle, int *delay_frames);
 int avsys_audio_pasimple_set_volume(avsys_audio_handle_t *handle, int volume);
 int avsys_audio_pasimple_get_period_buffer_time(avsys_audio_handle_t *handle, unsigned int *period_time, unsigned int *buffer_time);
+int avsys_audio_pasimple_cork(avsys_audio_handle_t *handle, int cork);
+int avsys_audio_pasimple_is_corked(avsys_audio_handle_t *handle, int *is_corked);
 
 #ifdef __cplusplus
        }
index 2f20b46..f6f06f2 100644 (file)
@@ -53,82 +53,10 @@ enum avsys_audio_capture_gain{
 };
 
 enum avsys_audio_ear_ctrl {
-       AVSYS_AUDIO_EAR_SWITCH_MANUAL,
-       AVSYS_AUDIO_EAR_SWITCH_AUTO_WITH_MUTE,
+       AVSYS_AUDIO_EAR_SWITCH_AUTO_WITH_MUTE = 1,
        AVSYS_AUDIO_EAR_SWITCH_AUTO_WITHOUT_MUTE,
 };
 
-struct avsys_audio_jack_event {
-       struct timeval time;
-       unsigned short type;
-       unsigned short code;
-       int value;
-};
-
-#define PATH_MASK_MAX  23
-#define GAIN_MASK_MAX  30
-/* sound path status bit */
-#define PS_PATH_NONE                           (0)
-#define PS_AP_TO_SPK                   (1 << 0)
-#define PS_AP_TO_HEADSET               (1 << 1)
-#define PS_AP_TO_RECV                  (1 << 2)
-#define PS_AP_TO_HDMI                  (1 << 3)
-#define PS_AP_TO_BT                            (1 << 4)
-#define PS_AP_TO_MODEM                 (1 << 5)
-#define PS_MODEM_TO_SPK                        (1 << 6)
-#define PS_MODEM_TO_HEADSET            (1 << 7)
-#define PS_MODEM_TO_RECV               (1 << 8)
-#define PS_MODEM_TO_BT                 (1 << 9)
-#define PS_MODEM_TO_AP                 (1 << 10)
-#define PS_FMRADIO_TO_SPK              (1 << 11)
-#define PS_FMRADIO_TO_HEADSET  (1 << 12)
-#define PS_MAINMIC_TO_AP               (1 << 13)
-#define PS_MAINMIC_TO_MODEM            (1 << 14)
-#define PS_SUBMIC_TO_AP                        (1 << 15)
-#define PS_SUBMIC_TO_MODEM             (1 << 16)
-#define PS_STEREOMIC_TO_AP             (1 << 17)
-#define PS_EARMIC_TO_AP                        (1 << 18)
-#define PS_EARMIC_TO_MODEM             (1 << 19)
-#define PS_BTMIC_TO_AP                 (1 << 20)
-#define PS_BTMIC_TO_MODEM              (1 << 21)
-#define PS_FMRADIO_TO_AP               (1 << 22)
-#define PS_CODEC_DISABLE_ON_SUSPEND    (1 << 23)
-#define PS_CP_TO_AP            (1 << PATH_MASK_MAX)
-
-
-/* hw gain status enum */
-#define GS_GAIN_NONE                           (0)
-#define GS_AP_TO_SPK                           (1 << 0)
-#define GS_AP_TO_SPK_CALLALERT         (1 << 1)
-#define GS_AP_TO_HEADSET                       (1 << 2)
-#define GS_AP_TO_HEADSET_CALLALERT     (1 << 3)
-#define GS_AP_TO_RECV                          (1 << 4)
-#define GS_AP_TO_HDMI                          (1 << 5)
-#define GS_AP_TO_BT                                    (1 << 6)
-#define GS_AP_TO_MODEM                         (1 << 7)
-#define GS_MODEM_TO_SPK_VOICE          (1 << 8)
-#define GS_MODEM_TO_HEADSET_VOICE      (1 << 9)
-#define GS_MODEM_TO_RECV_VOICE         (1 << 10)
-#define GS_MODEM_TO_BT_VOICE           (1 << 11)
-#define GS_MODEM_TO_AP_VOICE           (1 << 12)
-#define GS_MODEM_TO_SPK_VIDEO          (1 << 13)
-#define GS_MODEM_TO_HEADSET_VIDEO      (1 << 14)
-#define GS_MODEM_TO_RECV_VIDEO         (1 << 15)
-#define GS_MODEM_TO_BT_VIDEO           (1 << 16)
-#define GS_MODEM_TO_AP_VIDEO           (1 << 17)
-#define GS_FMRADIO_TO_SPK                      (1 << 18)
-#define GS_FMRADIO_TO_HEADSET          (1 << 19)
-#define GS_MAINMIC_TO_AP                       (1 << 20)
-#define GS_MAINMIC_TO_MODEM_VOICE      (1 << 21)
-#define GS_SUBMIC_TO_AP                                (1 << 22)
-#define GS_SUBMIC_TO_MODEM_VOICE       (1 << 23)
-#define GS_STEREOMIC_TO_AP                     (1 << 24)
-#define GS_EARMIC_TO_AP                                (1 << 25)
-#define GS_EARMIC_TO_MODEM_VOICE       (1 << 26)
-#define GS_BTMIC_TO_AP                         (1 << 27)
-#define GS_BTMIC_TO_MODEM_VOICE                (1 << 28)
-#define GS_FMRADIO_TO_AP                       (1 << 29)
-#define GS_CP_TO_AP                                    (1 << GAIN_MASK_MAX)
 
 #define TYPE_EVENT_SWITCH                      0x05
 #define CODE_HEADPHONE_INSERT          0x02
@@ -137,7 +65,6 @@ struct avsys_audio_jack_event {
 #define CODE_JACK_PHYSICAL_INSERT      0x07
 
 #define PATH_FIXED_NONE                     (0x00000000)
-#define PATH_FIXED_WITH_FMRADIO     (1 << PATH_FIXED_TYPE_FMRADIO)  /* 0x00000001 */
 #define PATH_FIXED_WITH_CALL            (1 << PATH_FIXED_TYPE_CALL)         /* 0x00000002 */
 
 enum avsys_audio_amp_t {
@@ -186,23 +113,12 @@ typedef struct {
        int inserted;
        int ear_auto;
 
-       /* for alsa scenario, aquila */
-       gain_status_t gain_status;
-       path_status_t path_status;
-
-       gain_status_t p_gain_status;
-       path_status_t p_path_status;
-
        int lvol_dev_type;
-       int gain_debug_mode;
+       bool control_aif_before_path_set;
+       bool gain_debug_mode;
 
        /* For Lock debugging */
        pid_t pathlock_pid[AVSYS_AUDIO_LOCK_SLOT_MAX];
-
-       /* system route policy */
-       avsys_audio_route_policy_t route_policy;
-       int a2dp_status;
-       int  earpiece_on;
 } avsys_audio_path_ex_info_t;
 
 int avsys_audio_path_ex_init(void);
@@ -225,7 +141,6 @@ int avsys_audio_path_earjack_unlock(void);
 
 int avsys_audio_path_set_route_policy(avsys_audio_route_policy_t route);
 int avsys_audio_path_get_route_policy(avsys_audio_route_policy_t *route);
-int avsys_audio_path_check_loud(bool *loud);
 int avsys_audio_path_check_cp_audio(bool *cpaudio, bool *btpath);
 int avsys_audio_path_set_single_ascn(char *str);
 
index d55d5a1..cab7221 100644 (file)
@@ -29,8 +29,6 @@
 typedef enum {
        AVSYS_AUDIO_SYNC_IDEN_HANDLE,
        AVSYS_AUDIO_SYNC_IDEN_PATH,
-       AVSYS_AUDIO_SYNC_IDEN_SOUNDPATH,
-       AVSYS_AUDIO_SYNC_IDEN_VOLUME,
        AVSYS_AUDIO_SYNC_IDEN_CNT
 } avsys_audio_sync_iden_t;
 
index 3853f46..e5d5252 100644 (file)
@@ -143,7 +143,7 @@ typedef struct {
        int             channels;                                       /**< Number of channels */
        int             samplerate;                                     /**< Sampling rate */
        int             format;                                         /**< Sampling format */
-       int             bluetooth;                                      /**< Handle route information. refer. avsys_audio_handle_route_t */
+       int             handle_route;                           /**< Handle route information. refer. avsys_audio_handle_route_t */
        int             vol_type;                                       /**< volume type */
        int             allow_mix;
 } avsys_audio_param_t;
@@ -224,15 +224,11 @@ typedef enum {
 
 /* path option */
 #define AVSYS_AUDIO_PATH_OPTION_NONE                   0x00000000      /*!< Sound path option none */
-#define AVSYS_AUDIO_PATH_OPTION_JACK_AUTO              0x00000001      /*!< Sound path auto change between SPK/Recv and headset */
 #define AVSYS_AUDIO_PATH_OPTION_DUAL_OUT               0x00000002      /*!< SPK or Recv with headset sound path. used for Ringtone or Alarm */
-#define AVSYS_AUDIO_PATH_OPTION_LEFT_SPK_ONLY  0x00000004      /*!< AP playback left speaker only */
-#define AVSYS_AUDIO_PATH_OPTION_RIGHT_SPK_ONLY 0x00000008      /*!< AP playback right speaker only */
 #define AVSYS_AUDIO_PATH_OPTION_VOICECALL_REC  0x00000010      /*!< Voice call recording path option */
 #define AVSYS_AUDIO_PATH_OPTION_USE_SUBMIC             0x00000020      /*!< Use sub-mic when call or recording */
 #define AVSYS_AUDIO_PATH_OPTION_USE_STEREOMIC  0x00000040      /*!< Use stereo mic when recording */
 #define AVSYS_AUDIO_PATH_OPTION_FORCED                 0x01000000      /*!< Forced sound path setting. only for booting animation */
-#define AVSYS_AUDIO_PATH_OPTION_LEGACY_MODE            0x10000000      /*!< Now Plus Style */
 
 
 /**
@@ -551,16 +547,30 @@ int avsys_audio_reset(avsys_handle_t handle);
 int avsys_audio_get_period_buffer_time(avsys_handle_t handle, unsigned int *period_time, unsigned int *buffer_time);
 
 /**
- * This function is to get playback audio device information of system.
+ * This function is to cork stream.
  *
- * @param      dev     [out]   current playback device type
+ * @param      handle          [in]    handle to cork
+ * @param      cork            [in]    cork=1, uncork=0
  *
  * @return     This function returns AVSYS_STATE_SUCCESS on success, or negative
  *                     value with error code.
  * @remark
- * @see                avsys_audio_playing_devcie_t
+ * @see
+ */
+int avsys_audio_cork (avsys_handle_t handle, int cork);
+
+/**
+ * This function is to check whether stream is corked or not.
+ *
+ * @param      handle          [in]    handle to cork
+ * @param      is_corked       [out]   corked is 1, otherwise 0
+ *
+ * @return     This function returns AVSYS_STATE_SUCCESS on success, or negative
+ *                     value with error code.
+ * @remark
+ * @see
  */
-int avsys_audio_get_playing_device_info(avsys_audio_playing_devcie_t *dev);
+int avsys_audio_is_corked (avsys_handle_t handle, int *is_corked);
 
 /**
  * This function is to get audio capturing status of system.
@@ -580,6 +590,7 @@ int avsys_audio_earjack_manager_init(int *earjack_type, int *waitfd);
 int avsys_audio_earjack_manager_wait(int waitfd, int *current_earjack_type, int *new_earjack_type, int *need_mute);
 int avsys_audio_earjack_manager_process(int new_earjack_type);
 int avsys_audio_earjack_manager_deinit(int waitfd);
+int avsys_audio_earjack_manager_get_type(void);
 int avsys_audio_earjack_manager_unlock(void);
 
 int avsys_audio_set_route_policy(avsys_audio_route_policy_t route);
index abe3f6a..30bf3c0 100644 (file)
@@ -1,7 +1,8 @@
+
 Name:       avsystem
 Summary:    Audio Video System
-Version:    0.4.13
-Release:    1
+Version:    0.5.0
+Release:    11
 Group:      System/Libraries
 License:    Apache-2.0
 Source0:    avsystem-%{version}.tar.gz
@@ -35,31 +36,40 @@ Audio Video System Development headers and libraries.
 %autogen
 %configure \
 %ifarch %{ix86}
-       --enable-slp2 --enable-aquila --enable-pasimple 
+       --enable-audiotest --enable-sdk
 %else
-        --enable-slp2 --enable-sdk --enable-aquila --enable-pasimple
+       --enable-audiotest
 %endif
 
 make %{?jobs:-j%jobs}
 
 %install
+rm -rf %{buildroot}
 %make_install
 
-
 %post 
 /sbin/ldconfig
-mkdir -p /etc/rc.d/rc3.d/
-ln -s ../init.d/snd_init /etc/rc.d/rc3.d/S30snd_init
-mkdir -p /etc/rc.d/rc4.d/
-ln -s ../init.d/snd_init /etc/rc.d/rc4.d/S30snd_init
+mkdir -p /etc/rc.d/rc3.d
+mkdir -p /etc/rc.d/rc4.d
+ln -sf /etc/rc.d/init.d/snd_init /etc/rc.d/rc3.d/S15snd_init
+ln -sf /etc/rc.d/init.d/snd_init /etc/rc.d/rc4.d/S15snd_init
+
+%postun 
+/sbin/ldconfig
 
 %files
+%defattr(-,root,root,-)
 /etc/rc.d/init.d/snd_init
-/usr/bin/*
-/usr/lib/lib*.so.*
+/usr/bin/sound_initializer
+/usr/bin/avsys_audio_test
+/usr/bin/avsys_volume_dump
+/usr/lib/libavsysaudio.so.0
+/usr/lib/libavsysaudio.so.0.0.1
 
 %files devel
+/usr/lib/libavsysaudio.so
 /usr/lib/pkgconfig/*.pc
-/usr/lib/*.so
-/usr/include/avsystem/*.h
-
+/usr/include/avsystem/avsys-audio.h
+/usr/include/avsystem/avsys-error.h
+/usr/include/avsystem/avsys-types.h
+/usr/include/avsystem/avsystem.h