diff options
author | Manisha Jajoo <manisha.jajoo@ittiam.com> | 2019-03-11 13:22:09 -0700 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2019-03-11 13:22:09 -0700 |
commit | 70de321e05b3904d61e2f40dcf92074762ebefa5 (patch) | |
tree | 89ff8449a79b47a1ee056aa06dbaf59cb7bc9458 /media | |
parent | 0bfb124a97f52dba054248dff6a85ccc2f4a31ef (diff) | |
parent | 880ef39899d8c94eec21948a6edf6ab59b67b988 (diff) | |
download | platform_hardware_interfaces-70de321e05b3904d61e2f40dcf92074762ebefa5.tar.gz platform_hardware_interfaces-70de321e05b3904d61e2f40dcf92074762ebefa5.tar.bz2 platform_hardware_interfaces-70de321e05b3904d61e2f40dcf92074762ebefa5.zip |
omx:component: add support for tunneled components in ComponentTest am: 4609857ee4 am: f31fd7f8cb
am: 880ef39899
Change-Id: I268104aa25c7ed3305d607e71e9ba66dc268f489
Diffstat (limited to 'media')
3 files changed, 58 insertions, 10 deletions
diff --git a/media/omx/1.0/vts/functional/common/media_hidl_test_common.cpp b/media/omx/1.0/vts/functional/common/media_hidl_test_common.cpp index 88a9e2612e..f299e36f23 100644 --- a/media/omx/1.0/vts/functional/common/media_hidl_test_common.cpp +++ b/media/omx/1.0/vts/functional/common/media_hidl_test_common.cpp @@ -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 - status = observer->dequeueMessage(&msg, DEFAULT_TIMEOUT, iBuffer, oBuffer); - ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::TIMED_OUT); + 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 - status = observer->dequeueMessage(&msg, DEFAULT_TIMEOUT, iBuffer, oBuffer); - ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::TIMED_OUT); + 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 - status = observer->dequeueMessage(&msg, DEFAULT_TIMEOUT, iBuffer, oBuffer); - ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::TIMED_OUT); + 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 - status = observer->dequeueMessage(&msg, DEFAULT_TIMEOUT, iBuffer, oBuffer); - ASSERT_EQ(status, android::hardware::media::omx::V1_0::Status::TIMED_OUT); + 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); diff --git a/media/omx/1.0/vts/functional/component/VtsHalMediaOmxV1_0TargetComponentTest.cpp b/media/omx/1.0/vts/functional/component/VtsHalMediaOmxV1_0TargetComponentTest.cpp index 4ddc833ef7..1c1d39b4e0 100644 --- a/media/omx/1.0/vts/functional/component/VtsHalMediaOmxV1_0TargetComponentTest.cpp +++ b/media/omx/1.0/vts/functional/component/VtsHalMediaOmxV1_0TargetComponentTest.cpp @@ -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); diff --git a/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp b/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp index 1db9f7531a..df048c6bf2 100644 --- a/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp +++ b/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp @@ -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 { |