hal: allow to get render position for non-offload use cases
For pcm voip use case which goes with direct output, render
position can be queried from HAL, while currently it is not
supported and always return with invalid status.
Return with written frames for pcm use cases when render
position queried from HAL.
CRs-Fixed: 828864
Change-Id: I5fec7f5fc1f61dc36cbeb41a4121c2c83f63b7f4
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index a550ecc..4f69bd5 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -2246,9 +2246,13 @@
{
struct stream_out *out = (struct stream_out *)stream;
struct audio_device *adev = out->dev;
- if (is_offload_usecase(out->usecase) && (dsp_frames != NULL)) {
+
+ if (dsp_frames == NULL)
+ return -EINVAL;
+
+ *dsp_frames = 0;
+ if (is_offload_usecase(out->usecase)) {
ssize_t ret = 0;
- *dsp_frames = 0;
pthread_mutex_lock(&out->lock);
if (out->compr != NULL) {
ret = compress_get_tstamp(out->compr, (unsigned long *)dsp_frames,
@@ -2276,6 +2280,9 @@
} else {
return 0;
}
+ } else if (audio_is_linear_pcm(out->format)) {
+ *dsp_frames = out->written;
+ return 0;
} else
return -EINVAL;
}