Add AVSYS_AUDIO_MODE_OUTPUT_DSP mode for PA control on "Audio DSP hardware decoding... devel/audiohwdec
authorJie Yang <yang.jie@intel.com>
Thu, 4 Jul 2013 08:17:37 +0000 (16:17 +0800)
committerZhang,Vivian <vivian.zhang@intel.com>
Tue, 17 Sep 2013 08:30:53 +0000 (16:30 +0800)
Change-Id: Iddf8835fe4d4680dffb045943beff26131c2029a

avsys-audio-handle.c [changed mode: 0644->0755]
avsys-audio-pasimple.c [changed mode: 0644->0755]
avsys-audio.c [changed mode: 0644->0755]
include/avsys-audio.h [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index 1232c92..df070d2
@@ -853,7 +853,8 @@ int avsys_audio_handle_current_playing_volume_type(int *type)
                        if(control->handles[i].mode == AVSYS_AUDIO_MODE_OUTPUT ||
                                        control->handles[i].mode == AVSYS_AUDIO_MODE_OUTPUT_CLOCK ||
                                        control->handles[i].mode == AVSYS_AUDIO_MODE_OUTPUT_VIDEO ||
-                                       control->handles[i].mode == AVSYS_AUDIO_MODE_OUTPUT_LOW_LATENCY ) {
+                                       control->handles[i].mode == AVSYS_AUDIO_MODE_OUTPUT_LOW_LATENCY ||
+                                       control->handles[i].mode == AVSYS_AUDIO_MODE_OUTPUT_DSP ) {
                                used_table[vol_conf_type] = 1;
                        }
                        else if(control->handles[i].mode == AVSYS_AUDIO_MODE_INPUT ||
@@ -971,7 +972,7 @@ int avsys_audio_handle_update_volume_by_type(const int volume_type, const int vo
                mode = control->handles[i].mode;
                if (mode != AVSYS_AUDIO_MODE_OUTPUT && mode != AVSYS_AUDIO_MODE_OUTPUT_CLOCK
                                && mode != AVSYS_AUDIO_MODE_OUTPUT_VIDEO && mode != AVSYS_AUDIO_MODE_OUTPUT_LOW_LATENCY
-                               && mode != AVSYS_AUDIO_MODE_OUTPUT_AP_CALL) {
+                               && mode != AVSYS_AUDIO_MODE_OUTPUT_AP_CALL && mode != AVSYS_AUDIO_MODE_OUTPUT_DSP) {
                        continue;
                }
 
old mode 100644 (file)
new mode 100755 (executable)
index aeeb999..39c10cc
@@ -70,6 +70,7 @@ do { \
 #define MEDIA_POLICY_AUTO      "auto"
 #define MEDIA_POLICY_PHONE     "phone"
 #define MEDIA_POLICY_ALL       "all"
+#define MEDIA_ROLE_FILTER      "filter"
 
 int avsys_audio_pasimple_open_device(const int mode, const unsigned int format, const unsigned int channel, const unsigned int samplerate, avsys_audio_handle_t *handle, int policy)
 {
@@ -199,6 +200,13 @@ int avsys_audio_pasimple_open_device(const int mode, const unsigned int format,
                s = pa_simple_new_proplist(NULL, "AVSYSTEM", PA_STREAM_PLAYBACK, NULL, "PLAYBACK", &ss, &channel_map, &attr, proplist, &err);
                break;
 
+       case AVSYS_AUDIO_MODE_OUTPUT_DSP:       /* audio dsp hw decoding case. */
+               avsys_info(AVAUDIO, ": set media role to filter\n");
+               pa_proplist_sets(proplist, PA_PROP_MEDIA_ROLE, MEDIA_ROLE_FILTER);
+
+               s = pa_simple_new_proplist(NULL, "AVSYSTEM", PA_STREAM_PLAYBACK, NULL, "DSP PLAYBACK", &ss, &channel_map, &attr, proplist, &err);
+               break;
+
        case AVSYS_AUDIO_MODE_OUTPUT_LOW_LATENCY:       /* This is special case for touch sound playback */
                SET_PA_ATTR(PA_SIMPLE_PERIOD_TIME_FOR_LOW_LATENCY_MSEC,
                                        MSEC_TO_SAMPLE(samplerate,period_time),
old mode 100644 (file)
new mode 100755 (executable)
index 39dd1c8..92da619
@@ -148,7 +148,7 @@ int avsys_audio_open(avsys_audio_param_t *param, avsys_handle_t *phandle, int *s
                goto error;
        }
 
-       if (p->mode == AVSYS_AUDIO_MODE_OUTPUT || p->mode == AVSYS_AUDIO_MODE_OUTPUT_CLOCK ||
+       if (p->mode == AVSYS_AUDIO_MODE_OUTPUT || p->mode == AVSYS_AUDIO_MODE_OUTPUT_CLOCK || p->mode == AVSYS_AUDIO_MODE_OUTPUT_DSP ||
                p->mode == AVSYS_AUDIO_MODE_OUTPUT_LOW_LATENCY || p->mode == AVSYS_AUDIO_MODE_OUTPUT_AP_CALL || p->mode == AVSYS_AUDIO_MODE_OUTPUT_VIDEO) {
                /* set volume table */
                err = avsys_audio_path_set_volume(handle);
@@ -178,6 +178,7 @@ int avsys_audio_open(avsys_audio_param_t *param, avsys_handle_t *phandle, int *s
        case AVSYS_AUDIO_MODE_OUTPUT_LOW_LATENCY:
        case AVSYS_AUDIO_MODE_OUTPUT_VIDEO:
        case AVSYS_AUDIO_MODE_OUTPUT_AP_CALL:
+       case AVSYS_AUDIO_MODE_OUTPUT_DSP:
                if (AVSYS_FAIL(avsys_audio_pasimple_set_volume(p, p->working_vol.level[AVSYS_AUDIO_CHANNEL_LEFT]))) {
                        avsys_error(AVAUDIO, "can not set volume in %s\n", __func__);
                }
@@ -283,7 +284,7 @@ int avsys_audio_update_volume_config(avsys_handle_t handle, int volume_config)
 
        if (p->mode == AVSYS_AUDIO_MODE_OUTPUT || p->mode == AVSYS_AUDIO_MODE_OUTPUT_CLOCK
                || p->mode == AVSYS_AUDIO_MODE_OUTPUT_LOW_LATENCY || p->mode == AVSYS_AUDIO_MODE_OUTPUT_AP_CALL
-               || p->mode == AVSYS_AUDIO_MODE_OUTPUT_VIDEO) {
+               || p->mode == AVSYS_AUDIO_MODE_OUTPUT_VIDEO || p->mode == AVSYS_AUDIO_MODE_OUTPUT_DSP) {
                p->gain_setting.volume_config = volume_config;
                /* update volume by type */
                err = avsys_audio_handle_update_volume(p, p->gain_setting.volume_config);
old mode 100644 (file)
new mode 100755 (executable)
index 51b151c..5a297d6
@@ -56,6 +56,7 @@ enum avsys_audio_mode_t {
        AVSYS_AUDIO_MODE_OUTPUT_CLOCK,                  /**< Output mode of gst audio only mode */
        AVSYS_AUDIO_MODE_OUTPUT_VIDEO,                  /**< Output mode of gst video mode */
        AVSYS_AUDIO_MODE_OUTPUT_LOW_LATENCY,    /**< Output mode for low latency play mode. typically for game */
+       AVSYS_AUDIO_MODE_OUTPUT_DSP,                    /**< Output mode for audio dsp hardware decoding */
        AVSYS_AUDIO_MODE_INPUT,                                 /**< Input mode of handle */
        AVSYS_AUDIO_MODE_INPUT_HIGH_LATENCY,    /**< Input mode for high latency capture mode. */
        AVSYS_AUDIO_MODE_INPUT_LOW_LATENCY,             /**< Input mode for low latency capture mode. typically for VoIP */