audio: return accurate frame count when track is flushed
To avoid track frames to be processed early before full filled,
when track is flushed, framesReady should return accurate
available frames to avoid putting track into ready state
too early, otherwise silence can be inserted as buffer is
insufficient which leads to audio glitch.
Bug: 166610318
Test: see bug, ringtone playback no regression.
Change-Id: I3b04999a29d85a91b54734514cfa93bc93f55c33
diff --git a/services/audioflinger/Tracks.cpp b/services/audioflinger/Tracks.cpp
index fbfe077..1a12a5f 100644
--- a/services/audioflinger/Tracks.cpp
+++ b/services/audioflinger/Tracks.cpp
@@ -954,6 +954,11 @@
// initial state-stopping. next state-pausing.
// What if resume is called ?
+ if (state == FLUSHED) {
+ // avoid underrun glitches when starting after flush
+ reset();
+ }
+
if (state == PAUSED || state == PAUSING) {
if (mResumeToStopping) {
// happened we need to resume to STOPPING_1