Skip to content

Commit fa6dfdc

Browse files
committed
Don't post position updates too frequently
i.e. don't hog my message queue. related-to-bug: 5284760 Change-Id: I8e2d36a11dbee1567b18ed13dc5257a65c6eeda7
1 parent 62bb0cd commit fa6dfdc

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@
2626

2727
namespace android {
2828

29+
// static
30+
const int64_t NuPlayer::Renderer::kMinPositionUpdateDelayUs = 100000ll;
31+
2932
NuPlayer::Renderer::Renderer(
3033
const sp<MediaPlayerBase::AudioSink> &sink,
3134
const sp<AMessage> &notify)
@@ -43,7 +46,8 @@ NuPlayer::Renderer::Renderer(
4346
mHasAudio(false),
4447
mHasVideo(false),
4548
mSyncQueues(false),
46-
mPaused(false) {
49+
mPaused(false),
50+
mLastPositionUpdateUs(-1ll) {
4751
}
4852

4953
NuPlayer::Renderer::~Renderer() {
@@ -190,15 +194,14 @@ void NuPlayer::Renderer::postDrainAudioQueue() {
190194
mDrainAudioQueuePending = true;
191195
sp<AMessage> msg = new AMessage(kWhatDrainAudioQueue, id());
192196
msg->setInt32("generation", mAudioQueueGeneration);
193-
msg->post(10000);
197+
msg->post();
194198
}
195199

196200
void NuPlayer::Renderer::signalAudioSinkChanged() {
197201
(new AMessage(kWhatAudioSinkChanged, id()))->post();
198202
}
199203

200204
void NuPlayer::Renderer::onDrainAudioQueue() {
201-
202205
for (;;) {
203206
if (mAudioQueue.empty()) {
204207
break;
@@ -562,6 +565,13 @@ void NuPlayer::Renderer::notifyPosition() {
562565
}
563566

564567
int64_t nowUs = ALooper::GetNowUs();
568+
569+
if (mLastPositionUpdateUs >= 0
570+
&& nowUs < mLastPositionUpdateUs + kMinPositionUpdateDelayUs) {
571+
return;
572+
}
573+
mLastPositionUpdateUs = nowUs;
574+
565575
int64_t positionUs = (nowUs - mAnchorTimeRealUs) + mAnchorTimeMediaUs;
566576

567577
sp<AMessage> notify = mNotify->dup();

media/libmediaplayerservice/nuplayer/NuPlayerRenderer.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ struct NuPlayer::Renderer : public AHandler {
7474
status_t mFinalResult;
7575
};
7676

77+
static const int64_t kMinPositionUpdateDelayUs;
78+
7779
sp<MediaPlayerBase::AudioSink> mAudioSink;
7880
sp<AMessage> mNotify;
7981
List<QueueEntry> mAudioQueue;
@@ -98,6 +100,8 @@ struct NuPlayer::Renderer : public AHandler {
98100

99101
bool mPaused;
100102

103+
int64_t mLastPositionUpdateUs;
104+
101105
void onDrainAudioQueue();
102106
void postDrainAudioQueue();
103107

0 commit comments

Comments
 (0)