aaudio: fix reset of frame counters on stop, flush
The wrong monotonic frame counters were being reset.
A reset is needed because the service resets it 32-bit counter.
Bug: 79497298
Test: NativeOboeTest app, see bug report for repro steps
Change-Id: Iee1797b4dee47ec08142c9ddb199b861e4db5ded
diff --git a/media/libaaudio/src/legacy/AudioStreamTrack.cpp b/media/libaaudio/src/legacy/AudioStreamTrack.cpp
index 9653601..505cd77 100644
--- a/media/libaaudio/src/legacy/AudioStreamTrack.cpp
+++ b/media/libaaudio/src/legacy/AudioStreamTrack.cpp
@@ -310,7 +310,7 @@
setState(AAUDIO_STREAM_STATE_FLUSHING);
incrementFramesRead(getFramesWritten() - getFramesRead());
mAudioTrack->flush();
- mFramesWritten.reset32();
+ mFramesRead.reset32(); // service reads frames, service position reset on flush
mTimestampPosition.reset32();
return AAUDIO_OK;
}
@@ -324,7 +324,7 @@
setState(AAUDIO_STREAM_STATE_STOPPING);
incrementFramesRead(getFramesWritten() - getFramesRead()); // TODO review
mTimestampPosition.set(getFramesWritten());
- mFramesWritten.reset32();
+ mFramesRead.reset32(); // service reads frames, service position reset on stop
mTimestampPosition.reset32();
mAudioTrack->stop();
mCallbackEnabled.store(false);