Merge "qahw_api:test: Add changes to set approriate PP config in QAP"

This commit is contained in:
Linux Build Service Account 2017-10-25 20:10:31 -07:00 committed by Gerrit - the friendly Code Review server
commit 45b38d85ef
1 changed files with 25 additions and 6 deletions

View File

@ -33,6 +33,7 @@
#include <qap_api.h>
#include <qti_audio.h>
#include "qahw_playback_test.h"
#include <dolby_ms12.h>
#undef LOG_TAG
#define LOG_TAG "HAL_TEST"
@ -105,6 +106,8 @@ pthread_mutex_t main_eos_lock;
pthread_cond_t sec_eos_cond;
pthread_mutex_t sec_eos_lock;
dlb_ms12_session_param_t dlb_param;
dlb_ms12_session_param_t dlb_param_hp;
qap_session_outputs_config_t session_output_config;
bool session_output_configured = false;
struct timeval tcold_start, tcold_stop;
@ -1171,13 +1174,13 @@ void qap_wrapper_session_callback(qap_session_handle_t session_handle __unused,
}
}
static void qap_wrapper_is_dap_enabled(char *kv_pairs, int out_device_id) {
static void qap_wrapper_is_dap_enabled(char *kv_pairs, int out_device_id, qap_session_handle_t handle) {
int status = 0;
int temp = 0;
char *dap_kvp = NULL;
int *dap_value = NULL;
int dap_enable = 0;
qap_session_pp_configs_t dap_pp_config;
dap_kvp = qap_wrapper_get_single_kvp("dap_enable", kv_pairs, &status);
if (dap_kvp != NULL) {
dap_value = qap_wrapper_get_int_value_array(dap_kvp, &temp, &status);
@ -1186,7 +1189,7 @@ static void qap_wrapper_is_dap_enabled(char *kv_pairs, int out_device_id) {
if (dap_enable) {
fprintf(stdout, "dap enable %d and device id %d\n", dap_enable, out_device_id);
char *dev_kvp = NULL;
if (out_device_id == AUDIO_DEVICE_OUT_SPEAKER) {
if ((out_device_id & AUDIO_DEVICE_OUT_SPEAKER) == AUDIO_DEVICE_OUT_SPEAKER) {
dev_kvp = (char *) calloc(1, status + strlen("o_device=1; "));
if (dev_kvp != NULL) {
strcat(dev_kvp, "o_device=1;");
@ -1195,8 +1198,13 @@ static void qap_wrapper_is_dap_enabled(char *kv_pairs, int out_device_id) {
free(dev_kvp);
dev_kvp = NULL;
}
} else if ((out_device_id == AUDIO_DEVICE_OUT_LINE)||
(out_device_id == AUDIO_DEVICE_OUT_WIRED_HEADPHONE)) {
dap_pp_config.pp_config[dap_pp_config.num_confs].id = AUDIO_DEVICE_OUT_SPEAKER;
dlb_param = MS12_SESSION_CFG_DAP_ENABLE_SPEAKER;
dap_pp_config.pp_config[dap_pp_config.num_confs].pp_type = (void *) &dlb_param;
dap_pp_config.num_confs++;
}
if (((out_device_id & AUDIO_DEVICE_OUT_LINE) == AUDIO_DEVICE_OUT_LINE) ||
((out_device_id & AUDIO_DEVICE_OUT_WIRED_HEADPHONE) == AUDIO_DEVICE_OUT_WIRED_HEADPHONE)) {
dev_kvp = (char *) calloc(1, status + strlen("o_device=2; "));
if (dev_kvp != NULL) {
strcat(dev_kvp, "o_device=2;");
@ -1205,7 +1213,18 @@ static void qap_wrapper_is_dap_enabled(char *kv_pairs, int out_device_id) {
free(dev_kvp);
dev_kvp = NULL;
}
if ((out_device_id & AUDIO_DEVICE_OUT_LINE) == AUDIO_DEVICE_OUT_LINE)
dap_pp_config.pp_config[dap_pp_config.num_confs].id = AUDIO_DEVICE_OUT_LINE;
else
dap_pp_config.pp_config[dap_pp_config.num_confs].id = AUDIO_DEVICE_OUT_WIRED_HEADPHONE;
dlb_param_hp = MS12_SESSION_CFG_DAP_ENABLE_HEADPHONE;
dap_pp_config.pp_config[dap_pp_config.num_confs].pp_type = (void *) &dlb_param_hp;
dap_pp_config.num_confs++;
}
status = qap_session_cmd(qap_session_handle, QAP_SESSION_CMD_SET_PP_OUTPUTS,
sizeof(qap_session_pp_configs_t), &dap_pp_config, NULL, NULL);
if (status != QAP_STATUS_OK)
fprintf(stderr, "Output config failed\n");
}
free(dap_kvp);
dap_kvp = NULL;
@ -1289,7 +1308,6 @@ int qap_wrapper_session_open(char *kv_pairs, void* stream_data, int num_of_strea
dolby_formats = true;
}
qap_wrapper_is_dap_enabled(kv_pairs, stream->output_device);
// To-Do - Need to check SPDIF out also when SPDIF out is supported
ALOGD("%s::%d output device %d", __func__, __LINE__, stream->output_device);
@ -1363,6 +1381,7 @@ int qap_wrapper_session_open(char *kv_pairs, void* stream_data, int num_of_strea
fprintf(stderr, "Output config failed\n");
return -EINVAL;
}
qap_wrapper_is_dap_enabled(kv_pairs, stream->output_device, qap_session_handle);
bitwidth_kvp = qap_wrapper_get_single_kvp("k", kv_pairs, &status);
if (bitwidth_kvp && strncmp(bitwidth_kvp, "k=", 2) == 0) {