summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice/nuplayer/NuPlayer.cpp
diff options
context:
space:
mode:
authorLajos Molnar <lajos@google.com>2014-03-07 02:42:14 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-03-07 02:42:14 +0000
commit8d1caa026caef3673799481c5fba454306f831e9 (patch)
tree654e8de748a437c7d25550381ff7c0c8015fe40e /media/libmediaplayerservice/nuplayer/NuPlayer.cpp
parent04352de2e32d6dc0901436951f69357f5cd8655c (diff)
parent49ea13379fb15ddb73183ebafa3a377342ef932f (diff)
downloadframeworks_av-8d1caa026caef3673799481c5fba454306f831e9.zip
frameworks_av-8d1caa026caef3673799481c5fba454306f831e9.tar.gz
frameworks_av-8d1caa026caef3673799481c5fba454306f831e9.tar.bz2
am 49ea1337: Merge changes I787e1c05,I72d3a5e1,I0a5cc65f,I75fc2a25,I2c2be08d, ... into klp-dev
* commit '49ea13379fb15ddb73183ebafa3a377342ef932f': LiveSession: Use the actual, possibly redirected url as base in the M3U M3UParser: Skip query strings when looking for the last slash in a URL ChromiumHTTPDataSource: Keep track of the redirected URL Initial HLS seamless switch implementation. NuPlayer side support for seamless format switch. LiveSession refactor PlaylistFetcher: Add support for block-by-block decryption. LiveSession: Add support for block-by-block fetchFile.
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/NuPlayer.cpp')
-rw-r--r--media/libmediaplayerservice/nuplayer/NuPlayer.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp
index 3669a5b..25d55a3 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp
@@ -1011,7 +1011,14 @@ status_t NuPlayer::feedDecoderInputData(bool audio, const sp<AMessage> &msg) {
&NuPlayer::performScanSources));
}
- flushDecoder(audio, formatChange);
+ sp<AMessage> newFormat = mSource->getFormat(audio);
+ sp<Decoder> &decoder = audio ? mAudioDecoder : mVideoDecoder;
+ if (formatChange && !decoder->supportsSeamlessFormatChange(newFormat)) {
+ flushDecoder(audio, /* needShutdown = */ true);
+ } else {
+ flushDecoder(audio, /* needShutdown = */ false);
+ err = OK;
+ }
} else {
// This stream is unaffected by the discontinuity