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

Commit 570aa244 authored by Hongguang Chen's avatar Hongguang Chen Committed by Automerger Merge Worker
Browse files

Merge "ACodec: Handle HDR10+ metadata at OutputPortSettingsChangedState" am:...

Merge "ACodec: Handle HDR10+ metadata at OutputPortSettingsChangedState" am: f7cda371 am: c5c1c114

Original change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1371678

Change-Id: I80a46c578099167d073df2b9f047231c057776d4
parents 9980fec0 c5c1c114
Loading
Loading
Loading
Loading
+33 −3
Original line number Diff line number Diff line
@@ -8268,13 +8268,34 @@ bool ACodec::OutputPortSettingsChangedState::onMessageReceived(
            FALLTHROUGH_INTENDED;
        }
        case kWhatResume:
        case kWhatSetParameters:
        {
            if (msg->what() == kWhatResume) {
            ALOGV("[%s] Deferring resume", mCodec->mComponentName.c_str());

            mCodec->deferMessage(msg);
            handled = true;
            break;
        }

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

            sp<ABuffer> hdr10PlusInfo;
            if (params->findBuffer("hdr10-plus-info", &hdr10PlusInfo)) {
                if (hdr10PlusInfo != nullptr && hdr10PlusInfo->size() > 0) {
                    (void)mCodec->setHdr10PlusInfo(hdr10PlusInfo);
                }
                params->removeEntryAt(params->findEntryByName("hdr10-plus-info"));

                if (params->countEntries() == 0) {
                    msg->removeEntryAt(msg->findEntryByName("params"));
                }
            }

            if (msg->countEntries() > 0) {
                mCodec->deferMessage(msg);
            }
            handled = true;
            break;
        }
@@ -8389,6 +8410,15 @@ bool ACodec::OutputPortSettingsChangedState::onOMXEvent(
            return false;
        }

        case OMX_EventConfigUpdate:
        {
            CHECK_EQ(data1, (OMX_U32)kPortIndexOutput);

            mCodec->onConfigUpdate((OMX_INDEXTYPE)data2);

            return true;
        }

        default:
            return BaseState::onOMXEvent(event, data1, data2);
    }