NuPlayerRenderer: work around some racing condition in audio track
Test: no more super long delay when seeking/pausing/resuming
Bug: 66917327
Change-Id: Ic43ef543984f299d6ea7197c9e55d76518474c8a
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
index dec17e2..a568a17 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
@@ -549,8 +549,10 @@
CHECK_EQ(mAudioSink->getPosition(&numFramesPlayed),
(status_t)OK);
+ // Handle AudioTrack race when start is immediately called after flush.
uint32_t numFramesPendingPlayout =
- mNumFramesWritten - numFramesPlayed;
+ (mNumFramesWritten > numFramesPlayed ?
+ mNumFramesWritten - numFramesPlayed : 0);
// This is how long the audio sink will have data to
// play back.