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

Commit 4609857e authored by Manisha Jajoo's avatar Manisha Jajoo Committed by Pawin Vongmasa
Browse files

omx:component: add support for tunneled components in ComponentTest

Test: make vts -j99 BUILD_GOOGLE_VTS=true TARGET_PRODUCT=aosp_arm64 \
&& vts-tradefed run commandAndExit vts \
--skip-all-system-status-check --primary-abi-only \
--skip-preconditions --module VtsHalMediaOmxV1_0Host \
-l INFO

bug: 70933963

Change-Id: I5695820b225041f5b764506cdafacf7c95d836aa
parent 6f6fe9a5
Loading
Loading
Loading
Loading
+30 −8
Original line number Diff line number Diff line
@@ -387,17 +387,28 @@ void changeStateLoadedtoIdle(sp<IOmxNode> omxNode, sp<CodecObserver> observer,
                                  OMX_StateIdle);
    ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::OK);

    OMX_PARAM_PORTDEFINITIONTYPE portDefInput;
    OMX_PARAM_PORTDEFINITIONTYPE portDefOutput;
    status = getPortParam(omxNode, OMX_IndexParamPortDefinition, kPortIndexInput, &portDefInput);
    EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
    status = getPortParam(omxNode, OMX_IndexParamPortDefinition, kPortIndexOutput, &portDefOutput);
    EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);

    // Dont switch states until the ports are populated
    if (portDefInput.nBufferCountActual || portDefOutput.nBufferCountActual) {
        status = observer->dequeueMessage(&msg, DEFAULT_TIMEOUT, iBuffer, oBuffer);
        ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::TIMED_OUT);
    }

    // allocate buffers on input port
    ASSERT_NO_FATAL_FAILURE(allocatePortBuffers(
        omxNode, iBuffer, kPortIndexInput, pm[0], allocGrap));

    // Dont switch states until the ports are populated
    if (portDefOutput.nBufferCountActual) {
        status = observer->dequeueMessage(&msg, DEFAULT_TIMEOUT, iBuffer, oBuffer);
        ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::TIMED_OUT);
    }

    // allocate buffers on output port
    ASSERT_NO_FATAL_FAILURE(allocatePortBuffers(
@@ -430,9 +441,18 @@ void changeStateIdletoLoaded(sp<IOmxNode> omxNode, sp<CodecObserver> observer,
                                  OMX_StateLoaded);
    ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::OK);

    OMX_PARAM_PORTDEFINITIONTYPE portDefInput;
    OMX_PARAM_PORTDEFINITIONTYPE portDefOutput;
    status = getPortParam(omxNode, OMX_IndexParamPortDefinition, kPortIndexInput, &portDefInput);
    EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
    status = getPortParam(omxNode, OMX_IndexParamPortDefinition, kPortIndexOutput, &portDefOutput);
    EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);

    // dont change state until all buffers are freed
    if (portDefInput.nBufferCountActual || portDefOutput.nBufferCountActual) {
        status = observer->dequeueMessage(&msg, DEFAULT_TIMEOUT, iBuffer, oBuffer);
        ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::TIMED_OUT);
    }

    for (size_t i = 0; i < iBuffer->size(); ++i) {
        status = omxNode->freeBuffer(kPortIndexInput, (*iBuffer)[i].id);
@@ -440,8 +460,10 @@ void changeStateIdletoLoaded(sp<IOmxNode> omxNode, sp<CodecObserver> observer,
    }

    // dont change state until all buffers are freed
    if (portDefOutput.nBufferCountActual) {
        status = observer->dequeueMessage(&msg, DEFAULT_TIMEOUT, iBuffer, oBuffer);
        ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::TIMED_OUT);
    }

    for (size_t i = 0; i < oBuffer->size(); ++i) {
        status = omxNode->freeBuffer(kPortIndexOutput, (*oBuffer)[i].id);
+18 −2
Original line number Diff line number Diff line
@@ -115,6 +115,7 @@ class ComponentHidlTest : public ::testing::VtsHalHidlTargetTestBase {
        }
        if (compClass == unknown_class) disableTest = true;
        isSecure = false;
        mTunnel = false;
        size_t suffixLen = strlen(".secure");
        if (strlen(gEnv->getComponent().c_str()) >= suffixLen) {
            isSecure =
@@ -122,6 +123,18 @@ class ComponentHidlTest : public ::testing::VtsHalHidlTargetTestBase {
                            strlen(gEnv->getComponent().c_str()) - suffixLen,
                        ".secure");
        }
        if (compClass == video_decoder) {
            omxNode->configureVideoTunnelMode(
                1, OMX_TRUE, 0,
                [&](android::hardware::media::omx::V1_0::Status _s,
                    const ::android::hardware::hidl_handle& sidebandHandle) {
                    (void)sidebandHandle;
                    if (_s == android::hardware::media::omx::V1_0::Status::OK)
                        this->mTunnel = true;
                });
        }
        // NOTES: secure components are not covered in these tests.
        // we are disabling tests for them
        if (disableTest) std::cout << "[   WARN   ] Test Disabled \n";
    }

@@ -149,6 +162,7 @@ class ComponentHidlTest : public ::testing::VtsHalHidlTargetTestBase {
    sp<CodecObserver> observer;
    sp<IOmxNode> omxNode;
    standardCompClass compClass;
    bool mTunnel;
    bool isSecure;
    bool disableTest;

@@ -991,7 +1005,8 @@ TEST_F(ComponentHidlTest, PortEnableDisable_Idle) {
    ASSERT_NO_FATAL_FAILURE(
        changeStateLoadedtoIdle(omxNode, observer, &pBuffer[0], &pBuffer[1],
                                kPortIndexInput, kPortIndexOutput, portMode));
    for (size_t i = portBase; i < portBase + 2; i++) {
    int range = mTunnel ? 1 : 2;
    for (size_t i = portBase; i < portBase + range; i++) {
        status =
            omxNode->sendCommand(toRawCommandType(OMX_CommandPortDisable), i);
        ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::OK);
@@ -1104,7 +1119,8 @@ TEST_F(ComponentHidlTest, PortEnableDisable_Execute) {
            dispatchOutputBuffer(omxNode, &pBuffer[1], i, portMode[1]));
    }

    for (size_t i = portBase; i < portBase + 2; i++) {
    int range = mTunnel ? 1 : 2;
    for (size_t i = portBase; i < portBase + range; i++) {
        status =
            omxNode->sendCommand(toRawCommandType(OMX_CommandPortDisable), i);
        ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::OK);
+10 −0
Original line number Diff line number Diff line
@@ -153,7 +153,17 @@ class VideoDecHidlTest : public ::testing::VtsHalHidlTargetTestBase {
                        ".secure");
        }
        if (isSecure) disableTest = true;
        omxNode->configureVideoTunnelMode(
            1, OMX_TRUE, 0,
            [&](android::hardware::media::omx::V1_0::Status _s,
                const ::android::hardware::hidl_handle& sidebandHandle) {
                (void)sidebandHandle;
                if (_s == android::hardware::media::omx::V1_0::Status::OK)
                    this->disableTest = true;
            });
        if (disableTest) std::cout << "[   WARN   ] Test Disabled \n";
        // NOTES: secure and tunneled components are not covered in these tests.
        // we are disabling tests for them
    }

    virtual void TearDown() override {