audio: hal_play_test: Test app incrementatl fixes
Fix incorrect channel map.
Add support for concurrent pan_scale & downmix control.
Change-Id: I11372244dade258741ba2264d667b9012d9edeec
CRs-fixed: 2091555
diff --git a/qahw_api/inc/qahw_defs.h b/qahw_api/inc/qahw_defs.h
index fa780bd..c13a1a4 100644
--- a/qahw_api/inc/qahw_defs.h
+++ b/qahw_api/inc/qahw_defs.h
@@ -180,6 +180,23 @@
#define MAX_OUT_CHANNELS 8
#define MAX_INP_CHANNELS 8
+#define QAHW_PCM_CHANNEL_FL 1 /* Front left channel. */
+#define QAHW_PCM_CHANNEL_FR 2 /* Front right channel. */
+#define QAHW_PCM_CHANNEL_FC 3 /* Front center channel. */
+#define QAHW_PCM_CHANNEL_LS 4 /* Left surround channel. */
+#define QAHW_PCM_CHANNEL_RS 5 /* Right surround channel. */
+#define QAHW_PCM_CHANNEL_LFE 6 /* Low frequency effect channel. */
+#define QAHW_PCM_CHANNEL_CS 7 /* Center surround channel; Rear center channel. */
+#define QAHW_PCM_CHANNEL_LB 8 /* Left back channel; Rear left channel. */
+#define QAHW_PCM_CHANNEL_RB 9 /* Right back channel; Rear right channel. */
+#define QAHW_PCM_CHANNEL_TS 10 /* Top surround channel. */
+#define QAHW_PCM_CHANNEL_CVH 11 /* Center vertical height channel. */
+#define QAHW_PCM_CHANNEL_MS 12 /* Mono surround channel. */
+#define QAHW_PCM_CHANNEL_FLC 13 /* Front left of center. */
+#define QAHW_PCM_CHANNEL_FRC 14 /* Front right of center. */
+#define QAHW_PCM_CHANNEL_RLC 15 /* Rear left of center. */
+#define QAHW_PCM_CHANNEL_RRC 16 /* Rear right of center. */
+
/* type of asynchronous write callback events. Mutually exclusive */
typedef enum {
QAHW_STREAM_CBK_EVENT_WRITE_READY, /* non blocking write completed */
diff --git a/qahw_api/test/qahw_playback_test.c b/qahw_api/test/qahw_playback_test.c
index b26a951..6846524 100644
--- a/qahw_api/test/qahw_playback_test.c
+++ b/qahw_api/test/qahw_playback_test.c
@@ -1776,41 +1776,37 @@
if (NULL == name)
return channel_type;
else if (strncmp(name, "fl", 2) == 0)
- channel_type = AUDIO_CHANNEL_OUT_FRONT_LEFT;
+ channel_type = QAHW_PCM_CHANNEL_FL;
else if (strncmp(name, "fr", 2) == 0)
- channel_type = AUDIO_CHANNEL_OUT_FRONT_RIGHT;
+ channel_type = QAHW_PCM_CHANNEL_FR;
else if (strncmp(name, "fc", 2) == 0)
- channel_type = AUDIO_CHANNEL_OUT_FRONT_CENTER;
+ channel_type = QAHW_PCM_CHANNEL_FC;
else if (strncmp(name, "lfe", 2) == 0)
- channel_type = AUDIO_CHANNEL_OUT_LOW_FREQUENCY;
+ channel_type = QAHW_PCM_CHANNEL_LFE;
else if (strncmp(name, "bl", 2) == 0)
- channel_type = AUDIO_CHANNEL_OUT_BACK_LEFT;
+ channel_type = QAHW_PCM_CHANNEL_LB;
else if (strncmp(name, "br", 2) == 0)
- channel_type = AUDIO_CHANNEL_OUT_BACK_RIGHT;
+ channel_type = QAHW_PCM_CHANNEL_RB;
else if (strncmp(name, "flc", 3) == 0)
- channel_type = AUDIO_CHANNEL_OUT_FRONT_LEFT_OF_CENTER;
+ channel_type = QAHW_PCM_CHANNEL_FLC;
else if (strncmp(name, "frc", 3) == 0)
- channel_type = AUDIO_CHANNEL_OUT_FRONT_RIGHT_OF_CENTER;
- else if (strncmp(name, "bc", 2) == 0)
- channel_type = AUDIO_CHANNEL_OUT_BACK_CENTER;
- else if (strncmp(name, "sl", 2) == 0)
- channel_type = AUDIO_CHANNEL_OUT_SIDE_LEFT;
- else if (strncmp(name, "sr", 2) == 0)
- channel_type = AUDIO_CHANNEL_OUT_SIDE_RIGHT;
- else if (strncmp(name, "tc", 2) == 0)
- channel_type = AUDIO_CHANNEL_OUT_TOP_CENTER;
- else if (strncmp(name, "tfl", 3) == 0)
- channel_type = AUDIO_CHANNEL_OUT_TOP_FRONT_LEFT;
- else if (strncmp(name, "tfc", 3) == 0)
- channel_type = AUDIO_CHANNEL_OUT_TOP_FRONT_CENTER;
- else if (strncmp(name, "tfr", 3) == 0)
- channel_type = AUDIO_CHANNEL_OUT_TOP_FRONT_RIGHT;
- else if (strncmp(name, "tbl", 3) == 0)
- channel_type = AUDIO_CHANNEL_OUT_TOP_BACK_LEFT;
- else if (strncmp(name, "tbc", 3) == 0)
- channel_type = AUDIO_CHANNEL_OUT_TOP_BACK_CENTER;
- else if (strncmp(name, "tbr", 3) == 0)
- channel_type = AUDIO_CHANNEL_OUT_TOP_BACK_RIGHT;
+ channel_type = QAHW_PCM_CHANNEL_FRC;
+ else if (strncmp(name, "cs", 2) == 0)
+ channel_type = QAHW_PCM_CHANNEL_CS;
+ else if (strncmp(name, "ls", 2) == 0)
+ channel_type = QAHW_PCM_CHANNEL_LS;
+ else if (strncmp(name, "rs", 2) == 0)
+ channel_type = QAHW_PCM_CHANNEL_RS;
+ else if (strncmp(name, "ts", 2) == 0)
+ channel_type = QAHW_PCM_CHANNEL_TS;
+ else if (strncmp(name, "cvh", 3) == 0)
+ channel_type = QAHW_PCM_CHANNEL_CVH;
+ else if (strncmp(name, "ms", 3) == 0)
+ channel_type = QAHW_PCM_CHANNEL_MS;
+ else if (strncmp(name, "rlc", 3) == 0)
+ channel_type = QAHW_PCM_CHANNEL_RLC;
+ else if (strncmp(name, "rrc", 3) == 0)
+ channel_type = QAHW_PCM_CHANNEL_RRC;
return channel_type;
}
@@ -1958,7 +1954,8 @@
kpi_mode = false;
char mixer_ctrl_name[64] = {0};
- int mixer_ctrl_type = 0;
+ int pan_scal_ctrl = 0;
+ int mix_ctrl = 0;
event_trigger = false;
bool wakelock_acquired = false;
@@ -2094,11 +2091,11 @@
case 'k':
get_kvpairs_string(optarg, "mixer_ctrl", mixer_ctrl_name);
if(strncmp(mixer_ctrl_name, "downmix", 7) == 0) {
- mixer_ctrl_type = QAHW_PARAM_CH_MIX_MATRIX_PARAMS;
+ mix_ctrl = QAHW_PARAM_CH_MIX_MATRIX_PARAMS;
} else if(strncmp(mixer_ctrl_name, "pan_scale", 9) == 0) {
- mixer_ctrl_type = QAHW_PARAM_OUT_MIX_MATRIX_PARAMS;
+ pan_scal_ctrl = QAHW_PARAM_OUT_MIX_MATRIX_PARAMS;
} else {
- mixer_ctrl_type = 0;
+ mix_ctrl = pan_scal_ctrl = 0;
stream_param[i].kvpair_values = optarg;
}
break;
@@ -2509,7 +2506,7 @@
thread_active[i] = true;
usleep(500000); //Wait until stream is created
- if(mixer_ctrl_type == QAHW_PARAM_OUT_MIX_MATRIX_PARAMS) {
+ if(pan_scal_ctrl == QAHW_PARAM_OUT_MIX_MATRIX_PARAMS) {
payload = (qahw_param_payload) mm_params;
param_id = QAHW_PARAM_OUT_MIX_MATRIX_PARAMS;
rc = qahw_out_set_param_data(stream->out_handle, param_id, &payload);
@@ -2517,7 +2514,7 @@
fprintf(log_file, "QAHW_PARAM_OUT_MIX_MATRIX_PARAMS could not be sent!\n");
}
}
- if(mixer_ctrl_type == QAHW_PARAM_CH_MIX_MATRIX_PARAMS) {
+ if(mix_ctrl == QAHW_PARAM_CH_MIX_MATRIX_PARAMS) {
payload = (qahw_param_payload) mm_params;
param_id = QAHW_PARAM_CH_MIX_MATRIX_PARAMS;
rc = qahw_out_set_param_data(stream->out_handle, param_id, &payload);