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
This commit is contained in:
parent
6f6fe9a5e2
commit
4609857ee4
3 changed files with 58 additions and 10 deletions
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in a new issue