Loading media/libmediaplayerservice/nuplayer/NuPlayer.cpp +28 −10 Original line number Diff line number Diff line Loading @@ -704,9 +704,8 @@ void NuPlayer::onMessageReceived(const sp<AMessage> &msg) { } if (mVideoDecoder != NULL) { sp<MetaData> meta = getFileMeta(); int32_t rate; if (meta != NULL && meta->findInt32(kKeyFrameRate, &rate) && rate > 0) { float rate = getFrameRate(); if (rate > 0) { sp<AMessage> params = new AMessage(); params->setFloat("operating-rate", rate * mPlaybackSettings.mSpeed); mVideoDecoder->setParameters(params); Loading Loading @@ -1265,10 +1264,8 @@ void NuPlayer::onStart() { return; } sp<MetaData> meta = getFileMeta(); int32_t rate; if (meta != NULL && meta->findInt32(kKeyFrameRate, &rate) && rate > 0) { float rate = getFrameRate(); if (rate > 0) { mRenderer->setVideoFrameRate(rate); } Loading Loading @@ -1426,9 +1423,8 @@ status_t NuPlayer::instantiateDecoder(bool audio, sp<DecoderBase> *decoder) { format->setInt32("protected", true); } sp<MetaData> meta = getFileMeta(); int32_t rate; if (meta != NULL && meta->findInt32(kKeyFrameRate, &rate) && rate > 0) { float rate = getFrameRate(); if (rate > 0) { format->setFloat("operating-rate", rate * mPlaybackSettings.mSpeed); } } Loading Loading @@ -1702,6 +1698,28 @@ sp<MetaData> NuPlayer::getFileMeta() { return mSource->getFileFormatMeta(); } float NuPlayer::getFrameRate() { sp<MetaData> meta = mSource->getFormatMeta(false /* audio */); if (meta == NULL) { return 0; } int32_t rate; if (!meta->findInt32(kKeyFrameRate, &rate)) { // fall back to try file meta sp<MetaData> fileMeta = getFileMeta(); if (fileMeta == NULL) { ALOGW("source has video meta but not file meta"); return -1; } int32_t fileMetaRate; if (!fileMeta->findInt32(kKeyFrameRate, &fileMetaRate)) { return -1; } return fileMetaRate; } return rate; } void NuPlayer::schedulePollDuration() { sp<AMessage> msg = new AMessage(kWhatPollDuration, this); msg->setInt32("generation", mPollDurationGeneration); Loading media/libmediaplayerservice/nuplayer/NuPlayer.h +1 −0 Original line number Diff line number Diff line Loading @@ -80,6 +80,7 @@ struct NuPlayer : public AHandler { void getStats(int64_t *mNumFramesTotal, int64_t *mNumFramesDropped); sp<MetaData> getFileMeta(); float getFrameRate(); protected: virtual ~NuPlayer(); Loading Loading
media/libmediaplayerservice/nuplayer/NuPlayer.cpp +28 −10 Original line number Diff line number Diff line Loading @@ -704,9 +704,8 @@ void NuPlayer::onMessageReceived(const sp<AMessage> &msg) { } if (mVideoDecoder != NULL) { sp<MetaData> meta = getFileMeta(); int32_t rate; if (meta != NULL && meta->findInt32(kKeyFrameRate, &rate) && rate > 0) { float rate = getFrameRate(); if (rate > 0) { sp<AMessage> params = new AMessage(); params->setFloat("operating-rate", rate * mPlaybackSettings.mSpeed); mVideoDecoder->setParameters(params); Loading Loading @@ -1265,10 +1264,8 @@ void NuPlayer::onStart() { return; } sp<MetaData> meta = getFileMeta(); int32_t rate; if (meta != NULL && meta->findInt32(kKeyFrameRate, &rate) && rate > 0) { float rate = getFrameRate(); if (rate > 0) { mRenderer->setVideoFrameRate(rate); } Loading Loading @@ -1426,9 +1423,8 @@ status_t NuPlayer::instantiateDecoder(bool audio, sp<DecoderBase> *decoder) { format->setInt32("protected", true); } sp<MetaData> meta = getFileMeta(); int32_t rate; if (meta != NULL && meta->findInt32(kKeyFrameRate, &rate) && rate > 0) { float rate = getFrameRate(); if (rate > 0) { format->setFloat("operating-rate", rate * mPlaybackSettings.mSpeed); } } Loading Loading @@ -1702,6 +1698,28 @@ sp<MetaData> NuPlayer::getFileMeta() { return mSource->getFileFormatMeta(); } float NuPlayer::getFrameRate() { sp<MetaData> meta = mSource->getFormatMeta(false /* audio */); if (meta == NULL) { return 0; } int32_t rate; if (!meta->findInt32(kKeyFrameRate, &rate)) { // fall back to try file meta sp<MetaData> fileMeta = getFileMeta(); if (fileMeta == NULL) { ALOGW("source has video meta but not file meta"); return -1; } int32_t fileMetaRate; if (!fileMeta->findInt32(kKeyFrameRate, &fileMetaRate)) { return -1; } return fileMetaRate; } return rate; } void NuPlayer::schedulePollDuration() { sp<AMessage> msg = new AMessage(kWhatPollDuration, this); msg->setInt32("generation", mPollDurationGeneration); Loading
media/libmediaplayerservice/nuplayer/NuPlayer.h +1 −0 Original line number Diff line number Diff line Loading @@ -80,6 +80,7 @@ struct NuPlayer : public AHandler { void getStats(int64_t *mNumFramesTotal, int64_t *mNumFramesDropped); sp<MetaData> getFileMeta(); float getFrameRate(); protected: virtual ~NuPlayer(); Loading