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
This commit is contained in:
parent
184418415b
commit
25e627f1e9
|
@ -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,6 +1746,16 @@ void *qap_wrapper_start_stream (void* stream_data)
|
|||
|
||||
wait_for_eos:
|
||||
if (stream_info->sec_input) {
|
||||
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);
|
||||
|
@ -1660,6 +1765,7 @@ wait_for_eos:
|
|||
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) {
|
||||
pthread_mutex_lock(&main_eos_lock);
|
||||
|
@ -1711,13 +1817,28 @@ 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;
|
||||
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;
|
||||
ALOGV("%s::%d Set Secondary System Sound Flag", __func__, __LINE__);
|
||||
} else if (stream_info->filetype != FILE_WAV) {
|
||||
} 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;
|
||||
|
@ -1727,13 +1848,7 @@ qap_module_handle_t qap_wrapper_stream_open(void* stream_data)
|
|||
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;
|
||||
} else {
|
||||
if (stream_info->flags & AUDIO_OUTPUT_FLAG_ASSOCIATED) {
|
||||
ALOGV("%s::%d Set Secondary Assoc Input Flag", __func__, __LINE__);
|
||||
|
|
Loading…
Reference in New Issue