diff options
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/NuPlayer.cpp')
-rw-r--r-- | media/libmediaplayerservice/nuplayer/NuPlayer.cpp | 74 |
1 files changed, 12 insertions, 62 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp index cfa5258..f4d3794 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp @@ -1021,41 +1021,23 @@ void NuPlayer::onResume() { } } -status_t NuPlayer::onInstantiateSecureDecoders() { - status_t err; - if (!(mSourceFlags & Source::FLAG_SECURE)) { - return BAD_TYPE; - } - - if (mRenderer != NULL) { - ALOGE("renderer should not be set when instantiating secure decoders"); - return UNKNOWN_ERROR; - } - - // TRICKY: We rely on mRenderer being null, so that decoder does not start requesting - // data on instantiation. - if (mNativeWindow != NULL) { - err = instantiateDecoder(false, &mVideoDecoder); - if (err != OK) { - return err; - } - } - - if (mAudioSink != NULL) { - err = instantiateDecoder(true, &mAudioDecoder); - if (err != OK) { - return err; - } - } - return OK; -} - void NuPlayer::onStart() { mOffloadAudio = false; mAudioEOS = false; mVideoEOS = false; mStarted = true; + /* instantiate decoders now for secure playback */ + if (mSourceFlags & Source::FLAG_SECURE) { + if (mNativeWindow != NULL) { + instantiateDecoder(false, &mVideoDecoder); + } + + if (mAudioSink != NULL) { + instantiateDecoder(true, &mAudioDecoder); + } + } + mSource->start(); uint32_t flags = 0; @@ -1408,7 +1390,7 @@ void NuPlayer::flushDecoder(bool audio, bool needShutdown) { FlushStatus newStatus = needShutdown ? FLUSHING_DECODER_SHUTDOWN : FLUSHING_DECODER; - mFlushComplete[audio][false /* isDecoder */] = (mRenderer == NULL); + mFlushComplete[audio][false /* isDecoder */] = false; mFlushComplete[audio][true /* isDecoder */] = false; if (audio) { ALOGE_IF(mFlushingAudio != NONE, @@ -1693,23 +1675,6 @@ void NuPlayer::onSourceNotify(const sp<AMessage> &msg) { CHECK(msg->findInt32("what", &what)); switch (what) { - case Source::kWhatInstantiateSecureDecoders: - { - if (mSource == NULL) { - // This is a stale notification from a source that was - // asynchronously preparing when the client called reset(). - // We handled the reset, the source is gone. - break; - } - - sp<AMessage> reply; - CHECK(msg->findMessage("reply", &reply)); - status_t err = onInstantiateSecureDecoders(); - reply->setInt32("err", err); - reply->post(); - break; - } - case Source::kWhatPrepared: { if (mSource == NULL) { @@ -1722,14 +1687,6 @@ void NuPlayer::onSourceNotify(const sp<AMessage> &msg) { int32_t err; CHECK(msg->findInt32("err", &err)); - if (err != OK) { - // shut down potential secure codecs in case client never calls reset - mDeferredActions.push_back( - new FlushDecoderAction(FLUSH_CMD_SHUTDOWN /* audio */, - FLUSH_CMD_SHUTDOWN /* video */)); - processDeferredActions(); - } - sp<NuPlayerDriver> driver = mDriver.promote(); if (driver != NULL) { // notify duration first, so that it's definitely set when @@ -2014,13 +1971,6 @@ void NuPlayer::Source::notifyPrepared(status_t err) { notify->post(); } -void NuPlayer::Source::notifyInstantiateSecureDecoders(const sp<AMessage> &reply) { - sp<AMessage> notify = dupNotify(); - notify->setInt32("what", kWhatInstantiateSecureDecoders); - notify->setMessage("reply", reply); - notify->post(); -} - void NuPlayer::Source::onMessageReceived(const sp<AMessage> & /* msg */) { TRESPASS(); } |