diff options
author | Ronghua Wu <ronghuawu@google.com> | 2015-05-19 10:11:53 -0700 |
---|---|---|
committer | Ronghua Wu <ronghuawu@google.com> | 2015-05-19 10:13:34 -0700 |
commit | 8f291bc99e92015ebb959654a73c87e98bd46958 (patch) | |
tree | bb124330ab704cd36ad9e1dbe2f3b1d393d55574 /media/libmediaplayerservice/nuplayer/GenericSource.cpp | |
parent | 9ba21b9418d10ddcc39f08901e24fbf43d82b2bc (diff) | |
download | frameworks_av-8f291bc99e92015ebb959654a73c87e98bd46958.zip frameworks_av-8f291bc99e92015ebb959654a73c87e98bd46958.tar.gz frameworks_av-8f291bc99e92015ebb959654a73c87e98bd46958.tar.bz2 |
libmediaplayerservice: queue discontinuity when seek to eos.
Bug: 19063416
Change-Id: I23d1a3788006a0d68effa01fe9ee1d92fe06739c
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/GenericSource.cpp')
-rw-r--r-- | media/libmediaplayerservice/nuplayer/GenericSource.cpp | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/media/libmediaplayerservice/nuplayer/GenericSource.cpp b/media/libmediaplayerservice/nuplayer/GenericSource.cpp index 5e7b644..88a7745 100644 --- a/media/libmediaplayerservice/nuplayer/GenericSource.cpp +++ b/media/libmediaplayerservice/nuplayer/GenericSource.cpp @@ -1510,17 +1510,7 @@ void NuPlayer::GenericSource::readBuffer( mVideoTimeUs = timeUs; } - // formatChange && seeking: track whose source is changed during selection - // formatChange && !seeking: track whose source is not changed during selection - // !formatChange: normal seek - if ((seeking || formatChange) - && (trackType == MEDIA_TRACK_TYPE_AUDIO - || trackType == MEDIA_TRACK_TYPE_VIDEO)) { - ATSParser::DiscontinuityType type = (formatChange && seeking) - ? ATSParser::DISCONTINUITY_FORMATCHANGE - : ATSParser::DISCONTINUITY_NONE; - track->mPackets->queueDiscontinuity( type, NULL, true /* discard */); - } + queueDiscontinuityIfNeeded(seeking, formatChange, trackType, track); sp<ABuffer> buffer = mediaBufferToABuffer( mbuf, trackType, seekTimeUs, actualTimeUs); @@ -1538,10 +1528,26 @@ void NuPlayer::GenericSource::readBuffer( false /* discard */); #endif } else { + queueDiscontinuityIfNeeded(seeking, formatChange, trackType, track); track->mPackets->signalEOS(err); break; } } } +void NuPlayer::GenericSource::queueDiscontinuityIfNeeded( + bool seeking, bool formatChange, media_track_type trackType, Track *track) { + // formatChange && seeking: track whose source is changed during selection + // formatChange && !seeking: track whose source is not changed during selection + // !formatChange: normal seek + if ((seeking || formatChange) + && (trackType == MEDIA_TRACK_TYPE_AUDIO + || trackType == MEDIA_TRACK_TYPE_VIDEO)) { + ATSParser::DiscontinuityType type = (formatChange && seeking) + ? ATSParser::DISCONTINUITY_FORMATCHANGE + : ATSParser::DISCONTINUITY_NONE; + track->mPackets->queueDiscontinuity(type, NULL /* extra */, true /* discard */); + } +} + } // namespace android |