summaryrefslogtreecommitdiffstats
path: root/qahw_api
diff options
context:
space:
mode:
authorHarsh Bansal <hbansal@codeaurora.org>2019-02-27 10:04:48 +0530
committerGerrit - the friendly Code Review server <code-review@localhost>2019-03-19 22:26:22 -0700
commit25e627f1e928c4879aa7b7dfdcfb128d43dbbe69 (patch)
treebf517cd25f614035f847f90cb4822f7534e500e6 /qahw_api
parent184418415bf8176c6bcdce475c06ece67af4cf18 (diff)
downloadandroid_hardware_qcom_audio-25e627f1e928c4879aa7b7dfdcfb128d43dbbe69.tar.gz
android_hardware_qcom_audio-25e627f1e928c4879aa7b7dfdcfb128d43dbbe69.tar.bz2
android_hardware_qcom_audio-25e627f1e928c4879aa7b7dfdcfb128d43dbbe69.zip
hal: MS12: qap test app update
- updating qap hal test app to test new features of MS12-1.3.2 - Added Support for Main2 Testing - Added Support for OTT sound Testing - Added Support to send init time params to MS12 Change-Id: I7713509b1bac11c04e7af8f3447624d1727b35f3
Diffstat (limited to 'qahw_api')
-rw-r--r--qahw_api/test/qap_wrapper_extn.c217
1 files changed, 166 insertions, 51 deletions
diff --git a/qahw_api/test/qap_wrapper_extn.c b/qahw_api/test/qap_wrapper_extn.c
index 9cd9fd6a..d311570c 100644
--- a/qahw_api/test/qap_wrapper_extn.c
+++ b/qahw_api/test/qap_wrapper_extn.c
@@ -109,7 +109,10 @@ pthread_cond_t main_eos_cond;
pthread_mutex_t main_eos_lock;
pthread_cond_t sec_eos_cond;
pthread_mutex_t sec_eos_lock;
+pthread_cond_t main2_eos_cond;
+pthread_mutex_t main2_eos_lock;
bool main_eos_received = false;
+bool main2_eos_received = false;
bool sec_eos_received = false;
dlb_ms12_session_param_t dlb_param;
@@ -796,7 +799,7 @@ void qap_wrapper_module_callback(qap_module_handle_t module_handle, void* priv_d
if(p_stream_param == NULL) {
ALOGE("%s %d, callback handle is null.",__func__,__LINE__);
}
- ALOGV("%s %d Received event id %d\n", __func__, __LINE__, event_id);
+ ALOGV("%s %d, %s Received event id %d\n", __func__, __LINE__, p_stream_param->filename, event_id);
switch (event_id) {
case QAP_MODULE_CALLBACK_EVENT_SEND_INPUT_BUFFER:
@@ -856,7 +859,6 @@ void qap_wrapper_session_callback(qap_session_handle_t session_handle __unused,
main_eos_received = true;
pthread_mutex_unlock(&main_eos_lock);
- ALOGE("%s %d Received Main Input EOS ", __func__, __LINE__);
if (!stream_cnt)
close_output_streams();
if (play_list_cnt && input_streams_count) {
@@ -865,10 +867,10 @@ void qap_wrapper_session_callback(qap_session_handle_t session_handle __unused,
}
break;
case QAP_CALLBACK_EVENT_EOS_ASSOC:
- case QAP_CALLBACK_EVENT_MAIN_2_EOS:
if (stream_cnt > 0)
stream_cnt--;
- if (!has_system_input){
+ //if (!has_system_input)
+ {
ALOGV("%s %d Received Secondary Input EOS", __func__, __LINE__);
pthread_mutex_lock(&sec_eos_lock);
pthread_cond_signal(&sec_eos_cond);
@@ -878,6 +880,20 @@ void qap_wrapper_session_callback(qap_session_handle_t session_handle __unused,
if (!stream_cnt)
close_output_streams();
break;
+ case QAP_CALLBACK_EVENT_MAIN_2_EOS:
+ if (stream_cnt > 0)
+ stream_cnt--;
+ //if (!has_system_input)
+ {
+ ALOGV("%s %d Received main2 Input EOS", __func__, __LINE__);
+ pthread_mutex_lock(&main2_eos_lock);
+ pthread_cond_signal(&main2_eos_cond);
+ main2_eos_received = true;
+ pthread_mutex_unlock(&main2_eos_lock);
+ }
+ if (!stream_cnt)
+ close_output_streams();
+ break;
case QAP_CALLBACK_EVENT_ERROR:
break;
case QAP_CALLBACK_EVENT_SUCCESS:
@@ -1284,6 +1300,95 @@ static void qap_wrapper_is_dap_enabled(char *kv_pairs, int out_device_id, qap_se
}
}
+void update_qap_session_init_params(char *kv_pairs)
+{
+ int status = 0;
+ char *kvp = NULL;
+ int temp = 0;
+ int *temp_val = NULL;
+ uint32_t cmd_data[16] = {0};
+ uint32_t cmd_size = 0;
+
+ kvp = qap_wrapper_get_single_kvp("max_chs", kv_pairs, &status);
+ if (kvp != NULL) {
+ temp_val = qap_wrapper_get_int_value_array(kvp, &temp, &status);
+ if (temp_val != NULL) {
+ cmd_data[cmd_size++] = MS12_SESSION_CFG_MAX_CHS;
+ cmd_data[cmd_size++] = temp_val[0];
+ free(temp_val);
+ temp_val = NULL;
+ }
+ free(kvp);
+ kvp = NULL;
+ }
+
+ kvp = qap_wrapper_get_single_kvp("bs_out_mode", kv_pairs, &status);
+ if (kvp != NULL) {
+ temp_val = qap_wrapper_get_int_value_array(kvp, &temp, &status);
+ if (temp_val != NULL) {
+ cmd_data[cmd_size++] = MS12_SESSION_CFG_BS_OUTPUT_MODE;
+ cmd_data[cmd_size++] = temp_val[0];
+ free(temp_val);
+ temp_val = NULL;
+ }
+ free(kvp);
+ kvp = NULL;
+ }
+
+ kvp = qap_wrapper_get_single_kvp("chmod_locking", kv_pairs, &status);
+ if (kvp != NULL) {
+ temp_val = qap_wrapper_get_int_value_array(kvp, &temp, &status);
+ if (temp_val != NULL) {
+ cmd_data[cmd_size++] = MS12_SESSION_CFG_CHMOD_LOCKING;
+ cmd_data[cmd_size++] = temp_val[0];
+ free(temp_val);
+ temp_val = NULL;
+ }
+ free(kvp);
+ kvp = NULL;
+ }
+
+ kvp = qap_wrapper_get_single_kvp("dn", kv_pairs, &status);
+ if (kvp != NULL) {
+ temp_val = qap_wrapper_get_int_value_array(kvp, &temp, &status);
+ if (temp_val != NULL) {
+ cmd_data[cmd_size++] = MS12_SESSION_CFG_DIALOG_NORM;
+ cmd_data[cmd_size++] = temp_val[0];
+ free(temp_val);
+ temp_val = NULL;
+ }
+ free(kvp);
+ kvp = NULL;
+ }
+
+ kvp = qap_wrapper_get_single_kvp("rp", kv_pairs, &status);
+ if (kvp != NULL) {
+ temp_val = qap_wrapper_get_int_value_array(kvp, &temp, &status);
+ if (temp_val != NULL) {
+ cmd_data[cmd_size++] = MS12_SESSION_CFG_COMPR_PROF;
+ cmd_data[cmd_size++] = temp_val[0];
+ free(temp_val);
+ temp_val = NULL;
+ }
+ free(kvp);
+ kvp = NULL;
+ }
+
+ if (!cmd_size) {
+ return;
+ }
+
+ temp = qap_session_cmd(qap_session_handle,
+ QAP_SESSION_CMD_SET_PARAM,
+ cmd_size * sizeof(uint32_t),
+ &cmd_data[0],
+ NULL,
+ NULL);
+ if (temp != QAP_STATUS_OK) {
+ fprintf(stderr, "session init config failed\n");
+ }
+}
+
int qap_wrapper_session_open(char *kv_pairs, void* stream_data, int num_of_streams, qahw_module_handle_t *hal_handle)
{
int status = 0;
@@ -1380,7 +1485,7 @@ int qap_wrapper_session_open(char *kv_pairs, void* stream_data, int num_of_strea
if ((session_type == SESSION_BROADCAST) && dolby_formats) {
fprintf(stdout, "%s::%d Setting BROADCAST session for dolby formats\n", __func__, __LINE__);
- qap_session_handle = (qap_session_handle_t) qap_session_open(QAP_SESSION_BROADCAST, ms12_lib_handle);
+ qap_session_handle = (qap_session_handle_t) qap_session_open(QAP_SESSION_MS12_OTT, ms12_lib_handle);
if (qap_session_handle == NULL)
return -EINVAL;
} else if ((session_type == SESSION_BROADCAST) && !dolby_formats) {
@@ -1419,6 +1524,10 @@ int qap_wrapper_session_open(char *kv_pairs, void* stream_data, int num_of_strea
return -EINVAL;
}
+ if (dolby_formats) {
+ update_qap_session_init_params(kv_pairs);
+ }
+
if (!session_output_configured) {
if (session_type != SESSION_BROADCAST)
out_sample_rate = stream->config.sample_rate;;
@@ -1438,6 +1547,7 @@ int qap_wrapper_session_open(char *kv_pairs, void* stream_data, int num_of_strea
bitwidth_kvp = qap_wrapper_get_single_kvp("k", kv_pairs, &status);
if (bitwidth_kvp && strncmp(bitwidth_kvp, "k=", 2) == 0) {
+ fprintf(stdout, "Session set params, kvpair %s\n",&bitwidth_kvp[2]);
ret = qap_session_cmd(qap_session_handle, QAP_SESSION_CMD_SET_KVPAIRS, (sizeof(bitwidth_kvp) - 2), &bitwidth_kvp[2], NULL, NULL);
if (ret != QAP_STATUS_OK)
fprintf(stderr, "Session set params failed\n");
@@ -1447,8 +1557,10 @@ int qap_wrapper_session_open(char *kv_pairs, void* stream_data, int num_of_strea
}
pthread_mutex_init(&main_eos_lock, (const pthread_mutexattr_t *)NULL);
+ pthread_mutex_init(&main2_eos_lock, (const pthread_mutexattr_t *)NULL);
pthread_mutex_init(&sec_eos_lock, (const pthread_mutexattr_t *)NULL);
pthread_cond_init(&main_eos_cond, (const pthread_condattr_t *) NULL);
+ pthread_cond_init(&main2_eos_cond, (const pthread_condattr_t *) NULL);
pthread_cond_init(&sec_eos_cond, (const pthread_condattr_t *) NULL);
fprintf(stdout, "Session open returing success\n");
return 0;
@@ -1559,11 +1671,11 @@ void *qap_wrapper_start_stream (void* stream_data)
}
bytes_wanted = buffer->common_params.size;
- bytes_read = fread(data_buf, sizeof(unsigned char), bytes_wanted, fp_input);
+ bytes_read = fread(buffer->common_params.data, sizeof(unsigned char), bytes_wanted, fp_input);
buffer->common_params.offset = 0;
buffer->common_params.size = bytes_read;
- memcpy(buffer->common_params.data, data_buf, bytes_read);
+ //memcpy(buffer->common_params.data, data_buf, bytes_read);
if (bytes_read <= 0 || stop_playback) {
buffer->buffer_parms.input_buf_params.flags = QAP_BUFFER_EOS;
bytes_consumed = qap_module_process(qap_module_handle, buffer);
@@ -1597,26 +1709,10 @@ void *qap_wrapper_start_stream (void* stream_data)
buffer->common_params.data += bytes_consumed;
buffer->common_params.size -= bytes_consumed;
}
- ALOGV("%s %d feeding Input of size %d and bytes_cosumed is %d",
- __FUNCTION__, __LINE__,bytes_read, bytes_consumed);
- if (stream_info->filetype == FILE_DTS) {
+ ALOGV("%s %d, %s feeding Input of size %d and bytes_cosumed is %d",
+ __FUNCTION__, __LINE__,stream_info->filename, bytes_read, bytes_consumed);
+ {
if (bytes_consumed < 0) {
-#if 0
- while (!is_buffer_available) {
- usleep(1000);
- ret = qap_module_cmd(qap_module_handle, QAP_MODULE_CMD_GET_PARAM,
- sizeof(QAP_MODULE_CMD_GET_PARAM), "buf_available", NULL, reply_data
- );
- if (reply_data)
- temp_str = get_string_value(reply_data, &status);
- if (temp_str) {
- is_buffer_available = atoi(temp_str);
- free(temp_str);
- }
- ALOGV("%s : %d, dts clip reply_data is %d buffer availabale is %d",
- __FUNCTION__, __LINE__, reply_data, is_buffer_available);
- }
-#else
pthread_mutex_lock(&stream_info->input_buffer_available_lock);
stream_info->input_buffer_available_size = 0;
pthread_mutex_unlock(&stream_info->input_buffer_available_lock);
@@ -1633,7 +1729,6 @@ void *qap_wrapper_start_stream (void* stream_data)
stream_info->filename,
stream_info->input_buffer_available_size);
}
-#endif
if(kpi_mode && time_index > 5) {
gettimeofday(&tcont_ts1, NULL);
data_input_st_arr[time_index] = (tcont_ts1.tv_sec) * 1000 + (tcont_ts1.tv_usec) / 1000;
@@ -1651,14 +1746,25 @@ void *qap_wrapper_start_stream (void* stream_data)
wait_for_eos:
if (stream_info->sec_input) {
- if (!sec_eos_received) {
- pthread_mutex_lock(&sec_eos_lock);
- pthread_cond_wait(&sec_eos_cond, &sec_eos_lock);
- pthread_mutex_unlock(&sec_eos_lock);
+ if (!(stream_info->flags & AUDIO_OUTPUT_FLAG_ASSOCIATED)) {
+ if (!main2_eos_received) {
+ pthread_mutex_lock(&main2_eos_lock);
+ pthread_cond_wait(&main2_eos_cond, &main2_eos_lock);
+ pthread_mutex_unlock(&main2_eos_lock);
+ }
+ main2_eos_received = false;
+ fprintf(stdout, "Received EOS event for main2 input\n");
+ ALOGV("Received EOS event for main2 input\n");
+ } else {
+ if (!sec_eos_received) {
+ pthread_mutex_lock(&sec_eos_lock);
+ pthread_cond_wait(&sec_eos_cond, &sec_eos_lock);
+ pthread_mutex_unlock(&sec_eos_lock);
+ }
+ sec_eos_received = false;
+ fprintf(stdout, "Received EOS event for secondary input\n");
+ ALOGV("Received EOS event for secondary input\n");
}
- sec_eos_received = false;
- fprintf(stdout, "Received EOS event for secondary input\n");
- ALOGV("Received EOS event for secondary input\n");
}
if (!(stream_info->system_input || stream_info->sec_input)){
if (!main_eos_received) {
@@ -1711,29 +1817,38 @@ qap_module_handle_t qap_wrapper_stream_open(void* stream_data)
else
stream_info->bytes_to_read = 1024;
input_streams_count++;
- if (input_streams_count == 2) {
- if (stream_info->filetype == FILE_WAV) {
- input_config.flags = QAP_MODULE_FLAG_SYSTEM_SOUND;
- stream_info->system_input = true;
- has_system_input = true;
- ALOGV("%s::%d Set Secondary System Sound Flag", __func__, __LINE__);
- } else if (stream_info->filetype != FILE_WAV) {
+
+ if (stream_info->filetype == FILE_WAV) {
+ switch (stream_info->flags)
+ {
+ case QAP_MODULE_FLAG_SYSTEM_SOUND:
+ ALOGV("%s::%d Set System Sound Flag", __func__, __LINE__);
+ break;
+ case QAP_MODULE_FLAG_APP_SOUND:
+ ALOGV("%s::%d Set System APP Flag", __func__, __LINE__);
+ break;
+ case QAP_MODULE_FLAG_OTT_SOUND:
+ ALOGV("%s::%d Set OTT Sound Flag", __func__, __LINE__);
+ break;
+ default:
+ ALOGE("%s::%d unsupported flag for PCM input.", __func__, __LINE__);
+ return NULL;
+ }
+ input_config.flags = stream_info->flags;
+ stream_info->system_input = true;
+ has_system_input = true;
+ } else {
+ if (input_streams_count > 1) {
if (stream_info->flags & AUDIO_OUTPUT_FLAG_ASSOCIATED) {
- ALOGV("%s::%d Set Secondary Assoc Input Flag", __func__, __LINE__);
- input_config.flags = QAP_MODULE_FLAG_SECONDARY;
- stream_info->sec_input = true;
+ ALOGV("%s::%d Set Secondary Assoc Input Flag", __func__, __LINE__);
+ input_config.flags = QAP_MODULE_FLAG_SECONDARY;
+ stream_info->sec_input = true;
} else {
ALOGV("%s::%d Set Secondary Main Input Flag", __func__, __LINE__);
input_config.flags = QAP_MODULE_FLAG_PRIMARY;
stream_info->sec_input = true;
}
- }
- stream_info->bytes_to_read = 2048;
- } else {
- if (stream_info->filetype == FILE_WAV) {
- ALOGV("%s::%d Set Secondary System Sound Flag", __func__, __LINE__);
- input_config.flags = QAP_MODULE_FLAG_SYSTEM_SOUND;
- stream_info->system_input = true;
+ stream_info->bytes_to_read = 2048;
} else {
if (stream_info->flags & AUDIO_OUTPUT_FLAG_ASSOCIATED) {
ALOGV("%s::%d Set Secondary Assoc Input Flag", __func__, __LINE__);