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

Commit 3d248489 authored by Xiao Huang's avatar Xiao Huang
Browse files

Add a boolean for peek enabled

Peek state is always changed to kEnabledNoBuffer after start()
and flush(), if it was not in legacy mode. This requires app
to always disable peek after start or flush if it wants to.

The fix is Adding a boolean to indicate if peek is enabled and
set the state accordingly in start() and flush().

Test: atest DecodeOnlyTest
Bug: 287456023
Change-Id: I5b4f0ea1c1740ba94f59eaf869bd31ae049127c0
parent d49d1480
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -1199,6 +1199,7 @@ MediaCodec::MediaCodec(
      mTunneledInputHeight(0),
      mTunneled(false),
      mTunnelPeekState(TunnelPeekState::kLegacyMode),
      mTunnelPeekEnabled(false),
      mHaveInputSurface(false),
      mHavePendingInputBuffers(false),
      mCpuBoostRequested(false),
@@ -1744,6 +1745,7 @@ void MediaCodec::updateTunnelPeek(const sp<AMessage> &msg) {

    TunnelPeekState previousState = mTunnelPeekState;
    if(tunnelPeek == 0){
        mTunnelPeekEnabled = false;
        switch (mTunnelPeekState) {
            case TunnelPeekState::kLegacyMode:
                msg->setInt32("android._tunnel-peek-set-legacy", 0);
@@ -1759,6 +1761,7 @@ void MediaCodec::updateTunnelPeek(const sp<AMessage> &msg) {
                return;
        }
    } else {
        mTunnelPeekEnabled = true;
        switch (mTunnelPeekState) {
            case TunnelPeekState::kLegacyMode:
                msg->setInt32("android._tunnel-peek-set-legacy", 0);
@@ -4945,10 +4948,11 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) {
            CHECK(msg->senderAwaitsResponse(&replyID));
            TunnelPeekState previousState = mTunnelPeekState;
            if (previousState != TunnelPeekState::kLegacyMode) {
                mTunnelPeekState = TunnelPeekState::kEnabledNoBuffer;
                mTunnelPeekState = mTunnelPeekEnabled ? TunnelPeekState::kEnabledNoBuffer :
                    TunnelPeekState::kDisabledNoBuffer;
                ALOGV("TunnelPeekState: %s -> %s",
                        asString(previousState),
                        asString(TunnelPeekState::kEnabledNoBuffer));
                        asString(mTunnelPeekState));
            }

            mReplyID = replyID;
@@ -5447,10 +5451,11 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) {
            returnBuffersToCodec();
            TunnelPeekState previousState = mTunnelPeekState;
            if (previousState != TunnelPeekState::kLegacyMode) {
                mTunnelPeekState = TunnelPeekState::kEnabledNoBuffer;
                mTunnelPeekState = mTunnelPeekEnabled ? TunnelPeekState::kEnabledNoBuffer :
                    TunnelPeekState::kDisabledNoBuffer;
                ALOGV("TunnelPeekState: %s -> %s",
                        asString(previousState),
                        asString(TunnelPeekState::kEnabledNoBuffer));
                        asString(mTunnelPeekState));
            }
            break;
        }
@@ -5993,7 +5998,7 @@ status_t MediaCodec::onQueueInputBuffer(const sp<AMessage> &msg) {
        if (isBufferDecodeOnly) {
            buffer->meta()->setInt32("decode-only", true);
        }
        if (mTunneled && !isBufferDecodeOnly) {
        if (mTunneled && !isBufferDecodeOnly && !(flags & BUFFER_FLAG_CODECCONFIG)) {
            TunnelPeekState previousState = mTunnelPeekState;
            switch(mTunnelPeekState){
                case TunnelPeekState::kEnabledNoBuffer:
+1 −0
Original line number Diff line number Diff line
@@ -560,6 +560,7 @@ private:
    int32_t mTunneledInputHeight;
    bool mTunneled;
    TunnelPeekState mTunnelPeekState;
    bool mTunnelPeekEnabled;

    sp<IDescrambler> mDescrambler;