Merge "bug fix: handle multiple port settings change events signalled at once" into oc-dev
diff --git a/audio/2.0/config/audio_policy_configuration.xsd b/audio/2.0/config/audio_policy_configuration.xsd
index c94da80..eb59152 100644
--- a/audio/2.0/config/audio_policy_configuration.xsd
+++ b/audio/2.0/config/audio_policy_configuration.xsd
@@ -365,10 +365,10 @@
</xs:restriction>
</xs:simpleType>
<xs:complexType name="profile">
- <xs:attribute name="name" type="xs:token" use="required"/>
- <xs:attribute name="format" type="audioFormat" use="required"/>
- <xs:attribute name="samplingRates" type="samplingRates" use="required"/>
- <xs:attribute name="channelMasks" type="channelMask" use="required"/>
+ <xs:attribute name="name" type="xs:token" use="optional"/>
+ <xs:attribute name="format" type="audioFormat" use="optional"/>
+ <xs:attribute name="samplingRates" type="samplingRates" use="optional"/>
+ <xs:attribute name="channelMasks" type="channelMask" use="optional"/>
</xs:complexType>
<xs:simpleType name="gainMode">
<xs:restriction base="xs:string">
diff --git a/audio/2.0/vts/functional/ValidateAudioConfiguration.cpp b/audio/2.0/vts/functional/ValidateAudioConfiguration.cpp
index 01324c8..5fc1b3d 100644
--- a/audio/2.0/vts/functional/ValidateAudioConfiguration.cpp
+++ b/audio/2.0/vts/functional/ValidateAudioConfiguration.cpp
@@ -14,9 +14,24 @@
* limitations under the License.
*/
+#include <string>
+#include <unistd.h>
+
#include "utility/ValidateXml.h"
TEST(CheckConfig, audioPolicyConfigurationValidation) {
- ASSERT_VALID_XML("/vendor/etc/audio_policy_configuration.xml",
- "/data/local/tmp/audio_policy_configuration.xsd");
+ const char* configName = "audio_policy_configuration.xml";
+ const char* possibleConfigLocations[] = {"/odm/etc", "/vendor/etc", "/system/etc"};
+ const char* configSchemaPath = "/data/local/tmp/audio_policy_configuration.xsd";
+
+ bool found = false;
+ for (std::string folder : possibleConfigLocations) {
+ const auto configPath = folder + '/' + configName;
+ if (access(configPath.c_str(), R_OK) == 0) {
+ ASSERT_FALSE(found) << "Multiple " << configName << " found in "
+ << ::testing::PrintToString(possibleConfigLocations);
+ found = true;
+ ASSERT_VALID_XML(configPath.c_str(), configSchemaPath);
+ }
+ }
}
diff --git a/drm/1.0/vts/functional/drm_hal_vendor_test.cpp b/drm/1.0/vts/functional/drm_hal_vendor_test.cpp
index 5d4e7d0..1be362a 100644
--- a/drm/1.0/vts/functional/drm_hal_vendor_test.cpp
+++ b/drm/1.0/vts/functional/drm_hal_vendor_test.cpp
@@ -1598,9 +1598,8 @@
#endif
gVendorModules = new drm_vts::VendorModules(kModulePath);
if (gVendorModules->getPathList().size() == 0) {
- std::cerr << "No vendor modules found in " << kModulePath <<
- ", exiting" << std::endl;
- exit(-1);
+ std::cerr << "WARNING: No vendor modules found in " << kModulePath <<
+ ", all vendor tests will be skipped" << std::endl;
}
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
diff --git a/graphics/composer/2.1/vts/functional/VtsHalGraphicsComposerTestUtils.cpp b/graphics/composer/2.1/vts/functional/VtsHalGraphicsComposerTestUtils.cpp
index 33cf84c..68aede2 100644
--- a/graphics/composer/2.1/vts/functional/VtsHalGraphicsComposerTestUtils.cpp
+++ b/graphics/composer/2.1/vts/functional/VtsHalGraphicsComposerTestUtils.cpp
@@ -290,6 +290,11 @@
: IComposerClient::Vsync::DISABLE;
Error error = mClient->setVsyncEnabled(display, vsync);
ASSERT_EQ(Error::NONE, error) << "failed to set vsync mode";
+
+ // give the hwbinder thread some time to handle any pending vsync callback
+ if (!enabled) {
+ usleep(5 * 1000);
+ }
}
} // namespace tests
diff --git a/graphics/composer/2.1/vts/functional/VtsHalGraphicsComposerV2_1TargetTest.cpp b/graphics/composer/2.1/vts/functional/VtsHalGraphicsComposerV2_1TargetTest.cpp
index 387222f..4261d00 100644
--- a/graphics/composer/2.1/vts/functional/VtsHalGraphicsComposerV2_1TargetTest.cpp
+++ b/graphics/composer/2.1/vts/functional/VtsHalGraphicsComposerV2_1TargetTest.cpp
@@ -118,7 +118,7 @@
// the set of all currently connected displays
std::unordered_set<Display> mDisplays;
// true only when vsync is enabled
- bool mVsyncAllowed = false;
+ bool mVsyncAllowed = true;
// track invalid callbacks
int mInvalidHotplugCount = 0;
@@ -137,6 +137,10 @@
// assume the first display is primary and is never removed
mPrimaryDisplay = waitForFirstDisplay();
+
+ // explicitly disable vsync
+ mComposerClient->setVsyncEnabled(mPrimaryDisplay, false);
+ mComposerCallback->setVsyncAllowed(false);
}
void TearDown() override {
diff --git a/media/omx/1.0/vts/functional/audio/VtsHalMediaOmxV1_0TargetAudioDecTest.cpp b/media/omx/1.0/vts/functional/audio/VtsHalMediaOmxV1_0TargetAudioDecTest.cpp
index 0c698da..9e5dde1 100644
--- a/media/omx/1.0/vts/functional/audio/VtsHalMediaOmxV1_0TargetAudioDecTest.cpp
+++ b/media/omx/1.0/vts/functional/audio/VtsHalMediaOmxV1_0TargetAudioDecTest.cpp
@@ -755,13 +755,13 @@
int bytesCount = 0;
uint32_t flags = 0;
uint32_t timestamp = 0;
- timestampDevTest = true;
+ timestampDevTest = false;
while (1) {
if (!(eleInfo >> bytesCount)) break;
eleInfo >> flags;
eleInfo >> timestamp;
Info.push_back({bytesCount, flags, timestamp});
- if (flags != OMX_BUFFERFLAG_CODECCONFIG)
+ if (timestampDevTest && (flags != OMX_BUFFERFLAG_CODECCONFIG))
timestampUslist.push_back(timestamp);
}
eleInfo.close();
@@ -803,7 +803,7 @@
packedArgs audioArgs = {eEncoding, compName};
testEOS(omxNode, observer, &iBuffer, &oBuffer, false, eosFlag, nullptr,
portReconfiguration, kPortIndexInput, kPortIndexOutput, &audioArgs);
- EXPECT_EQ(timestampUslist.empty(), true);
+ if (timestampDevTest) EXPECT_EQ(timestampUslist.empty(), true);
// set state to idle
changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
// set state to executing
diff --git a/media/omx/1.0/vts/functional/audio/media_audio_hidl_test_common.cpp b/media/omx/1.0/vts/functional/audio/media_audio_hidl_test_common.cpp
index 7240964..4c68219 100644
--- a/media/omx/1.0/vts/functional/audio/media_audio_hidl_test_common.cpp
+++ b/media/omx/1.0/vts/functional/audio/media_audio_hidl_test_common.cpp
@@ -46,47 +46,6 @@
#include <media_hidl_test_common.h>
#include <memory>
-Return<android::hardware::media::omx::V1_0::Status> setAudioPortFormat(
- sp<IOmxNode> omxNode, OMX_U32 portIndex, OMX_AUDIO_CODINGTYPE eEncoding) {
- OMX_U32 index = 0;
- OMX_AUDIO_PARAM_PORTFORMATTYPE portFormat;
- std::vector<OMX_AUDIO_CODINGTYPE> arrEncoding;
- android::hardware::media::omx::V1_0::Status status;
-
- while (1) {
- portFormat.nIndex = index;
- status = getPortParam(omxNode, OMX_IndexParamAudioPortFormat, portIndex,
- &portFormat);
- if (status != ::android::hardware::media::omx::V1_0::Status::OK) break;
- arrEncoding.push_back(portFormat.eEncoding);
- index++;
- if (index == 512) {
- // enumerated way too many formats, highly unusual for this to
- // happen.
- EXPECT_LE(index, 512U)
- << "Expecting OMX_ErrorNoMore but not received";
- break;
- }
- }
- if (!index) return status;
- for (index = 0; index < arrEncoding.size(); index++) {
- if (arrEncoding[index] == eEncoding) {
- portFormat.eEncoding = arrEncoding[index];
- break;
- }
- }
- if (index == arrEncoding.size()) {
- ALOGE("setting default Port format %x", (int)arrEncoding[0]);
- portFormat.eEncoding = arrEncoding[0];
- }
- // In setParam call nIndex shall be ignored as per omx-il specification.
- // see how this holds up by corrupting nIndex
- portFormat.nIndex = RANDOM_INDEX;
- status = setPortParam(omxNode, OMX_IndexParamAudioPortFormat, portIndex,
- &portFormat);
- return status;
-}
-
void enumerateProfile(sp<IOmxNode> omxNode, OMX_U32 portIndex,
std::vector<int32_t>* arrProfile) {
android::hardware::media::omx::V1_0::Status status;
diff --git a/media/omx/1.0/vts/functional/audio/media_audio_hidl_test_common.h b/media/omx/1.0/vts/functional/audio/media_audio_hidl_test_common.h
index 70142f2..08b3d9c 100644
--- a/media/omx/1.0/vts/functional/audio/media_audio_hidl_test_common.h
+++ b/media/omx/1.0/vts/functional/audio/media_audio_hidl_test_common.h
@@ -27,9 +27,6 @@
/*
* Common audio utils
*/
-Return<android::hardware::media::omx::V1_0::Status> setAudioPortFormat(
- sp<IOmxNode> omxNode, OMX_U32 portIndex, OMX_AUDIO_CODINGTYPE eEncoding);
-
void enumerateProfile(sp<IOmxNode> omxNode, OMX_U32 portIndex,
std::vector<int32_t>* arrProfile);
diff --git a/media/omx/1.0/vts/functional/common/Android.bp b/media/omx/1.0/vts/functional/common/Android.bp
old mode 100755
new mode 100644
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
old mode 100755
new mode 100644
index 700d2f3..1f67e2b
--- 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
@@ -60,6 +60,132 @@
return setParam(omxNode, OMX_IndexParamStandardComponentRole, ¶ms);
}
+Return<android::hardware::media::omx::V1_0::Status> setPortBufferSize(
+ sp<IOmxNode> omxNode, OMX_U32 portIndex, OMX_U32 size) {
+ android::hardware::media::omx::V1_0::Status status;
+ OMX_PARAM_PORTDEFINITIONTYPE portDef;
+
+ status = getPortParam(omxNode, OMX_IndexParamPortDefinition, portIndex,
+ &portDef);
+ if (status != ::android::hardware::media::omx::V1_0::Status::OK)
+ return status;
+ if (portDef.nBufferSize < size) {
+ portDef.nBufferSize = size;
+ status = setPortParam(omxNode, OMX_IndexParamPortDefinition, portIndex,
+ &portDef);
+ if (status != ::android::hardware::media::omx::V1_0::Status::OK)
+ return status;
+ }
+ return status;
+}
+
+// get/set video component port format
+Return<android::hardware::media::omx::V1_0::Status> setVideoPortFormat(
+ sp<IOmxNode> omxNode, OMX_U32 portIndex,
+ OMX_VIDEO_CODINGTYPE eCompressionFormat, OMX_COLOR_FORMATTYPE eColorFormat,
+ OMX_U32 xFramerate) {
+ OMX_U32 index = 0;
+ OMX_VIDEO_PARAM_PORTFORMATTYPE portFormat;
+ std::vector<OMX_COLOR_FORMATTYPE> arrColorFormat;
+ std::vector<OMX_VIDEO_CODINGTYPE> arrCompressionFormat;
+ android::hardware::media::omx::V1_0::Status status;
+
+ while (1) {
+ portFormat.nIndex = index;
+ status = getPortParam(omxNode, OMX_IndexParamVideoPortFormat, portIndex,
+ &portFormat);
+ if (status != ::android::hardware::media::omx::V1_0::Status::OK) break;
+ if (eCompressionFormat == OMX_VIDEO_CodingUnused)
+ arrColorFormat.push_back(portFormat.eColorFormat);
+ else
+ arrCompressionFormat.push_back(portFormat.eCompressionFormat);
+ index++;
+ if (index == 512) {
+ // enumerated way too many formats, highly unusual for this to
+ // happen.
+ EXPECT_LE(index, 512U)
+ << "Expecting OMX_ErrorNoMore but not received";
+ break;
+ }
+ }
+ if (!index) return status;
+ if (eCompressionFormat == OMX_VIDEO_CodingUnused) {
+ for (index = 0; index < arrColorFormat.size(); index++) {
+ if (arrColorFormat[index] == eColorFormat) {
+ portFormat.eColorFormat = arrColorFormat[index];
+ break;
+ }
+ }
+ if (index == arrColorFormat.size()) {
+ ALOGE("setting default color format %x", (int)arrColorFormat[0]);
+ portFormat.eColorFormat = arrColorFormat[0];
+ }
+ portFormat.eCompressionFormat = OMX_VIDEO_CodingUnused;
+ } else {
+ for (index = 0; index < arrCompressionFormat.size(); index++) {
+ if (arrCompressionFormat[index] == eCompressionFormat) {
+ portFormat.eCompressionFormat = arrCompressionFormat[index];
+ break;
+ }
+ }
+ if (index == arrCompressionFormat.size()) {
+ ALOGE("setting default compression format %x",
+ (int)arrCompressionFormat[0]);
+ portFormat.eCompressionFormat = arrCompressionFormat[0];
+ }
+ portFormat.eColorFormat = OMX_COLOR_FormatUnused;
+ }
+ // In setParam call nIndex shall be ignored as per omx-il specification.
+ // see how this holds up by corrupting nIndex
+ portFormat.nIndex = RANDOM_INDEX;
+ portFormat.xFramerate = xFramerate;
+ status = setPortParam(omxNode, OMX_IndexParamVideoPortFormat, portIndex,
+ &portFormat);
+ return status;
+}
+
+// get/set audio component port format
+Return<android::hardware::media::omx::V1_0::Status> setAudioPortFormat(
+ sp<IOmxNode> omxNode, OMX_U32 portIndex, OMX_AUDIO_CODINGTYPE eEncoding) {
+ OMX_U32 index = 0;
+ OMX_AUDIO_PARAM_PORTFORMATTYPE portFormat;
+ std::vector<OMX_AUDIO_CODINGTYPE> arrEncoding;
+ android::hardware::media::omx::V1_0::Status status;
+
+ while (1) {
+ portFormat.nIndex = index;
+ status = getPortParam(omxNode, OMX_IndexParamAudioPortFormat, portIndex,
+ &portFormat);
+ if (status != ::android::hardware::media::omx::V1_0::Status::OK) break;
+ arrEncoding.push_back(portFormat.eEncoding);
+ index++;
+ if (index == 512) {
+ // enumerated way too many formats, highly unusual for this to
+ // happen.
+ EXPECT_LE(index, 512U)
+ << "Expecting OMX_ErrorNoMore but not received";
+ break;
+ }
+ }
+ if (!index) return status;
+ for (index = 0; index < arrEncoding.size(); index++) {
+ if (arrEncoding[index] == eEncoding) {
+ portFormat.eEncoding = arrEncoding[index];
+ break;
+ }
+ }
+ if (index == arrEncoding.size()) {
+ ALOGE("setting default Port format %x", (int)arrEncoding[0]);
+ portFormat.eEncoding = arrEncoding[0];
+ }
+ // In setParam call nIndex shall be ignored as per omx-il specification.
+ // see how this holds up by corrupting nIndex
+ portFormat.nIndex = RANDOM_INDEX;
+ status = setPortParam(omxNode, OMX_IndexParamAudioPortFormat, portIndex,
+ &portFormat);
+ return status;
+}
+
// allocate buffers needed on a component port
void allocatePortBuffers(sp<IOmxNode> omxNode,
android::Vector<BufferInfo>* buffArray,
diff --git a/media/omx/1.0/vts/functional/common/media_hidl_test_common.h b/media/omx/1.0/vts/functional/common/media_hidl_test_common.h
index 354b7a7..0adea14 100644
--- a/media/omx/1.0/vts/functional/common/media_hidl_test_common.h
+++ b/media/omx/1.0/vts/functional/common/media_hidl_test_common.h
@@ -36,6 +36,14 @@
#define DEFAULT_TIMEOUT 100000
#define TIMEOUT_COUNTER (10000000 / DEFAULT_TIMEOUT)
+/*
+ * Random Index used for monkey testing while get/set parameters
+ */
+#define RANDOM_INDEX 1729
+
+#define ALIGN_POWER_OF_TWO(value, n) \
+ (((value) + ((1 << (n)) - 1)) & ~((1 << (n)) - 1))
+
enum bufferOwner {
client,
component,
@@ -265,6 +273,17 @@
Return<android::hardware::media::omx::V1_0::Status> setRole(
sp<IOmxNode> omxNode, const char* role);
+Return<android::hardware::media::omx::V1_0::Status> setPortBufferSize(
+ sp<IOmxNode> omxNode, OMX_U32 portIndex, OMX_U32 size);
+
+Return<android::hardware::media::omx::V1_0::Status> setVideoPortFormat(
+ sp<IOmxNode> omxNode, OMX_U32 portIndex,
+ OMX_VIDEO_CODINGTYPE eCompressionFormat, OMX_COLOR_FORMATTYPE eColorFormat,
+ OMX_U32 xFramerate);
+
+Return<android::hardware::media::omx::V1_0::Status> setAudioPortFormat(
+ sp<IOmxNode> omxNode, OMX_U32 portIndex, OMX_AUDIO_CODINGTYPE eEncoding);
+
void allocatePortBuffers(sp<IOmxNode> omxNode,
android::Vector<BufferInfo>* buffArray,
OMX_U32 portIndex,
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 357c11e..38860ed 100644
--- a/media/omx/1.0/vts/functional/component/VtsHalMediaOmxV1_0TargetComponentTest.cpp
+++ b/media/omx/1.0/vts/functional/component/VtsHalMediaOmxV1_0TargetComponentTest.cpp
@@ -225,113 +225,6 @@
return;
}
-// get/set video component port format
-Return<android::hardware::media::omx::V1_0::Status> setVideoPortFormat(
- sp<IOmxNode> omxNode, OMX_U32 portIndex,
- OMX_VIDEO_CODINGTYPE eCompressionFormat, OMX_COLOR_FORMATTYPE eColorFormat,
- OMX_U32 xFramerate) {
- OMX_U32 index = 0;
- OMX_VIDEO_PARAM_PORTFORMATTYPE portFormat;
- std::vector<OMX_COLOR_FORMATTYPE> arrColorFormat;
- std::vector<OMX_VIDEO_CODINGTYPE> arrCompressionFormat;
- android::hardware::media::omx::V1_0::Status status;
-
- while (1) {
- portFormat.nIndex = index;
- status = getPortParam(omxNode, OMX_IndexParamVideoPortFormat, portIndex,
- &portFormat);
- if (status != ::android::hardware::media::omx::V1_0::Status::OK) break;
- if (eCompressionFormat == OMX_VIDEO_CodingUnused)
- arrColorFormat.push_back(portFormat.eColorFormat);
- else
- arrCompressionFormat.push_back(portFormat.eCompressionFormat);
- index++;
- if (index == 512) {
- // enumerated way too many formats, highly unusual for this to
- // happen.
- EXPECT_LE(index, 512U)
- << "Expecting OMX_ErrorNoMore but not received";
- break;
- }
- }
- if (!index) return status;
- if (eCompressionFormat == OMX_VIDEO_CodingUnused) {
- for (index = 0; index < arrColorFormat.size(); index++) {
- if (arrColorFormat[index] == eColorFormat) {
- portFormat.eColorFormat = arrColorFormat[index];
- break;
- }
- }
- if (index == arrColorFormat.size()) {
- ALOGE("setting default color format %x", (int)arrColorFormat[0]);
- portFormat.eColorFormat = arrColorFormat[0];
- }
- portFormat.eCompressionFormat = OMX_VIDEO_CodingUnused;
- } else {
- for (index = 0; index < arrCompressionFormat.size(); index++) {
- if (arrCompressionFormat[index] == eCompressionFormat) {
- portFormat.eCompressionFormat = arrCompressionFormat[index];
- break;
- }
- }
- if (index == arrCompressionFormat.size()) {
- ALOGE("setting default compression format %x",
- (int)arrCompressionFormat[0]);
- portFormat.eCompressionFormat = arrCompressionFormat[0];
- }
- portFormat.eColorFormat = OMX_COLOR_FormatUnused;
- }
- // In setParam call nIndex shall be ignored as per omx-il specification.
- // see how this holds up by corrupting nIndex
- portFormat.nIndex = RANDOM_INDEX;
- portFormat.xFramerate = xFramerate;
- status = setPortParam(omxNode, OMX_IndexParamVideoPortFormat, portIndex,
- &portFormat);
- return status;
-}
-
-// get/set audio component port format
-Return<android::hardware::media::omx::V1_0::Status> setAudioPortFormat(
- sp<IOmxNode> omxNode, OMX_U32 portIndex, OMX_AUDIO_CODINGTYPE eEncoding) {
- OMX_U32 index = 0;
- OMX_AUDIO_PARAM_PORTFORMATTYPE portFormat;
- std::vector<OMX_AUDIO_CODINGTYPE> arrEncoding;
- android::hardware::media::omx::V1_0::Status status;
-
- while (1) {
- portFormat.nIndex = index;
- status = getPortParam(omxNode, OMX_IndexParamAudioPortFormat, portIndex,
- &portFormat);
- if (status != ::android::hardware::media::omx::V1_0::Status::OK) break;
- arrEncoding.push_back(portFormat.eEncoding);
- index++;
- if (index == 512) {
- // enumerated way too many formats, highly unusual for this to
- // happen.
- EXPECT_LE(index, 512U)
- << "Expecting OMX_ErrorNoMore but not received";
- break;
- }
- }
- if (!index) return status;
- for (index = 0; index < arrEncoding.size(); index++) {
- if (arrEncoding[index] == eEncoding) {
- portFormat.eEncoding = arrEncoding[index];
- break;
- }
- }
- if (index == arrEncoding.size()) {
- ALOGE("setting default Port format %x", (int)arrEncoding[0]);
- portFormat.eEncoding = arrEncoding[0];
- }
- // In setParam call nIndex shall be ignored as per omx-il specification.
- // see how this holds up by corrupting nIndex
- portFormat.nIndex = RANDOM_INDEX;
- status = setPortParam(omxNode, OMX_IndexParamAudioPortFormat, portIndex,
- &portFormat);
- return status;
-}
-
// test dispatch message API call
TEST_F(ComponentHidlTest, dispatchMsg) {
description("test dispatch message API call");
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 6bc72bf..6e2e739 100644
--- a/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp
+++ b/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp
@@ -27,6 +27,7 @@
#include <android/hidl/allocator/1.0/IAllocator.h>
#include <android/hidl/memory/1.0/IMapper.h>
#include <android/hidl/memory/1.0/IMemory.h>
+#include <cutils/atomic.h>
using ::android::hardware::graphics::common::V1_0::BufferUsage;
using ::android::hardware::graphics::common::V1_0::PixelFormat;
@@ -47,6 +48,7 @@
#include <VtsHalHidlTargetTestBase.h>
#include <getopt.h>
+#include <media/hardware/HardwareAPI.h>
#include <media_hidl_test_common.h>
#include <media_video_hidl_test_common.h>
#include <fstream>
@@ -399,7 +401,7 @@
void allocateGraphicBuffers(sp<IOmxNode> omxNode, OMX_U32 portIndex,
android::Vector<BufferInfo>* buffArray,
uint32_t nFrameWidth, uint32_t nFrameHeight,
- int32_t* nStride, uint32_t count) {
+ int32_t* nStride, int format, uint32_t count) {
android::hardware::media::omx::V1_0::Status status;
sp<android::hardware::graphics::allocator::V2_0::IAllocator> allocator =
android::hardware::graphics::allocator::V2_0::IAllocator::getService();
@@ -416,7 +418,7 @@
descriptorInfo.width = nFrameWidth;
descriptorInfo.height = nFrameHeight;
descriptorInfo.layerCount = 1;
- descriptorInfo.format = PixelFormat::RGBA_8888;
+ descriptorInfo.format = static_cast<PixelFormat>(format);
descriptorInfo.usage = static_cast<uint64_t>(BufferUsage::CPU_READ_OFTEN);
omxNode->getGraphicBufferUsage(
portIndex,
@@ -441,6 +443,9 @@
EXPECT_EQ(error, android::hardware::graphics::mapper::V2_0::Error::NONE);
EXPECT_EQ(buffArray->size(), count);
+
+ static volatile int32_t nextId = 0;
+ uint64_t id = static_cast<uint64_t>(getpid()) << 32;
allocator->allocate(
descriptor, count,
[&](android::hardware::graphics::mapper::V2_0::Error _s, uint32_t _n1,
@@ -464,7 +469,7 @@
buffArray->editItemAt(i).omxBuffer.attr.anwBuffer.layerCount =
descriptorInfo.layerCount;
buffArray->editItemAt(i).omxBuffer.attr.anwBuffer.id =
- (*buffArray)[i].id;
+ id | static_cast<uint32_t>(android_atomic_inc(&nextId));
}
});
}
@@ -525,12 +530,15 @@
// set Port Params
uint32_t nFrameWidth, nFrameHeight, xFramerate;
- OMX_COLOR_FORMATTYPE eColorFormat =
- OMX_COLOR_FormatYUV420Planar;
getInputChannelInfo(omxNode, kPortIndexInput, &nFrameWidth,
&nFrameHeight, &xFramerate);
+ // get configured color format
+ OMX_PARAM_PORTDEFINITIONTYPE portDef;
+ status = getPortParam(omxNode, OMX_IndexParamPortDefinition,
+ kPortIndexOutput, &portDef);
setDefaultPortParam(omxNode, kPortIndexOutput,
- OMX_VIDEO_CodingUnused, eColorFormat,
+ OMX_VIDEO_CodingUnused,
+ portDef.format.video.eColorFormat,
nFrameWidth, nFrameHeight, 0, xFramerate);
// If you can disable a port, then you should be able to
@@ -562,6 +570,7 @@
portDef.format.video.nFrameWidth,
portDef.format.video.nFrameHeight,
&portDef.format.video.nStride,
+ portDef.format.video.eColorFormat,
portDef.nBufferCountActual);
}
status = observer->dequeueMessage(&msg, DEFAULT_TIMEOUT,
@@ -732,6 +741,116 @@
}
}
+// DescribeColorFormatParams Copy Constructor (Borrowed from OMXUtils.cpp)
+android::DescribeColorFormatParams::DescribeColorFormatParams(
+ const android::DescribeColorFormat2Params& params) {
+ eColorFormat = params.eColorFormat;
+ nFrameWidth = params.nFrameWidth;
+ nFrameHeight = params.nFrameHeight;
+ nStride = params.nStride;
+ nSliceHeight = params.nSliceHeight;
+ bUsingNativeBuffers = params.bUsingNativeBuffers;
+};
+
+bool isColorFormatFlexibleYUV(sp<IOmxNode> omxNode,
+ OMX_COLOR_FORMATTYPE eColorFormat) {
+ android::hardware::media::omx::V1_0::Status status;
+ unsigned int index = OMX_IndexMax, index2 = OMX_IndexMax;
+ omxNode->getExtensionIndex(
+ "OMX.google.android.index.describeColorFormat",
+ [&index](android::hardware::media::omx::V1_0::Status _s,
+ unsigned int _nl) {
+ if (_s == ::android::hardware::media::omx::V1_0::Status::OK)
+ index = _nl;
+ });
+ omxNode->getExtensionIndex(
+ "OMX.google.android.index.describeColorFormat2",
+ [&index2](android::hardware::media::omx::V1_0::Status _s,
+ unsigned int _nl) {
+ if (_s == ::android::hardware::media::omx::V1_0::Status::OK)
+ index2 = _nl;
+ });
+
+ android::DescribeColorFormat2Params describeParams;
+ describeParams.eColorFormat = eColorFormat;
+ describeParams.nFrameWidth = 128;
+ describeParams.nFrameHeight = 128;
+ describeParams.nStride = 128;
+ describeParams.nSliceHeight = 128;
+ describeParams.bUsingNativeBuffers = OMX_FALSE;
+ if (index != OMX_IndexMax) {
+ android::DescribeColorFormatParams describeParamsV1(describeParams);
+ status = getParam(omxNode, static_cast<OMX_INDEXTYPE>(index),
+ &describeParamsV1);
+ if (status == ::android::hardware::media::omx::V1_0::Status::OK) {
+ android::MediaImage& img = describeParamsV1.sMediaImage;
+ if (img.mType == android::MediaImage::MEDIA_IMAGE_TYPE_YUV) {
+ if (img.mNumPlanes == 3 &&
+ img.mPlane[img.Y].mHorizSubsampling == 1 &&
+ img.mPlane[img.Y].mVertSubsampling == 1) {
+ if (img.mPlane[img.U].mHorizSubsampling == 2 &&
+ img.mPlane[img.U].mVertSubsampling == 2 &&
+ img.mPlane[img.V].mHorizSubsampling == 2 &&
+ img.mPlane[img.V].mVertSubsampling == 2) {
+ if (img.mBitDepth <= 8) {
+ return true;
+ }
+ }
+ }
+ }
+ }
+ } else if (index2 != OMX_IndexMax) {
+ status = getParam(omxNode, static_cast<OMX_INDEXTYPE>(index2),
+ &describeParams);
+ android::MediaImage2& img = describeParams.sMediaImage;
+ if (img.mType == android::MediaImage2::MEDIA_IMAGE_TYPE_YUV) {
+ if (img.mNumPlanes == 3 &&
+ img.mPlane[img.Y].mHorizSubsampling == 1 &&
+ img.mPlane[img.Y].mVertSubsampling == 1) {
+ if (img.mPlane[img.U].mHorizSubsampling == 2 &&
+ img.mPlane[img.U].mVertSubsampling == 2 &&
+ img.mPlane[img.V].mHorizSubsampling == 2 &&
+ img.mPlane[img.V].mVertSubsampling == 2) {
+ if (img.mBitDepth <= 8) {
+ return true;
+ }
+ }
+ }
+ }
+ }
+ return false;
+}
+
+// get default color format for output port
+void getDefaultColorFormat(sp<IOmxNode> omxNode, OMX_U32 kPortIndexOutput,
+ PortMode oPortMode,
+ OMX_COLOR_FORMATTYPE* eColorFormat) {
+ android::hardware::media::omx::V1_0::Status status;
+ OMX_VIDEO_PARAM_PORTFORMATTYPE portFormat;
+ *eColorFormat = OMX_COLOR_FormatUnused;
+ portFormat.nIndex = 0;
+ while (1) {
+ status = getPortParam(omxNode, OMX_IndexParamVideoPortFormat,
+ kPortIndexOutput, &portFormat);
+ if (status != ::android::hardware::media::omx::V1_0::Status::OK) break;
+ EXPECT_EQ(portFormat.eCompressionFormat, OMX_VIDEO_CodingUnused);
+ if (oPortMode != PortMode::PRESET_BYTE_BUFFER) {
+ *eColorFormat = portFormat.eColorFormat;
+ break;
+ }
+ if (isColorFormatFlexibleYUV(omxNode, portFormat.eColorFormat)) {
+ *eColorFormat = portFormat.eColorFormat;
+ break;
+ }
+ if (OMX_COLOR_FormatYUV420SemiPlanar == portFormat.eColorFormat ||
+ OMX_COLOR_FormatYUV420Planar == portFormat.eColorFormat) {
+ *eColorFormat = portFormat.eColorFormat;
+ break;
+ }
+ portFormat.nIndex++;
+ }
+}
+
// set component role
TEST_F(VideoDecHidlTest, SetRole) {
description("Test Set Component Role");
@@ -793,7 +912,7 @@
eleInfo.open(info);
ASSERT_EQ(eleInfo.is_open(), true);
android::Vector<FrameData> Info;
- int bytesCount = 0;
+ int bytesCount = 0, maxBytesCount = 0;
uint32_t flags = 0;
uint32_t timestamp = 0;
timestampDevTest = true;
@@ -802,11 +921,17 @@
eleInfo >> flags;
eleInfo >> timestamp;
Info.push_back({bytesCount, flags, timestamp});
- if (flags != OMX_BUFFERFLAG_CODECCONFIG)
+ if (timestampDevTest && (flags != OMX_BUFFERFLAG_CODECCONFIG))
timestampUslist.push_back(timestamp);
+ if (maxBytesCount < bytesCount) maxBytesCount = bytesCount;
}
eleInfo.close();
+ // As the frame sizes are known ahead, use it to configure i/p buffer size
+ maxBytesCount = ALIGN_POWER_OF_TWO(maxBytesCount, 10);
+ status = setPortBufferSize(omxNode, kPortIndexInput, maxBytesCount);
+ ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+
// set port mode
portMode[0] = PortMode::PRESET_BYTE_BUFFER;
portMode[1] = PortMode::DYNAMIC_ANW_BUFFER;
@@ -821,11 +946,21 @@
// set Port Params
uint32_t nFrameWidth, nFrameHeight, xFramerate;
- OMX_COLOR_FORMATTYPE eColorFormat = OMX_COLOR_FormatYUV420Planar;
getInputChannelInfo(omxNode, kPortIndexInput, &nFrameWidth, &nFrameHeight,
&xFramerate);
+ // get default color format
+ OMX_COLOR_FORMATTYPE eColorFormat = OMX_COLOR_FormatUnused;
+ getDefaultColorFormat(omxNode, kPortIndexOutput, portMode[1],
+ &eColorFormat);
+ ASSERT_NE(eColorFormat, OMX_COLOR_FormatUnused);
+ status =
+ setVideoPortFormat(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
+ eColorFormat, xFramerate);
+ EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
setDefaultPortParam(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
eColorFormat, nFrameWidth, nFrameHeight, 0, xFramerate);
+
+ // disabling adaptive playback.
omxNode->prepareForAdaptivePlayback(kPortIndexOutput, false, 1920, 1080);
android::Vector<BufferInfo> iBuffer, oBuffer;
@@ -845,7 +980,8 @@
allocateGraphicBuffers(
omxNode, kPortIndexOutput, &oBuffer,
portDef.format.video.nFrameWidth, portDef.format.video.nFrameHeight,
- &portDef.format.video.nStride, portDef.nBufferCountActual);
+ &portDef.format.video.nStride, portDef.format.video.eColorFormat,
+ portDef.nBufferCountActual);
}
// Port Reconfiguration
@@ -859,7 +995,7 @@
kPortIndexInput, kPortIndexOutput, portMode[1]);
testEOS(omxNode, observer, &iBuffer, &oBuffer, false, eosFlag, portMode,
portReconfiguration, kPortIndexInput, kPortIndexOutput, nullptr);
- EXPECT_EQ(timestampUslist.empty(), true);
+ if (timestampDevTest) EXPECT_EQ(timestampUslist.empty(), true);
// set state to idle
changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
// set state to executing
@@ -883,22 +1019,28 @@
kPortIndexOutput = kPortIndexInput + 1;
}
- // set Port Params
- uint32_t nFrameWidth, nFrameHeight, xFramerate;
- OMX_COLOR_FORMATTYPE eColorFormat = OMX_COLOR_FormatYUV420Planar;
- getInputChannelInfo(omxNode, kPortIndexInput, &nFrameWidth, &nFrameHeight,
- &xFramerate);
- setDefaultPortParam(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
- eColorFormat, nFrameWidth, nFrameHeight, 0, xFramerate);
-
// set port mode
- PortMode portMode[2];
- portMode[0] = portMode[1] = PortMode::PRESET_BYTE_BUFFER;
status = omxNode->setPortMode(kPortIndexInput, portMode[0]);
ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
status = omxNode->setPortMode(kPortIndexOutput, portMode[1]);
ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+ // set Port Params
+ uint32_t nFrameWidth, nFrameHeight, xFramerate;
+ getInputChannelInfo(omxNode, kPortIndexInput, &nFrameWidth, &nFrameHeight,
+ &xFramerate);
+ // get default color format
+ OMX_COLOR_FORMATTYPE eColorFormat = OMX_COLOR_FormatUnused;
+ getDefaultColorFormat(omxNode, kPortIndexOutput, portMode[1],
+ &eColorFormat);
+ ASSERT_NE(eColorFormat, OMX_COLOR_FormatUnused);
+ status =
+ setVideoPortFormat(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
+ eColorFormat, xFramerate);
+ EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+ setDefaultPortParam(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
+ eColorFormat, nFrameWidth, nFrameHeight, 0, xFramerate);
+
android::Vector<BufferInfo> iBuffer, oBuffer;
// set state to idle
@@ -948,7 +1090,7 @@
eleInfo.open(info);
ASSERT_EQ(eleInfo.is_open(), true);
android::Vector<FrameData> Info;
- int bytesCount = 0;
+ int bytesCount = 0, maxBytesCount = 0;
uint32_t flags = 0;
uint32_t timestamp = 0;
while (1) {
@@ -956,25 +1098,37 @@
eleInfo >> flags;
eleInfo >> timestamp;
Info.push_back({bytesCount, flags, timestamp});
+ if (maxBytesCount < bytesCount) maxBytesCount = bytesCount;
}
eleInfo.close();
- // set Port Params
- uint32_t nFrameWidth, nFrameHeight, xFramerate;
- OMX_COLOR_FORMATTYPE eColorFormat = OMX_COLOR_FormatYUV420Planar;
- getInputChannelInfo(omxNode, kPortIndexInput, &nFrameWidth, &nFrameHeight,
- &xFramerate);
- setDefaultPortParam(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
- eColorFormat, nFrameWidth, nFrameHeight, 0, xFramerate);
+ // As the frame sizes are known ahead, use it to configure i/p buffer size
+ maxBytesCount = ALIGN_POWER_OF_TWO(maxBytesCount, 10);
+ status = setPortBufferSize(omxNode, kPortIndexInput, maxBytesCount);
+ ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
// set port mode
- PortMode portMode[2];
- portMode[0] = portMode[1] = PortMode::PRESET_BYTE_BUFFER;
status = omxNode->setPortMode(kPortIndexInput, portMode[0]);
ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
status = omxNode->setPortMode(kPortIndexOutput, portMode[1]);
ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+ // set Port Params
+ uint32_t nFrameWidth, nFrameHeight, xFramerate;
+ getInputChannelInfo(omxNode, kPortIndexInput, &nFrameWidth, &nFrameHeight,
+ &xFramerate);
+ // get default color format
+ OMX_COLOR_FORMATTYPE eColorFormat = OMX_COLOR_FormatUnused;
+ getDefaultColorFormat(omxNode, kPortIndexOutput, portMode[1],
+ &eColorFormat);
+ ASSERT_NE(eColorFormat, OMX_COLOR_FormatUnused);
+ status =
+ setVideoPortFormat(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
+ eColorFormat, xFramerate);
+ EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+ setDefaultPortParam(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
+ eColorFormat, nFrameWidth, nFrameHeight, 0, xFramerate);
+
android::Vector<BufferInfo> iBuffer, oBuffer;
// set state to idle
@@ -1049,7 +1203,7 @@
eleInfo.open(info);
ASSERT_EQ(eleInfo.is_open(), true);
android::Vector<FrameData> Info;
- int bytesCount = 0;
+ int bytesCount = 0, maxBytesCount = 0;
uint32_t flags = 0;
uint32_t timestamp = 0;
while (1) {
@@ -1057,25 +1211,37 @@
eleInfo >> flags;
eleInfo >> timestamp;
Info.push_back({bytesCount, flags, timestamp});
+ if (maxBytesCount < bytesCount) maxBytesCount = bytesCount;
}
eleInfo.close();
- // set Port Params
- uint32_t nFrameWidth, nFrameHeight, xFramerate;
- OMX_COLOR_FORMATTYPE eColorFormat = OMX_COLOR_FormatYUV420Planar;
- getInputChannelInfo(omxNode, kPortIndexInput, &nFrameWidth, &nFrameHeight,
- &xFramerate);
- setDefaultPortParam(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
- eColorFormat, nFrameWidth, nFrameHeight, 0, xFramerate);
+ // As the frame sizes are known ahead, use it to configure i/p buffer size
+ maxBytesCount = ALIGN_POWER_OF_TWO(maxBytesCount, 10);
+ status = setPortBufferSize(omxNode, kPortIndexInput, maxBytesCount);
+ ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
// set port mode
- PortMode portMode[2];
- portMode[0] = portMode[1] = PortMode::PRESET_BYTE_BUFFER;
status = omxNode->setPortMode(kPortIndexInput, portMode[0]);
ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
status = omxNode->setPortMode(kPortIndexOutput, portMode[1]);
ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+ // set Port Params
+ uint32_t nFrameWidth, nFrameHeight, xFramerate;
+ getInputChannelInfo(omxNode, kPortIndexInput, &nFrameWidth, &nFrameHeight,
+ &xFramerate);
+ // get default color format
+ OMX_COLOR_FORMATTYPE eColorFormat = OMX_COLOR_FormatUnused;
+ getDefaultColorFormat(omxNode, kPortIndexOutput, portMode[1],
+ &eColorFormat);
+ ASSERT_NE(eColorFormat, OMX_COLOR_FormatUnused);
+ status =
+ setVideoPortFormat(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
+ eColorFormat, xFramerate);
+ EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+ setDefaultPortParam(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
+ eColorFormat, nFrameWidth, nFrameHeight, 0, xFramerate);
+
android::Vector<BufferInfo> iBuffer, oBuffer;
// set state to idle
@@ -1132,7 +1298,7 @@
eleInfo.open(info);
ASSERT_EQ(eleInfo.is_open(), true);
android::Vector<FrameData> Info;
- int bytesCount = 0;
+ int bytesCount = 0, maxBytesCount = 0;
uint32_t flags = 0;
uint32_t timestamp = 0;
while (1) {
@@ -1140,25 +1306,37 @@
eleInfo >> flags;
eleInfo >> timestamp;
Info.push_back({bytesCount, flags, timestamp});
+ if (maxBytesCount < bytesCount) maxBytesCount = bytesCount;
}
eleInfo.close();
- // set Port Params
- uint32_t nFrameWidth, nFrameHeight, xFramerate;
- OMX_COLOR_FORMATTYPE eColorFormat = OMX_COLOR_FormatYUV420Planar;
- getInputChannelInfo(omxNode, kPortIndexInput, &nFrameWidth, &nFrameHeight,
- &xFramerate);
- setDefaultPortParam(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
- eColorFormat, nFrameWidth, nFrameHeight, 0, xFramerate);
+ // As the frame sizes are known ahead, use it to configure i/p buffer size
+ maxBytesCount = ALIGN_POWER_OF_TWO(maxBytesCount, 10);
+ status = setPortBufferSize(omxNode, kPortIndexInput, maxBytesCount);
+ ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
// set port mode
- PortMode portMode[2];
- portMode[0] = portMode[1] = PortMode::PRESET_BYTE_BUFFER;
status = omxNode->setPortMode(kPortIndexInput, portMode[0]);
ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
status = omxNode->setPortMode(kPortIndexOutput, portMode[1]);
ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+ // set Port Params
+ uint32_t nFrameWidth, nFrameHeight, xFramerate;
+ getInputChannelInfo(omxNode, kPortIndexInput, &nFrameWidth, &nFrameHeight,
+ &xFramerate);
+ // get default color format
+ OMX_COLOR_FORMATTYPE eColorFormat = OMX_COLOR_FormatUnused;
+ getDefaultColorFormat(omxNode, kPortIndexOutput, portMode[1],
+ &eColorFormat);
+ ASSERT_NE(eColorFormat, OMX_COLOR_FormatUnused);
+ status =
+ setVideoPortFormat(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
+ eColorFormat, xFramerate);
+ EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+ setDefaultPortParam(omxNode, kPortIndexOutput, OMX_VIDEO_CodingUnused,
+ eColorFormat, nFrameWidth, nFrameHeight, 0, xFramerate);
+
android::Vector<BufferInfo> iBuffer, oBuffer;
// set state to idle
@@ -1200,6 +1378,7 @@
Info.size() - index, portMode[1], false);
}
// Note: Assumes 200 ms is enough to end any decode call that started
+ eleStream.close();
flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
kPortIndexOutput, 200000);
framesReceived = 0;
diff --git a/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoEncTest.cpp b/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoEncTest.cpp
index cd6eaf5..bbe0843 100644
--- a/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoEncTest.cpp
+++ b/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoEncTest.cpp
@@ -1286,7 +1286,7 @@
eleStream.close();
waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer);
testEOS(omxNode, observer, &iBuffer, &oBuffer, false, eosFlag);
- EXPECT_EQ(timestampUslist.empty(), true);
+ if (timestampDevTest) EXPECT_EQ(timestampUslist.empty(), true);
// set state to idle
changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer);
diff --git a/media/omx/1.0/vts/functional/video/media_video_hidl_test_common.cpp b/media/omx/1.0/vts/functional/video/media_video_hidl_test_common.cpp
index 77763d1..91aecf2 100644
--- a/media/omx/1.0/vts/functional/video/media_video_hidl_test_common.cpp
+++ b/media/omx/1.0/vts/functional/video/media_video_hidl_test_common.cpp
@@ -52,68 +52,6 @@
#include <media_video_hidl_test_common.h>
#include <memory>
-Return<android::hardware::media::omx::V1_0::Status> setVideoPortFormat(
- sp<IOmxNode> omxNode, OMX_U32 portIndex,
- OMX_VIDEO_CODINGTYPE eCompressionFormat, OMX_COLOR_FORMATTYPE eColorFormat,
- OMX_U32 xFramerate) {
- OMX_U32 index = 0;
- OMX_VIDEO_PARAM_PORTFORMATTYPE portFormat;
- std::vector<OMX_COLOR_FORMATTYPE> arrColorFormat;
- std::vector<OMX_VIDEO_CODINGTYPE> arrCompressionFormat;
- android::hardware::media::omx::V1_0::Status status;
-
- while (1) {
- portFormat.nIndex = index;
- status = getPortParam(omxNode, OMX_IndexParamVideoPortFormat, portIndex,
- &portFormat);
- if (status != ::android::hardware::media::omx::V1_0::Status::OK) break;
- if (eCompressionFormat == OMX_VIDEO_CodingUnused)
- arrColorFormat.push_back(portFormat.eColorFormat);
- else
- arrCompressionFormat.push_back(portFormat.eCompressionFormat);
- index++;
- if (index == 512) {
- // enumerated way too many formats, highly unusual for this to
- // happen.
- EXPECT_LE(index, 512U)
- << "Expecting OMX_ErrorNoMore but not received";
- break;
- }
- }
- if (!index) return status;
- if (eCompressionFormat == OMX_VIDEO_CodingUnused) {
- for (index = 0; index < arrColorFormat.size(); index++) {
- if (arrColorFormat[index] == eColorFormat) {
- portFormat.eColorFormat = arrColorFormat[index];
- break;
- }
- }
- if (index == arrColorFormat.size()) {
- ALOGE("setting default color format %x", (int)arrColorFormat[0]);
- portFormat.eColorFormat = arrColorFormat[0];
- }
- portFormat.eCompressionFormat = OMX_VIDEO_CodingUnused;
- } else {
- for (index = 0; index < arrCompressionFormat.size(); index++) {
- if (arrCompressionFormat[index] == eCompressionFormat) {
- portFormat.eCompressionFormat = arrCompressionFormat[index];
- break;
- }
- }
- if (index == arrCompressionFormat.size()) {
- ALOGE("setting default compression format %x",
- (int)arrCompressionFormat[0]);
- portFormat.eCompressionFormat = arrCompressionFormat[0];
- }
- portFormat.eColorFormat = OMX_COLOR_FormatUnused;
- }
- portFormat.nIndex = 0;
- portFormat.xFramerate = xFramerate;
- status = setPortParam(omxNode, OMX_IndexParamVideoPortFormat, portIndex,
- &portFormat);
- return status;
-}
-
void enumerateProfileAndLevel(sp<IOmxNode> omxNode, OMX_U32 portIndex,
std::vector<int32_t>* arrProfile,
std::vector<int32_t>* arrLevel) {
diff --git a/media/omx/1.0/vts/functional/video/media_video_hidl_test_common.h b/media/omx/1.0/vts/functional/video/media_video_hidl_test_common.h
index e492779..c1d7aea 100644
--- a/media/omx/1.0/vts/functional/video/media_video_hidl_test_common.h
+++ b/media/omx/1.0/vts/functional/video/media_video_hidl_test_common.h
@@ -26,11 +26,6 @@
* Common video utils
*/
-Return<android::hardware::media::omx::V1_0::Status> setVideoPortFormat(
- sp<IOmxNode> omxNode, OMX_U32 portIndex,
- OMX_VIDEO_CODINGTYPE eCompressionFormat, OMX_COLOR_FORMATTYPE eColorFormat,
- OMX_U32 xFramerate);
-
void enumerateProfileAndLevel(sp<IOmxNode> omxNode, OMX_U32 portIndex,
std::vector<int32_t>* arrProfile,
std::vector<int32_t>* arrLevel);
diff --git a/sensors/1.0/vts/functional/VtsHalSensorsV1_0TargetTest.cpp b/sensors/1.0/vts/functional/VtsHalSensorsV1_0TargetTest.cpp
index 596e9c9..a6f6852 100644
--- a/sensors/1.0/vts/functional/VtsHalSensorsV1_0TargetTest.cpp
+++ b/sensors/1.0/vts/functional/VtsHalSensorsV1_0TargetTest.cpp
@@ -1180,16 +1180,17 @@
usleep(batchingPeriodInNs / 1000 * 8 / 10);
SensorsHidlEnvironment::Instance()->setCollection(true);
- // 0.8 + 0.3 times the batching period
- // plus some time for the event to deliver
- events = collectEvents(
- batchingPeriodInNs / 1000 * 3 / 10,
- minFifoCount, true /*clearBeforeStart*/, false /*change collection*/);
+ // clean existing collections
+ collectEvents(0 /*timeLimitUs*/, 0/*nEventLimit*/,
+ true /*clearBeforeStart*/, false /*change collection*/);
+ // 0.8 + 0.2 times the batching period
+ usleep(batchingPeriodInNs / 1000 * 8 / 10);
ASSERT_EQ(flush(handle), Result::OK);
+ // plus some time for the event to deliver
events = collectEvents(allowedBatchDeliverTimeNs / 1000,
- minFifoCount, true /*clearBeforeStart*/, false /*change collection*/);
+ minFifoCount, false /*clearBeforeStart*/, false /*change collection*/);
SensorsHidlEnvironment::Instance()->setCollection(false);
ASSERT_EQ(activate(handle, 0), Result::OK);
@@ -1202,7 +1203,7 @@
}
// at least reach 90% of advertised capacity
- ASSERT_GT(nEvent, (size_t)(batchingPeriodInNs / minSamplingPeriodInNs * 9 / 10));
+ ASSERT_GT(nEvent, (size_t)(minFifoCount * 9 / 10));
}
// Test if sensor hal can do accelerometer batching properly