Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4275065e authored by Ronghua Wu's avatar Ronghua Wu Committed by Android (Google) Code Review
Browse files

Merge "DO NOT MERGE libmediaplayerservice: set priority and operating rate for...

Merge "DO NOT MERGE libmediaplayerservice: set priority and operating rate for the codec used by nuplayer." into mnc-dev
parents c721e71f 8db8813d
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -192,6 +192,7 @@ private:
    List<sp<AMessage> > mDeferredQueue;

    bool mSentFormat;
    bool mIsVideo;
    bool mIsEncoder;
    bool mUseMetadataOnEncoderOutput;
    bool mShutdownInProgress;
+19 −0
Original line number Diff line number Diff line
@@ -634,6 +634,17 @@ void NuPlayer::onMessageReceived(const sp<AMessage> &msg) {
            if (mRenderer != NULL) {
                mRenderer->setPlaybackRate(mPlaybackRate);
            }

            if (mVideoDecoder != NULL) {
                sp<MetaData> meta = getFileMeta();
                int32_t rate;
                if (meta != NULL && meta->findInt32(kKeyFrameRate, &rate) && rate > 0) {
                    sp<AMessage> params = new AMessage();
                    params->setFloat("operating-rate", rate * mPlaybackRate);
                    mVideoDecoder->setParameters(params);
                }
            }

            break;
        }

@@ -1249,6 +1260,8 @@ status_t NuPlayer::instantiateDecoder(bool audio, sp<DecoderBase> *decoder) {
        return -EWOULDBLOCK;
    }

    format->setInt32("priority", 0 /* realtime */);

    if (!audio) {
        AString mime;
        CHECK(format->findString("mime", &mime));
@@ -1265,6 +1278,12 @@ status_t NuPlayer::instantiateDecoder(bool audio, sp<DecoderBase> *decoder) {
        if (mSourceFlags & Source::FLAG_PROTECTED) {
            format->setInt32("protected", true);
        }

        sp<MetaData> meta = getFileMeta();
        int32_t rate;
        if (meta != NULL && meta->findInt32(kKeyFrameRate, &rate) && rate > 0) {
            format->setFloat("operating-rate", rate * mPlaybackRate);
        }
    }

    if (audio) {
+8 −0
Original line number Diff line number Diff line
@@ -252,6 +252,14 @@ void NuPlayer::Decoder::onConfigure(const sp<AMessage> &format) {
    mResumePending = false;
}

void NuPlayer::Decoder::onSetParameters(const sp<AMessage> &params) {
    if (mCodec == NULL) {
        ALOGW("onSetParameters called before codec is created.");
        return;
    }
    mCodec->setParameters(params);
}

void NuPlayer::Decoder::onSetRenderer(const sp<Renderer> &renderer) {
    bool hadNoRenderer = (mRenderer == NULL);
    mRenderer = renderer;
+1 −0
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ protected:
    virtual void onMessageReceived(const sp<AMessage> &msg);

    virtual void onConfigure(const sp<AMessage> &format);
    virtual void onSetParameters(const sp<AMessage> &params);
    virtual void onSetRenderer(const sp<Renderer> &renderer);
    virtual void onGetInputBuffers(Vector<sp<ABuffer> > *dstBuffers);
    virtual void onResume(bool notifyComplete);
+14 −0
Original line number Diff line number Diff line
@@ -70,6 +70,12 @@ void NuPlayer::DecoderBase::init() {
    mDecoderLooper->registerHandler(this);
}

void NuPlayer::DecoderBase::setParameters(const sp<AMessage> &params) {
    sp<AMessage> msg = new AMessage(kWhatSetParameters, this);
    msg->setMessage("params", params);
    msg->post();
}

void NuPlayer::DecoderBase::setRenderer(const sp<Renderer> &renderer) {
    sp<AMessage> msg = new AMessage(kWhatSetRenderer, this);
    msg->setObject("renderer", renderer);
@@ -123,6 +129,14 @@ void NuPlayer::DecoderBase::onMessageReceived(const sp<AMessage> &msg) {
            break;
        }

        case kWhatSetParameters:
        {
            sp<AMessage> params;
            CHECK(msg->findMessage("params", &params));
            onSetParameters(params);
            break;
        }

        case kWhatSetRenderer:
        {
            sp<RefBase> obj;
Loading