NuPlayer: Notify if drain message time is unexpectedly long
Bug: 27940058
Change-Id: Id8897c30e21b6b9de545a710e7766ffceb491455
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
index cbb9d95..167b9a0 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
@@ -19,6 +19,7 @@
#include <utils/Log.h>
#include "NuPlayerRenderer.h"
+#include <algorithm>
#include <cutils/properties.h>
#include <media/stagefright/foundation/ABuffer.h>
#include <media/stagefright/foundation/ADebug.h>
@@ -487,8 +488,14 @@
// Let's give it more data after about half that time
// has elapsed.
+ delayUs /= 2;
+ // check the buffer size to estimate maximum delay permitted.
+ const int64_t maxDrainDelayUs = std::max(
+ mAudioSink->getBufferDurationInUs(), (int64_t)500000 /* half second */);
+ ALOGD_IF(delayUs > maxDrainDelayUs, "postDrainAudioQueue long delay: %lld > %lld",
+ (long long)delayUs, (long long)maxDrainDelayUs);
Mutex::Autolock autoLock(mLock);
- postDrainAudioQueue_l(delayUs / 2);
+ postDrainAudioQueue_l(delayUs);
}
break;
}