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);