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

Commit 933a4d33 authored by Robert Shih's avatar Robert Shih Committed by Lajos Molnar
Browse files

Added support to query ACodec whether adaptive playback is enabled.

Bug: 11854054
Change-Id: I6b0308aa8550c643706959277e46dad586c37297
parent f7e34cfc
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -67,6 +67,8 @@ struct ACodec : public AHierarchicalStateMachine {

    void signalRequestIDRFrame();

    bool isConfiguredForAdaptivePlayback() { return mIsConfiguredForAdaptivePlayback; }

    struct PortDescription : public RefBase {
        size_t countBuffers();
        IOMX::buffer_id bufferIDAt(size_t index) const;
@@ -187,6 +189,7 @@ private:
    bool mIsEncoder;
    bool mUseMetadataOnEncoderOutput;
    bool mShutdownInProgress;
    bool mIsConfiguredForAdaptivePlayback;

    // If "mKeepComponentAllocated" we only transition back to Loaded state
    // and do not release the component instance.
+5 −0
Original line number Diff line number Diff line
@@ -363,6 +363,7 @@ ACodec::ACodec()
      mIsEncoder(false),
      mUseMetadataOnEncoderOutput(false),
      mShutdownInProgress(false),
      mIsConfiguredForAdaptivePlayback(false),
      mEncoderDelay(0),
      mEncoderPadding(0),
      mChannelMaskPresent(false),
@@ -1115,6 +1116,7 @@ status_t ACodec::configureCodec(
    int32_t haveNativeWindow = msg->findObject("native-window", &obj) &&
            obj != NULL;
    mStoreMetaDataInOutputBuffers = false;
    mIsConfiguredForAdaptivePlayback = false;
    if (!encoder && video && haveNativeWindow) {
        err = mOMX->storeMetaDataInBuffers(mNode, kPortIndexOutput, OMX_TRUE);
        if (err != OK) {
@@ -1159,12 +1161,14 @@ status_t ACodec::configureCodec(
                ALOGW_IF(err != OK,
                        "[%s] prepareForAdaptivePlayback failed w/ err %d",
                        mComponentName.c_str(), err);
                mIsConfiguredForAdaptivePlayback = (err == OK);
            }
            // allow failure
            err = OK;
        } else {
            ALOGV("[%s] storeMetaDataInBuffers succeeded", mComponentName.c_str());
            mStoreMetaDataInOutputBuffers = true;
            mIsConfiguredForAdaptivePlayback = true;
        }

        int32_t push;
@@ -3702,6 +3706,7 @@ void ACodec::LoadedState::stateEntered() {
    mCodec->mDequeueCounter = 0;
    mCodec->mMetaDataBuffersToSubmit = 0;
    mCodec->mRepeatFrameDelayUs = -1ll;
    mCodec->mIsConfiguredForAdaptivePlayback = false;

    if (mCodec->mShutdownInProgress) {
        bool keepComponentAllocated = mCodec->mKeepComponentAllocated;