From 06ec563f55fc6c0b90d631ba50e97ab04cac56d0 Mon Sep 17 00:00:00 2001 From: Emilian Peev Date: Thu, 28 Oct 2021 17:49:19 -0700 Subject: [PATCH] VtsHalCameraProviderV2_4TargetTest: Override rotate&crop As per documentation the default auto rotate&crop mode must be overriden before passing the capture request back to the camera provider. Bug: 204407427 Test: atest VtsHalCameraProviderV2_4TargetTest:PerInstance/CameraHidlTest#processCaptureRequestPreview/0_internal_0 atest VtsHalCameraProviderV2_4TargetTest:PerInstance/CameraHidlTest#processMultiCaptureRequestPreview/0_internal_0 atest VtsHalCameraProviderV2_4TargetTest:PerInstance/CameraHidlTest#processCaptureRequestBurstISO/0_internal_0 atest VtsHalCameraProviderV2_4TargetTest:PerInstance/CameraHidlTest#flushPreviewRequest/0_internal_0 Change-Id: I1e1d387a04add8be9a281fcc3f78a867990248b3 --- .../VtsHalCameraProviderV2_4TargetTest.cpp | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/camera/provider/2.4/vts/functional/VtsHalCameraProviderV2_4TargetTest.cpp b/camera/provider/2.4/vts/functional/VtsHalCameraProviderV2_4TargetTest.cpp index ad3da48aab..464cea646b 100644 --- a/camera/provider/2.4/vts/functional/VtsHalCameraProviderV2_4TargetTest.cpp +++ b/camera/provider/2.4/vts/functional/VtsHalCameraProviderV2_4TargetTest.cpp @@ -882,6 +882,7 @@ public: camera_metadata* oldSessionParams, camera_metadata* newSessionParams); void verifyRequestTemplate(const camera_metadata_t* metadata, RequestTemplate requestTemplate); + static void overrideRotateAndCrop(::android::hardware::hidl_vec *settings /*in/out*/); static bool isDepthOnly(const camera_metadata_t* staticMeta); @@ -4660,6 +4661,7 @@ void CameraHidlTest::processCaptureRequestInternal(uint64_t bufferUsage, settings = req; }); ASSERT_TRUE(ret.isOk()); + overrideRotateAndCrop(&settings); hidl_handle buffer_handle; StreamBuffer outputBuffer; @@ -4836,6 +4838,7 @@ TEST_P(CameraHidlTest, processMultiCaptureRequestPreview) { settings.setToExternal( reinterpret_cast (const_cast (settingsBuffer)), get_camera_metadata_size(settingsBuffer)); + overrideRotateAndCrop(&settings); free_camera_metadata(staticMeta); ret = session->close(); @@ -4913,6 +4916,7 @@ TEST_P(CameraHidlTest, processMultiCaptureRequestPreview) { reinterpret_cast (const_cast ( filteredSettingsBuffer)), get_camera_metadata_size(filteredSettingsBuffer)); + overrideRotateAndCrop(&camSettings[0].settings); camSettings[0].fmqSettingsSize = 0; camSettings[0].physicalCameraId = physicalDeviceId; @@ -5070,6 +5074,7 @@ TEST_P(CameraHidlTest, processUltraHighResolutionRequest) { settings.setToExternal( reinterpret_cast(const_cast(settingsBuffer)), get_camera_metadata_size(settingsBuffer)); + overrideRotateAndCrop(&settings); free_camera_metadata(staticMeta); ret = session->close(); @@ -5305,6 +5310,7 @@ TEST_P(CameraHidlTest, processCaptureRequestBurstISO) { camera_metadata_t *metaBuffer = requestMeta.release(); requestSettings[i].setToExternal(reinterpret_cast (metaBuffer), get_camera_metadata_size(metaBuffer), true); + overrideRotateAndCrop(&requestSettings[i]); requests[i] = {frameNumber + i, 0 /* fmqSettingsSize */, requestSettings[i], emptyInputBuffer, {outputBuffers[i]}}; @@ -5531,6 +5537,7 @@ TEST_P(CameraHidlTest, switchToOffline) { camera_metadata_t *metaBuffer = requestMeta.release(); requestSettings[i].setToExternal(reinterpret_cast (metaBuffer), get_camera_metadata_size(metaBuffer), true); + overrideRotateAndCrop(&requestSettings[i]); requests[i] = {frameNumber + i, 0 /* fmqSettingsSize */, requestSettings[i], emptyInputBuffer, {outputBuffers[i]}}; @@ -5671,6 +5678,7 @@ TEST_P(CameraHidlTest, processCaptureRequestInvalidBuffer) { settings = req; }); ASSERT_TRUE(ret.isOk()); + overrideRotateAndCrop(&settings); ::android::hardware::hidl_vec emptyOutputBuffers; StreamBuffer emptyInputBuffer = {-1, 0, nullptr, BufferStatus::ERROR, nullptr, @@ -5755,6 +5763,7 @@ TEST_P(CameraHidlTest, flushPreviewRequest) { settings = req; }); ASSERT_TRUE(ret.isOk()); + overrideRotateAndCrop(&settings); hidl_handle buffer_handle; if (useHalBufManager) { @@ -8935,6 +8944,25 @@ void CameraHidlTest::verifyRequestTemplate(const camera_metadata_t* metadata, } } +void CameraHidlTest::overrideRotateAndCrop( + ::android::hardware::hidl_vec *settings /*in/out*/) { + if (settings == nullptr) { + return; + } + + ::android::hardware::camera::common::V1_0::helper::CameraMetadata requestMeta; + requestMeta.append(reinterpret_cast (settings->data())); + auto entry = requestMeta.find(ANDROID_SCALER_ROTATE_AND_CROP); + if ((entry.count > 0) && (entry.data.u8[0] == ANDROID_SCALER_ROTATE_AND_CROP_AUTO)) { + uint8_t disableRotateAndCrop = ANDROID_SCALER_ROTATE_AND_CROP_NONE; + requestMeta.update(ANDROID_SCALER_ROTATE_AND_CROP, &disableRotateAndCrop, 1); + settings->releaseData(); + camera_metadata_t *metaBuffer = requestMeta.release(); + settings->setToExternal(reinterpret_cast (metaBuffer), + get_camera_metadata_size(metaBuffer), true); + } +} + GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(CameraHidlTest); INSTANTIATE_TEST_SUITE_P( PerInstance, CameraHidlTest,