From 6b7d2ed40c4e7f7bac824c44795e2cd83459844c Mon Sep 17 00:00:00 2001 From: Wei Jia Date: Mon, 10 Aug 2015 15:11:54 -0700 Subject: NuPlayer: set video surface directly when NuPlayer has not started yet. Bug: 22119956 Change-Id: Ie174f4fc495ab8418993ff7887aaa6ae721c6008 --- media/libmediaplayerservice/nuplayer/NuPlayer.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'media/libmediaplayerservice') diff --git a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp index 214315f..77b9799 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp @@ -632,10 +632,13 @@ void NuPlayer::onMessageReceived(const sp &msg) { ALOGD("onSetVideoSurface(%p, %s video decoder)", surface.get(), - (mSource != NULL && mSource->getFormat(false /* audio */) != NULL + (mSource != NULL && mStarted && mSource->getFormat(false /* audio */) != NULL && mVideoDecoder != NULL) ? "have" : "no"); - if (mSource == NULL || mSource->getFormat(false /* audio */) == NULL + // Need to check mStarted before calling mSource->getFormat because NuPlayer might + // be in preparing state and it could take long time. + // When mStarted is true, mSource must have been set. + if (mSource == NULL || !mStarted || mSource->getFormat(false /* audio */) == NULL // NOTE: mVideoDecoder's mSurface is always non-null || (mVideoDecoder != NULL && mVideoDecoder->setVideoSurface(surface) == OK)) { performSetSurface(surface); -- cgit v1.1