audio-hal: Use audio stream to get delay latency

An incremental change on top of Change-Id: Icb9babf7e6a63c1f3d1af73c42ef21fb8b7d211b
This resolved the perf issue of audio playback.

Change-Id: I7f50813147c4568d9e12dd16c486adc3fc4abe90
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 0594b7b..987e388 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -4418,10 +4418,8 @@
     /* This adjustment accounts for buffering after app processor.
      * It is based on estimated DSP latency per use case, rather than exact.
      */
-    pthread_mutex_lock(&adev->lock);
-    dsp_frames = platform_render_latency(out->dev, out->usecase) *
+    dsp_frames = platform_render_latency(out) *
         out->sample_rate / 1000000LL;
-    pthread_mutex_unlock(&adev->lock);
 
     pthread_mutex_lock(&out->position_query_lock);
     written_frames = out->written /
@@ -5386,9 +5384,7 @@
                          1000) / (out->config.rate);
         else
             period_ms = 0;
-        pthread_mutex_lock(&adev->lock);
-        latency = period_ms + platform_render_latency(out->dev, out->usecase)/1000;
-        pthread_mutex_unlock(&adev->lock);
+        latency = period_ms + platform_render_latency(out) / 1000;
     } else {
         latency = (out->config.period_count * out->config.period_size * 1000) /
            (out->config.rate);
@@ -6324,10 +6320,8 @@
 
                 // This adjustment accounts for buffering after app processor.
                 // It is based on estimated DSP latency per use case, rather than exact.
-                pthread_mutex_lock(&adev->lock);
-                frames_temp = platform_render_latency(out->dev, out->usecase) *
+                frames_temp = platform_render_latency(out) *
                               out->sample_rate / 1000000LL;
-                pthread_mutex_unlock(&adev->lock);
                 if (signed_frames >= frames_temp)
                     signed_frames -= frames_temp;
 
@@ -7225,10 +7219,8 @@
         unsigned int avail;
         if (pcm_get_htimestamp(in->pcm, &avail, &timestamp) == 0) {
             *frames = in->frames_read + avail;
-            pthread_mutex_lock(&adev->lock);
             *time = timestamp.tv_sec * 1000000000LL + timestamp.tv_nsec
-                    - platform_capture_latency(in->dev, in->usecase) * 1000LL;
-            pthread_mutex_unlock(&adev->lock);
+                    - platform_capture_latency(in) * 1000LL;
             ret = 0;
         }
     }