diff options
author | Wei Jia <wjia@google.com> | 2014-12-04 15:12:13 -0800 |
---|---|---|
committer | Wei Jia <wjia@google.com> | 2014-12-05 16:51:38 -0800 |
commit | 474d7c778b63aa33dcf25a92e23a52c1c47f0ac1 (patch) | |
tree | 4b6553cfc31df91a1c304061113172904d4bd768 /media/libmediaplayerservice/nuplayer/GenericSource.cpp | |
parent | 9257000c453c1a6f6bf073ff0bf3ba7ef9baf183 (diff) | |
download | frameworks_av-474d7c778b63aa33dcf25a92e23a52c1c47f0ac1.zip frameworks_av-474d7c778b63aa33dcf25a92e23a52c1c47f0ac1.tar.gz frameworks_av-474d7c778b63aa33dcf25a92e23a52c1c47f0ac1.tar.bz2 |
NuPlayerRenderer: Update mAnchorMaxMediaUs when anchor time is changed to fix pause-seek-getCurrentPosition.
NuPlayerDecoder: Notify resume is done when EOS is reached.
GenericSource: add code to signal pre-roll for seek so that it will seek to the requested position,
not only I-frame. This code is disabled temporarily till we have a full solution to handle both
single seek and continous seek gracefully.
Bug: 18625723
Change-Id: I99a54d4d549e0d805e3abcc227fbf96c16405af0
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/GenericSource.cpp')
-rw-r--r-- | media/libmediaplayerservice/nuplayer/GenericSource.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/media/libmediaplayerservice/nuplayer/GenericSource.cpp b/media/libmediaplayerservice/nuplayer/GenericSource.cpp index e7a26b6..67e7584 100644 --- a/media/libmediaplayerservice/nuplayer/GenericSource.cpp +++ b/media/libmediaplayerservice/nuplayer/GenericSource.cpp @@ -1179,6 +1179,7 @@ status_t NuPlayer::GenericSource::doSeek(int64_t seekTimeUs) { sp<ABuffer> NuPlayer::GenericSource::mediaBufferToABuffer( MediaBuffer* mb, media_track_type trackType, + int64_t /* seekTimeUs */, int64_t *actualTimeUs) { bool audio = trackType == MEDIA_TRACK_TYPE_AUDIO; size_t outLength = mb->range_length(); @@ -1216,6 +1217,16 @@ sp<ABuffer> NuPlayer::GenericSource::mediaBufferToABuffer( CHECK(mb->meta_data()->findInt64(kKeyTime, &timeUs)); meta->setInt64("timeUs", timeUs); +#if 0 + // Temporarily disable pre-roll till we have a full solution to handle + // both single seek and continous seek gracefully. + if (seekTimeUs > timeUs) { + sp<AMessage> extra = new AMessage; + extra->setInt64("resume-at-mediaTimeUs", seekTimeUs); + meta->setMessage("extra", extra); + } +#endif + if (trackType == MEDIA_TRACK_TYPE_TIMEDTEXT) { const char *mime; CHECK(mTimedTextTrack.mSource != NULL @@ -1348,7 +1359,8 @@ void NuPlayer::GenericSource::readBuffer( track->mPackets->queueDiscontinuity( type, NULL, true /* discard */); } - sp<ABuffer> buffer = mediaBufferToABuffer(mbuf, trackType, actualTimeUs); + sp<ABuffer> buffer = mediaBufferToABuffer( + mbuf, trackType, seekTimeUs, actualTimeUs); track->mPackets->queueAccessUnit(buffer); formatChange = false; seeking = false; |