diff options
author | Robert Shih <robertshih@google.com> | 2015-08-05 21:39:05 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-08-05 21:39:05 +0000 |
commit | 27b71aa74b6ddfb45a5508dcaa90c5065a12500b (patch) | |
tree | 54d29a4176dbe6c6b615956dafd5ecc455c8f106 /media/libmediaplayerservice | |
parent | d24b430c3fc82e9288e9072971c9a185a18abd89 (diff) | |
parent | 1a5c859016e743779e4db25855390b3ce523cd48 (diff) | |
download | frameworks_av-27b71aa74b6ddfb45a5508dcaa90c5065a12500b.zip frameworks_av-27b71aa74b6ddfb45a5508dcaa90c5065a12500b.tar.gz frameworks_av-27b71aa74b6ddfb45a5508dcaa90c5065a12500b.tar.bz2 |
Merge "NuPlayer:seek handling on kWhatAudioTearDown" into mnc-dev
Diffstat (limited to 'media/libmediaplayerservice')
-rw-r--r-- | media/libmediaplayerservice/nuplayer/NuPlayer.cpp | 6 | ||||
-rw-r--r-- | media/libmediaplayerservice/nuplayer/NuPlayer.h | 2 | ||||
-rw-r--r-- | media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp | 7 |
3 files changed, 10 insertions, 5 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp index bfdb1ad..214315f 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp @@ -174,6 +174,7 @@ NuPlayer::NuPlayer(pid_t pid) mAudioDecoderGeneration(0), mVideoDecoderGeneration(0), mRendererGeneration(0), + mPreviousSeekTimeUs(0), mAudioEOS(false), mVideoEOS(false), mScanSourcesPending(false), @@ -1114,7 +1115,9 @@ void NuPlayer::onMessageReceived(const sp<AMessage> &msg) { } int64_t positionUs; - CHECK(msg->findInt64("positionUs", &positionUs)); + if (!msg->findInt64("positionUs", &positionUs)) { + positionUs = mPreviousSeekTimeUs; + } performSeek(positionUs); if (reason == Renderer::kDueToError && needsToCreateAudioDecoder) { @@ -1857,6 +1860,7 @@ void NuPlayer::performSeek(int64_t seekTimeUs) { mAudioDecoder.get(), mVideoDecoder.get()); return; } + mPreviousSeekTimeUs = seekTimeUs; mSource->seekTo(seekTimeUs); ++mTimedTextGeneration; diff --git a/media/libmediaplayerservice/nuplayer/NuPlayer.h b/media/libmediaplayerservice/nuplayer/NuPlayer.h index 9456d5d..c9f0bbd 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayer.h +++ b/media/libmediaplayerservice/nuplayer/NuPlayer.h @@ -154,6 +154,8 @@ private: int32_t mVideoDecoderGeneration; int32_t mRendererGeneration; + int64_t mPreviousSeekTimeUs; + List<sp<Action> > mDeferredActions; bool mAudioEOS; diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp index e9f3799..2e0d0d3 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp @@ -1586,16 +1586,15 @@ void NuPlayer::Renderer::onAudioTearDown(AudioTearDownReason reason) { mAudioTornDown = true; int64_t currentPositionUs; - if (getCurrentPosition(¤tPositionUs) != OK) { - currentPositionUs = 0; + sp<AMessage> notify = mNotify->dup(); + if (getCurrentPosition(¤tPositionUs) == OK) { + notify->setInt64("positionUs", currentPositionUs); } mAudioSink->stop(); mAudioSink->flush(); - sp<AMessage> notify = mNotify->dup(); notify->setInt32("what", kWhatAudioTearDown); - notify->setInt64("positionUs", currentPositionUs); notify->setInt32("reason", reason); notify->post(); } |