1094332d3Sopenharmony_ci/* 2094332d3Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 3094332d3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4094332d3Sopenharmony_ci * you may not use this file except in compliance with the License. 5094332d3Sopenharmony_ci * You may obtain a copy of the License at 6094332d3Sopenharmony_ci * 7094332d3Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8094332d3Sopenharmony_ci * 9094332d3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10094332d3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11094332d3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12094332d3Sopenharmony_ci * See the License for the specific language governing permissions and 13094332d3Sopenharmony_ci * limitations under the License. 14094332d3Sopenharmony_ci */ 15094332d3Sopenharmony_ci 16094332d3Sopenharmony_ci#include "usb_camera_3a_test.h" 17094332d3Sopenharmony_ci 18094332d3Sopenharmony_ciconst TestMetadata CAMERA_3A_TEST_SETS[] = { 19094332d3Sopenharmony_ci // test OHOS_CONTROL_EXPOSURE_MODE 20094332d3Sopenharmony_ci { 21094332d3Sopenharmony_ci .tag =OHOS_CONTROL_EXPOSURE_MODE, 22094332d3Sopenharmony_ci .value = OHOS_CAMERA_EXPOSURE_MODE_MANUAL 23094332d3Sopenharmony_ci }, 24094332d3Sopenharmony_ci { 25094332d3Sopenharmony_ci .tag =OHOS_CONTROL_EXPOSURE_MODE, 26094332d3Sopenharmony_ci .value = OHOS_CAMERA_EXPOSURE_MODE_CONTINUOUS_AUTO 27094332d3Sopenharmony_ci }, 28094332d3Sopenharmony_ci { 29094332d3Sopenharmony_ci .tag =OHOS_CONTROL_EXPOSURE_MODE, 30094332d3Sopenharmony_ci .value = OHOS_CAMERA_EXPOSURE_MODE_AUTO 31094332d3Sopenharmony_ci }, 32094332d3Sopenharmony_ci // test OHOS_CONTROL_AE_LOCK 33094332d3Sopenharmony_ci { 34094332d3Sopenharmony_ci .tag =OHOS_CONTROL_AE_LOCK, 35094332d3Sopenharmony_ci .value = OHOS_CAMERA_AE_LOCK_ON 36094332d3Sopenharmony_ci }, 37094332d3Sopenharmony_ci { 38094332d3Sopenharmony_ci .tag =OHOS_CONTROL_AE_LOCK, 39094332d3Sopenharmony_ci .value = OHOS_CAMERA_AE_LOCK_OFF 40094332d3Sopenharmony_ci }, 41094332d3Sopenharmony_ci 42094332d3Sopenharmony_ci // test OHOS_CONTROL_FOCUS_MODE 43094332d3Sopenharmony_ci { 44094332d3Sopenharmony_ci .tag =OHOS_CONTROL_FOCUS_MODE, 45094332d3Sopenharmony_ci .value = OHOS_CAMERA_FOCUS_MODE_CONTINUOUS_AUTO 46094332d3Sopenharmony_ci }, 47094332d3Sopenharmony_ci { 48094332d3Sopenharmony_ci .tag =OHOS_CONTROL_FOCUS_MODE, 49094332d3Sopenharmony_ci .value = OHOS_CAMERA_FOCUS_MODE_MANUAL 50094332d3Sopenharmony_ci }, 51094332d3Sopenharmony_ci { 52094332d3Sopenharmony_ci .tag =OHOS_CONTROL_FOCUS_MODE, 53094332d3Sopenharmony_ci .value = OHOS_CAMERA_FOCUS_MODE_AUTO 54094332d3Sopenharmony_ci }, 55094332d3Sopenharmony_ci { 56094332d3Sopenharmony_ci .tag =OHOS_CONTROL_FOCUS_MODE, 57094332d3Sopenharmony_ci .value = OHOS_CAMERA_FOCUS_MODE_LOCKED 58094332d3Sopenharmony_ci }, 59094332d3Sopenharmony_ci // test OHOS_CONTROL_METER_MODE 60094332d3Sopenharmony_ci { 61094332d3Sopenharmony_ci .tag =OHOS_CONTROL_METER_MODE, 62094332d3Sopenharmony_ci .value = OHOS_CAMERA_SPOT_METERING 63094332d3Sopenharmony_ci }, 64094332d3Sopenharmony_ci { 65094332d3Sopenharmony_ci .tag =OHOS_CONTROL_METER_MODE, 66094332d3Sopenharmony_ci .value = OHOS_CAMERA_OVERALL_METERING 67094332d3Sopenharmony_ci }, 68094332d3Sopenharmony_ci 69094332d3Sopenharmony_ci // test OHOS_CONTROL_AWB_MODE 70094332d3Sopenharmony_ci { 71094332d3Sopenharmony_ci .tag =OHOS_CONTROL_AWB_MODE, 72094332d3Sopenharmony_ci .value = OHOS_CAMERA_AWB_MODE_AUTO 73094332d3Sopenharmony_ci }, 74094332d3Sopenharmony_ci { 75094332d3Sopenharmony_ci .tag =OHOS_CONTROL_AWB_MODE, 76094332d3Sopenharmony_ci .value = OHOS_CAMERA_AWB_MODE_OFF 77094332d3Sopenharmony_ci }, 78094332d3Sopenharmony_ci { 79094332d3Sopenharmony_ci .tag =OHOS_CONTROL_AWB_MODE, 80094332d3Sopenharmony_ci .value = OHOS_CAMERA_AWB_MODE_INCANDESCENT 81094332d3Sopenharmony_ci }, 82094332d3Sopenharmony_ci { 83094332d3Sopenharmony_ci .tag =OHOS_CONTROL_AWB_MODE, 84094332d3Sopenharmony_ci .value = OHOS_CAMERA_AWB_MODE_FLUORESCENT 85094332d3Sopenharmony_ci }, 86094332d3Sopenharmony_ci { 87094332d3Sopenharmony_ci .tag =OHOS_CONTROL_AWB_MODE, 88094332d3Sopenharmony_ci .value = OHOS_CAMERA_AWB_MODE_WARM_FLUORESCENT 89094332d3Sopenharmony_ci }, 90094332d3Sopenharmony_ci { 91094332d3Sopenharmony_ci .tag =OHOS_CONTROL_AWB_MODE, 92094332d3Sopenharmony_ci .value = OHOS_CAMERA_AWB_MODE_TWILIGHT 93094332d3Sopenharmony_ci }, 94094332d3Sopenharmony_ci { 95094332d3Sopenharmony_ci .tag =OHOS_CONTROL_AWB_MODE, 96094332d3Sopenharmony_ci .value = OHOS_CAMERA_AWB_MODE_DAYLIGHT 97094332d3Sopenharmony_ci }, 98094332d3Sopenharmony_ci { 99094332d3Sopenharmony_ci .tag =OHOS_CONTROL_AWB_MODE, 100094332d3Sopenharmony_ci .value = OHOS_CAMERA_AWB_MODE_CLOUDY_DAYLIGHT 101094332d3Sopenharmony_ci }, 102094332d3Sopenharmony_ci { 103094332d3Sopenharmony_ci .tag =OHOS_CONTROL_AWB_MODE, 104094332d3Sopenharmony_ci .value = OHOS_CAMERA_AWB_MODE_SHADE 105094332d3Sopenharmony_ci }, 106094332d3Sopenharmony_ci 107094332d3Sopenharmony_ci // test OHOS_CONTROL_AWB_LOCK 108094332d3Sopenharmony_ci { 109094332d3Sopenharmony_ci .tag =OHOS_CONTROL_AWB_LOCK, 110094332d3Sopenharmony_ci .value = OHOS_CAMERA_AWB_LOCK_ON 111094332d3Sopenharmony_ci }, 112094332d3Sopenharmony_ci { 113094332d3Sopenharmony_ci .tag =OHOS_CONTROL_AWB_LOCK, 114094332d3Sopenharmony_ci .value = OHOS_CAMERA_AWB_LOCK_OFF 115094332d3Sopenharmony_ci } 116094332d3Sopenharmony_ci}; 117094332d3Sopenharmony_ci 118094332d3Sopenharmony_civoid UtestUSBCamera3ATest::SetUpTestCase(void) 119094332d3Sopenharmony_ci{} 120094332d3Sopenharmony_ci 121094332d3Sopenharmony_civoid UtestUSBCamera3ATest::TearDownTestCase(void) 122094332d3Sopenharmony_ci{} 123094332d3Sopenharmony_ci 124094332d3Sopenharmony_civoid UtestUSBCamera3ATest::SetUp(void) 125094332d3Sopenharmony_ci{ 126094332d3Sopenharmony_ci if (cameraBase_ == nullptr) 127094332d3Sopenharmony_ci cameraBase_ = std::make_shared<TestCameraBase>(); 128094332d3Sopenharmony_ci cameraBase_->UsbInit(); 129094332d3Sopenharmony_ci} 130094332d3Sopenharmony_ci 131094332d3Sopenharmony_civoid UtestUSBCamera3ATest::TearDown(void) 132094332d3Sopenharmony_ci{ 133094332d3Sopenharmony_ci cameraBase_->Close(); 134094332d3Sopenharmony_ci} 135094332d3Sopenharmony_ci 136094332d3Sopenharmony_cibool UtestUSBCamera3ATest::RunCamera3AWithCapture(TestMetadata& metadata) 137094332d3Sopenharmony_ci{ 138094332d3Sopenharmony_ci // Get the device manager 139094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 140094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 141094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 142094332d3Sopenharmony_ci 143094332d3Sopenharmony_ci // Get the stream manager 144094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 145094332d3Sopenharmony_ci 146094332d3Sopenharmony_ci // start stream 147094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW, STILL_CAPTURE}; 148094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 149094332d3Sopenharmony_ci 150094332d3Sopenharmony_ci // updateSettings 151094332d3Sopenharmony_ci const uint32_t itemCapacity = 100; 152094332d3Sopenharmony_ci const uint32_t dataCapacity = 2000; 153094332d3Sopenharmony_ci std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>( 154094332d3Sopenharmony_ci itemCapacity, dataCapacity); 155094332d3Sopenharmony_ci 156094332d3Sopenharmony_ci int ohosTag = metadata.tag; 157094332d3Sopenharmony_ci const uint8_t tagVal = metadata.value; 158094332d3Sopenharmony_ci if (!meta->addEntry(ohosTag, &tagVal, 1)) { 159094332d3Sopenharmony_ci std::cout << GetCameraMetadataItemName(ohosTag) << " tag(" << ohosTag << ") value(" << 160094332d3Sopenharmony_ci static_cast<int>(tagVal) << ") add failed" << std::endl; 161094332d3Sopenharmony_ci return false; 162094332d3Sopenharmony_ci } 163094332d3Sopenharmony_ci std::cout << GetCameraMetadataItemName(ohosTag) << " tag(" << ohosTag << ") value(" << static_cast<int>(tagVal) << 164094332d3Sopenharmony_ci ") add succesed" << std::endl; 165094332d3Sopenharmony_ci const int32_t deviceStreamId = 0; 166094332d3Sopenharmony_ci meta->addEntry(OHOS_CAMERA_STREAM_ID, &deviceStreamId, 1); 167094332d3Sopenharmony_ci std::vector<uint8_t> setting; 168094332d3Sopenharmony_ci MetadataUtils::ConvertMetadataToVec(meta, setting); 169094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->cameraDevice->UpdateSettings(setting); 170094332d3Sopenharmony_ci if (cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR) { 171094332d3Sopenharmony_ci std::cout << "UpdateSettings (" << ohosTag << ")" << " success" << std::endl; 172094332d3Sopenharmony_ci } else { 173094332d3Sopenharmony_ci std::cout << "UpdateSettings (" << ohosTag << ")" << " fail" << std::endl; 174094332d3Sopenharmony_ci return false; 175094332d3Sopenharmony_ci } 176094332d3Sopenharmony_ci 177094332d3Sopenharmony_ci // Get preview 178094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 179094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_CAPTURE, cameraBase_->CAPTURE_ID_CAPTURE, false, true); 180094332d3Sopenharmony_ci // release stream 181094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_CAPTURE}; 182094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_CAPTURE}; 183094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 184094332d3Sopenharmony_ci return cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR; 185094332d3Sopenharmony_ci} 186094332d3Sopenharmony_ci 187094332d3Sopenharmony_cibool UtestUSBCamera3ATest::RunCamera3AWithVideo(TestMetadata& metadata) 188094332d3Sopenharmony_ci{ 189094332d3Sopenharmony_ci // Get the device manager 190094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 191094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 192094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 193094332d3Sopenharmony_ci 194094332d3Sopenharmony_ci // Get the stream manager 195094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 196094332d3Sopenharmony_ci 197094332d3Sopenharmony_ci // start stream 198094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW, VIDEO}; 199094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 200094332d3Sopenharmony_ci 201094332d3Sopenharmony_ci // updateSettings 202094332d3Sopenharmony_ci const uint32_t itemCapacity = 100; 203094332d3Sopenharmony_ci const uint32_t dataCapacity = 2000; 204094332d3Sopenharmony_ci std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>( 205094332d3Sopenharmony_ci itemCapacity, dataCapacity); 206094332d3Sopenharmony_ci 207094332d3Sopenharmony_ci int ohosTag = metadata.tag; 208094332d3Sopenharmony_ci const uint8_t tagVal = metadata.value; 209094332d3Sopenharmony_ci if (!meta->addEntry(ohosTag, &tagVal, 1)) { 210094332d3Sopenharmony_ci std::cout << GetCameraMetadataItemName(ohosTag) << "tag(" << ohosTag << ") value(" << 211094332d3Sopenharmony_ci static_cast<int>(tagVal) << ") add failed" << std::endl; 212094332d3Sopenharmony_ci return false; 213094332d3Sopenharmony_ci } 214094332d3Sopenharmony_ci std::cout << GetCameraMetadataItemName(ohosTag) << "tag(" << ohosTag << ") value(" << static_cast<int>(tagVal) << 215094332d3Sopenharmony_ci ") add succesed" << std::endl; 216094332d3Sopenharmony_ci const int32_t deviceStreamId = 0; 217094332d3Sopenharmony_ci meta->addEntry(OHOS_CAMERA_STREAM_ID, &deviceStreamId, 1); 218094332d3Sopenharmony_ci std::vector<uint8_t> setting; 219094332d3Sopenharmony_ci MetadataUtils::ConvertMetadataToVec(meta, setting); 220094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->cameraDevice->UpdateSettings(setting); 221094332d3Sopenharmony_ci if (cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR) { 222094332d3Sopenharmony_ci std::cout << "UpdateSettings (" << ohosTag << ")" << " success" << std::endl; 223094332d3Sopenharmony_ci } else { 224094332d3Sopenharmony_ci std::cout << "UpdateSettings (" << ohosTag << ")" << " fail" << std::endl; 225094332d3Sopenharmony_ci return false; 226094332d3Sopenharmony_ci } 227094332d3Sopenharmony_ci 228094332d3Sopenharmony_ci // get preview 229094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 230094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_VIDEO, cameraBase_->CAPTURE_ID_VIDEO, false, true); 231094332d3Sopenharmony_ci 232094332d3Sopenharmony_ci // release stream 233094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_VIDEO}; 234094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_VIDEO}; 235094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 236094332d3Sopenharmony_ci return cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR; 237094332d3Sopenharmony_ci} 238094332d3Sopenharmony_ci 239094332d3Sopenharmony_ciTEST_P(UtestUSBCamera3ATest, CaptureTest) 240094332d3Sopenharmony_ci{ 241094332d3Sopenharmony_ci TestMetadata params = GetParam(); 242094332d3Sopenharmony_ci bool ret = RunCamera3AWithCapture(params); 243094332d3Sopenharmony_ci EXPECT_EQ(ret, true); 244094332d3Sopenharmony_ci} 245094332d3Sopenharmony_ci 246094332d3Sopenharmony_ciTEST_P(UtestUSBCamera3ATest, VideoTest) 247094332d3Sopenharmony_ci{ 248094332d3Sopenharmony_ci TestMetadata params = GetParam(); 249094332d3Sopenharmony_ci bool ret = RunCamera3AWithVideo(params); 250094332d3Sopenharmony_ci EXPECT_EQ(ret, true); 251094332d3Sopenharmony_ci} 252094332d3Sopenharmony_ci 253094332d3Sopenharmony_ciINSTANTIATE_TEST_SUITE_P(Test3A, UtestUSBCamera3ATest, ::testing::ValuesIn(CAMERA_3A_TEST_SETS)); 254094332d3Sopenharmony_ci 255094332d3Sopenharmony_ci/** 256094332d3Sopenharmony_ci * @tc.name: USB Camera 3A 257094332d3Sopenharmony_ci * @tc.desc: set OHOS_SENSOR_EXPOSURE_TIME 258094332d3Sopenharmony_ci * @tc.level: Level0 259094332d3Sopenharmony_ci * @tc.size: MediumTest 260094332d3Sopenharmony_ci * @tc.type: Function 261094332d3Sopenharmony_ci */ 262094332d3Sopenharmony_ciTEST_F(UtestUSBCamera3ATest, usb_camera_3a_001) 263094332d3Sopenharmony_ci{ 264094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 265094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 266094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 267094332d3Sopenharmony_ci 268094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 269094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW, STILL_CAPTURE}; 270094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 271094332d3Sopenharmony_ci 272094332d3Sopenharmony_ci const uint32_t itemCapacity = 100; 273094332d3Sopenharmony_ci const uint32_t dataCapacity = 2000; 274094332d3Sopenharmony_ci std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(itemCapacity, dataCapacity); 275094332d3Sopenharmony_ci 276094332d3Sopenharmony_ci int ohosTag = OHOS_SENSOR_EXPOSURE_TIME; 277094332d3Sopenharmony_ci const int tagVal = 100; 278094332d3Sopenharmony_ci if (!meta->addEntry(ohosTag, &tagVal, 1)) { 279094332d3Sopenharmony_ci GTEST_SKIP(); 280094332d3Sopenharmony_ci } 281094332d3Sopenharmony_ci const int32_t deviceStreamId = 0; 282094332d3Sopenharmony_ci meta->addEntry(OHOS_CAMERA_STREAM_ID, &deviceStreamId, 1); 283094332d3Sopenharmony_ci std::vector<uint8_t> setting; 284094332d3Sopenharmony_ci MetadataUtils::ConvertMetadataToVec(meta, setting); 285094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->cameraDevice->UpdateSettings(setting); 286094332d3Sopenharmony_ci if (cameraBase_->rc != HDI::Camera::V1_0::NO_ERROR) { 287094332d3Sopenharmony_ci GTEST_SKIP(); 288094332d3Sopenharmony_ci } 289094332d3Sopenharmony_ci 290094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 291094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_CAPTURE, cameraBase_->CAPTURE_ID_CAPTURE, false, true); 292094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_CAPTURE}; 293094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_CAPTURE}; 294094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 295094332d3Sopenharmony_ci EXPECT_EQ(cameraBase_->rc, HDI::Camera::V1_0::NO_ERROR); 296094332d3Sopenharmony_ci} 297094332d3Sopenharmony_ci 298094332d3Sopenharmony_ci/** 299094332d3Sopenharmony_ci * @tc.name: USB Camera 3A 300094332d3Sopenharmony_ci * @tc.desc: set OHOS_CAMERA_SPOT_METERING first, then set OHOS_CAMERA_REGION_METERING 301094332d3Sopenharmony_ci * @tc.level: Level0 302094332d3Sopenharmony_ci * @tc.size: MediumTest 303094332d3Sopenharmony_ci * @tc.type: Function 304094332d3Sopenharmony_ci */ 305094332d3Sopenharmony_ciTEST_F(UtestUSBCamera3ATest, usb_camera_3a_002) 306094332d3Sopenharmony_ci{ 307094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 308094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 309094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 310094332d3Sopenharmony_ci 311094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 312094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW, STILL_CAPTURE}; 313094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 314094332d3Sopenharmony_ci 315094332d3Sopenharmony_ci const uint32_t itemCapacity = 100; 316094332d3Sopenharmony_ci const uint32_t dataCapacity = 2000; 317094332d3Sopenharmony_ci std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>( 318094332d3Sopenharmony_ci itemCapacity, dataCapacity); 319094332d3Sopenharmony_ci 320094332d3Sopenharmony_ci int ohosTag = OHOS_CONTROL_METER_MODE; 321094332d3Sopenharmony_ci uint8_t tagVal = OHOS_CAMERA_OVERALL_METERING; 322094332d3Sopenharmony_ci if (!meta->addEntry(ohosTag, &tagVal, 1)) { 323094332d3Sopenharmony_ci GTEST_SKIP(); 324094332d3Sopenharmony_ci } 325094332d3Sopenharmony_ci 326094332d3Sopenharmony_ci const int32_t deviceStreamId = 0; 327094332d3Sopenharmony_ci meta->addEntry(OHOS_CAMERA_STREAM_ID, &deviceStreamId, 1); 328094332d3Sopenharmony_ci std::vector<uint8_t> setting; 329094332d3Sopenharmony_ci MetadataUtils::ConvertMetadataToVec(meta, setting); 330094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->cameraDevice->UpdateSettings(setting); 331094332d3Sopenharmony_ci if (cameraBase_->rc != HDI::Camera::V1_0::NO_ERROR) { 332094332d3Sopenharmony_ci GTEST_SKIP(); 333094332d3Sopenharmony_ci } 334094332d3Sopenharmony_ci 335094332d3Sopenharmony_ci tagVal = OHOS_CAMERA_REGION_METERING; 336094332d3Sopenharmony_ci std::vector<uint8_t> valVector; 337094332d3Sopenharmony_ci valVector.push_back(tagVal); 338094332d3Sopenharmony_ci if (!meta->updateEntry(ohosTag, valVector.data(), valVector.size())) { 339094332d3Sopenharmony_ci CAMERA_LOGE("update %{public}s failed", GetCameraMetadataItemName(ohosTag)); 340094332d3Sopenharmony_ci } 341094332d3Sopenharmony_ci 342094332d3Sopenharmony_ci setting.clear(); 343094332d3Sopenharmony_ci MetadataUtils::ConvertMetadataToVec(meta, setting); 344094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->cameraDevice->UpdateSettings(setting); 345094332d3Sopenharmony_ci if (cameraBase_->rc != HDI::Camera::V1_0::NO_ERROR) { 346094332d3Sopenharmony_ci GTEST_SKIP(); 347094332d3Sopenharmony_ci } 348094332d3Sopenharmony_ci 349094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 350094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_CAPTURE, cameraBase_->CAPTURE_ID_CAPTURE, false, true); 351094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_CAPTURE}; 352094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_CAPTURE}; 353094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 354094332d3Sopenharmony_ci EXPECT_EQ(cameraBase_->rc, HDI::Camera::V1_0::NO_ERROR); 355094332d3Sopenharmony_ci} 356094332d3Sopenharmony_ci 357094332d3Sopenharmony_ci/** 358094332d3Sopenharmony_ci * @tc.name: USB Camera 3A 359094332d3Sopenharmony_ci * @tc.desc: set OHOS_CONTROL_AE_LOCK first, then set OHOS_CAMERA_EXPOSURE_MODE_LOCKED 360094332d3Sopenharmony_ci * @tc.level: Level0 361094332d3Sopenharmony_ci * @tc.size: MediumTest 362094332d3Sopenharmony_ci * @tc.type: Function 363094332d3Sopenharmony_ci */ 364094332d3Sopenharmony_ciTEST_F(UtestUSBCamera3ATest, usb_camera_3a_003) 365094332d3Sopenharmony_ci{ 366094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 367094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 368094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 369094332d3Sopenharmony_ci 370094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 371094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW, STILL_CAPTURE}; 372094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 373094332d3Sopenharmony_ci 374094332d3Sopenharmony_ci const uint32_t itemCapacity = 100; 375094332d3Sopenharmony_ci const uint32_t dataCapacity = 2000; 376094332d3Sopenharmony_ci std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(itemCapacity, dataCapacity); 377094332d3Sopenharmony_ci 378094332d3Sopenharmony_ci int ohosTag = OHOS_CONTROL_AE_LOCK; 379094332d3Sopenharmony_ci const uint8_t tagVal = OHOS_CAMERA_AE_LOCK_OFF; 380094332d3Sopenharmony_ci if (!meta->addEntry(ohosTag, &tagVal, 1)) { 381094332d3Sopenharmony_ci GTEST_SKIP(); 382094332d3Sopenharmony_ci } 383094332d3Sopenharmony_ci 384094332d3Sopenharmony_ci const int32_t deviceStreamId = 0; 385094332d3Sopenharmony_ci meta->addEntry(OHOS_CAMERA_STREAM_ID, &deviceStreamId, 1); 386094332d3Sopenharmony_ci std::vector<uint8_t> setting; 387094332d3Sopenharmony_ci MetadataUtils::ConvertMetadataToVec(meta, setting); 388094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->cameraDevice->UpdateSettings(setting); 389094332d3Sopenharmony_ci if (cameraBase_->rc != HDI::Camera::V1_0::NO_ERROR) { 390094332d3Sopenharmony_ci GTEST_SKIP(); 391094332d3Sopenharmony_ci } 392094332d3Sopenharmony_ci 393094332d3Sopenharmony_ci ohosTag = OHOS_CONTROL_EXPOSURE_MODE; 394094332d3Sopenharmony_ci const uint8_t newTagVal = OHOS_CAMERA_EXPOSURE_MODE_LOCKED; 395094332d3Sopenharmony_ci if (!meta->addEntry(ohosTag, &newTagVal, 1)) { 396094332d3Sopenharmony_ci GTEST_SKIP(); 397094332d3Sopenharmony_ci } 398094332d3Sopenharmony_ci 399094332d3Sopenharmony_ci setting.clear(); 400094332d3Sopenharmony_ci MetadataUtils::ConvertMetadataToVec(meta, setting); 401094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->cameraDevice->UpdateSettings(setting); 402094332d3Sopenharmony_ci if (cameraBase_->rc != HDI::Camera::V1_0::NO_ERROR) { 403094332d3Sopenharmony_ci GTEST_SKIP(); 404094332d3Sopenharmony_ci } 405094332d3Sopenharmony_ci 406094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 407094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_CAPTURE, cameraBase_->CAPTURE_ID_CAPTURE, false, true); 408094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_CAPTURE}; 409094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_CAPTURE}; 410094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 411094332d3Sopenharmony_ci EXPECT_EQ(cameraBase_->rc, HDI::Camera::V1_0::NO_ERROR); 412094332d3Sopenharmony_ci} 413094332d3Sopenharmony_ci 414094332d3Sopenharmony_ci/** 415094332d3Sopenharmony_ci * @tc.name: USB Camera 3A 416094332d3Sopenharmony_ci * @tc.desc: set OHOS_CAMERA_FOCUS_MODE_CONTINUOUS_AUTO first, then set OHOS_CAMERA_FOCUS_MODE_MANUAL 417094332d3Sopenharmony_ci * @tc.level: Level0 418094332d3Sopenharmony_ci * @tc.size: MediumTest 419094332d3Sopenharmony_ci * @tc.type: Function 420094332d3Sopenharmony_ci */ 421094332d3Sopenharmony_ciTEST_F(UtestUSBCamera3ATest, usb_camera_3a_004) 422094332d3Sopenharmony_ci{ 423094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 424094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 425094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 426094332d3Sopenharmony_ci 427094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 428094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW, STILL_CAPTURE}; 429094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 430094332d3Sopenharmony_ci 431094332d3Sopenharmony_ci const uint32_t itemCapacity = 100; 432094332d3Sopenharmony_ci const uint32_t dataCapacity = 2000; 433094332d3Sopenharmony_ci std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>( 434094332d3Sopenharmony_ci itemCapacity, dataCapacity); 435094332d3Sopenharmony_ci 436094332d3Sopenharmony_ci int ohosTag = OHOS_CONTROL_FOCUS_MODE; 437094332d3Sopenharmony_ci uint8_t tagVal = OHOS_CAMERA_FOCUS_MODE_CONTINUOUS_AUTO; 438094332d3Sopenharmony_ci if (!meta->addEntry(ohosTag, &tagVal, 1)) { 439094332d3Sopenharmony_ci GTEST_SKIP(); 440094332d3Sopenharmony_ci } 441094332d3Sopenharmony_ci 442094332d3Sopenharmony_ci const int32_t deviceStreamId = 0; 443094332d3Sopenharmony_ci meta->addEntry(OHOS_CAMERA_STREAM_ID, &deviceStreamId, 1); 444094332d3Sopenharmony_ci std::vector<uint8_t> setting; 445094332d3Sopenharmony_ci MetadataUtils::ConvertMetadataToVec(meta, setting); 446094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->cameraDevice->UpdateSettings(setting); 447094332d3Sopenharmony_ci if (cameraBase_->rc != HDI::Camera::V1_0::NO_ERROR) { 448094332d3Sopenharmony_ci GTEST_SKIP(); 449094332d3Sopenharmony_ci } 450094332d3Sopenharmony_ci 451094332d3Sopenharmony_ci tagVal = OHOS_CAMERA_FOCUS_MODE_MANUAL; 452094332d3Sopenharmony_ci std::vector<uint8_t> valVector; 453094332d3Sopenharmony_ci valVector.push_back(tagVal); 454094332d3Sopenharmony_ci if (!meta->updateEntry(ohosTag, valVector.data(), valVector.size())) { 455094332d3Sopenharmony_ci CAMERA_LOGE("update %{public}s failed", GetCameraMetadataItemName(ohosTag)); 456094332d3Sopenharmony_ci } 457094332d3Sopenharmony_ci 458094332d3Sopenharmony_ci setting.clear(); 459094332d3Sopenharmony_ci MetadataUtils::ConvertMetadataToVec(meta, setting); 460094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->cameraDevice->UpdateSettings(setting); 461094332d3Sopenharmony_ci if (cameraBase_->rc != HDI::Camera::V1_0::NO_ERROR) { 462094332d3Sopenharmony_ci GTEST_SKIP(); 463094332d3Sopenharmony_ci } 464094332d3Sopenharmony_ci 465094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 466094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_CAPTURE, cameraBase_->CAPTURE_ID_CAPTURE, false, true); 467094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_CAPTURE}; 468094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_CAPTURE}; 469094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 470094332d3Sopenharmony_ci EXPECT_EQ(cameraBase_->rc, HDI::Camera::V1_0::NO_ERROR); 471094332d3Sopenharmony_ci}