hal: set gapless metadata for compress offload playback
-If any of the metadata parameters are set from the framework.
set the gapless metadata to one.
CRs-Fixed: 588353
Change-Id: I66a79d3f64515d108585527496a754c06a441560
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index fc78610..7b3ce53 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -1303,26 +1303,39 @@
{
int ret = 0;
char value[32];
+ bool is_meta_data_params = false;
struct compr_gapless_mdata tmp_mdata;
-
+ tmp_mdata.encoder_delay = 0;
+ tmp_mdata.encoder_padding = 0;
if (!out || !parms) {
+ ALOGE("%s: return invalid ",__func__);
return -EINVAL;
}
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_SAMPLE_RATE, value, sizeof(value));
+ if(ret >= 0)
+ is_meta_data_params = true;
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_NUM_CHANNEL, value, sizeof(value));
+ if(ret >= 0 )
+ is_meta_data_params = true;
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_AVG_BIT_RATE, value, sizeof(value));
+ if(ret >= 0 )
+ is_meta_data_params = true;
ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_DELAY_SAMPLES, value, sizeof(value));
if (ret >= 0) {
+ is_meta_data_params = true;
tmp_mdata.encoder_delay = atoi(value); //whats a good limit check?
- } else {
- return -EINVAL;
}
-
ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_PADDING_SAMPLES, value, sizeof(value));
if (ret >= 0) {
+ is_meta_data_params = true;
tmp_mdata.encoder_padding = atoi(value);
- } else {
- return -EINVAL;
}
+ if(!is_meta_data_params) {
+ ALOGV("%s: Not gapless meta data params", __func__);
+ return 0;
+ }
out->gapless_mdata = tmp_mdata;
out->send_new_metadata = 1;
ALOGV("%s new encoder delay %u and padding %u", __func__,
@@ -1415,7 +1428,9 @@
pthread_mutex_unlock(&adev->lock);
}
if (out->usecase == USECASE_AUDIO_PLAYBACK_OFFLOAD) {
+ pthread_mutex_lock(&out->lock);
parse_compress_metadata(out, parms);
+ pthread_mutex_unlock(&out->lock);
}
str_parms_destroy(parms);