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#include "usb_camera_test.h" 16094332d3Sopenharmony_ci 17094332d3Sopenharmony_cibool g_usbCameraExit = false; 18094332d3Sopenharmony_ci 19094332d3Sopenharmony_civoid UtestUSBCameraTest::SetUpTestCase(void) 20094332d3Sopenharmony_ci{} 21094332d3Sopenharmony_civoid UtestUSBCameraTest::TearDownTestCase(void) 22094332d3Sopenharmony_ci{} 23094332d3Sopenharmony_civoid UtestUSBCameraTest::SetUp(void) 24094332d3Sopenharmony_ci{ 25094332d3Sopenharmony_ci if (cameraBase_ == nullptr) 26094332d3Sopenharmony_ci cameraBase_ = std::make_shared<TestCameraBase>(); 27094332d3Sopenharmony_ci cameraBase_->UsbInit(); 28094332d3Sopenharmony_ci} 29094332d3Sopenharmony_civoid UtestUSBCameraTest::TearDown(void) 30094332d3Sopenharmony_ci{ 31094332d3Sopenharmony_ci cameraBase_->Close(); 32094332d3Sopenharmony_ci} 33094332d3Sopenharmony_ci 34094332d3Sopenharmony_ci/** 35094332d3Sopenharmony_ci * @tc.name: USB Camera 36094332d3Sopenharmony_ci * @tc.desc: USB Camera, getCameraID success. 37094332d3Sopenharmony_ci * @tc.level: Level0 38094332d3Sopenharmony_ci * @tc.size: MediumTest 39094332d3Sopenharmony_ci * @tc.type: Function 40094332d3Sopenharmony_ci */ 41094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0001) 42094332d3Sopenharmony_ci{ 43094332d3Sopenharmony_ci uint32_t rc = 0; 44094332d3Sopenharmony_ci std::cout << "==========[test log] USB Camera, getCameraID success."<< std::endl; 45094332d3Sopenharmony_ci std::vector<std::string> cameraIds; 46094332d3Sopenharmony_ci std::cout << "==========[test log] 1. get current system cameraID."<< std::endl; 47094332d3Sopenharmony_ci cameraBase_->cameraHost->GetCameraIds(cameraIds); 48094332d3Sopenharmony_ci std::cout << "==========[test log] First cameraId.size = " << cameraIds.size() << std::endl; 49094332d3Sopenharmony_ci std::cout << "==========[test log] OnCameraStatus interface has been mobilized" << std::endl; 50094332d3Sopenharmony_ci for (const auto &cameraId : cameraIds) { 51094332d3Sopenharmony_ci std::cout << "==========[test log] cameraId = " << cameraId << std::endl; 52094332d3Sopenharmony_ci } 53094332d3Sopenharmony_ci std::cout << "==========[test log] 2. please add or delete the usb camera, wait for 10s..."<< std::endl; 54094332d3Sopenharmony_ci sleep(3); // judging add or delete the usb camera, wait for 3s. 55094332d3Sopenharmony_ci std::cout << "==========[test log] r u ready? wait for 10s..."<< std::endl; 56094332d3Sopenharmony_ci sleep(3); // judging r u ready, wait for 3s. 57094332d3Sopenharmony_ci std::cout << "==========[test log] 3. check the cameraID again... wait for 10s..."<< std::endl; 58094332d3Sopenharmony_ci sleep(3); // checking the cameraID again, wait for 3s. 59094332d3Sopenharmony_ci std::cout << "==========[test log] Second cameraId.size = " << cameraIds.size() << std::endl; 60094332d3Sopenharmony_ci if (cameraIds.size() == 1) { 61094332d3Sopenharmony_ci cameraIds.clear(); 62094332d3Sopenharmony_ci } 63094332d3Sopenharmony_ci rc = cameraBase_->cameraHost->GetCameraIds(cameraIds); 64094332d3Sopenharmony_ci EXPECT_EQ(rc, HDI::Camera::V1_0::NO_ERROR); 65094332d3Sopenharmony_ci for (const auto &cameraId : cameraIds) { 66094332d3Sopenharmony_ci std::cout << "cameraId = " << cameraId << std::endl; 67094332d3Sopenharmony_ci } 68094332d3Sopenharmony_ci if (cameraIds.size() > 1) { 69094332d3Sopenharmony_ci g_usbCameraExit = true; 70094332d3Sopenharmony_ci } 71094332d3Sopenharmony_ci} 72094332d3Sopenharmony_ci 73094332d3Sopenharmony_ci/** 74094332d3Sopenharmony_ci * @tc.name: USB Camera 75094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_ZOOM_RATIO_RANGE 76094332d3Sopenharmony_ci * @tc.level: Level0 77094332d3Sopenharmony_ci * @tc.size: MediumTest 78094332d3Sopenharmony_ci * @tc.type: Function 79094332d3Sopenharmony_ci */ 80094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0002) 81094332d3Sopenharmony_ci{ 82094332d3Sopenharmony_ci if (!g_usbCameraExit) { 83094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 84094332d3Sopenharmony_ci } 85094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 86094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 87094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 88094332d3Sopenharmony_ci camera_metadata_item_t entry; 89094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_ZOOM_RATIO_RANGE, &entry); 90094332d3Sopenharmony_ci if (ret == CAM_META_SUCCESS) { 91094332d3Sopenharmony_ci std::cout << "OHOS_ABILITY_ZOOM_RATIO_RANGE: count is " << (int)entry.count << std::endl; 92094332d3Sopenharmony_ci std::cout << "Zoom ratio range: [" << entry.data.f[0]; 93094332d3Sopenharmony_ci std::cout << "," << entry.data.f[1] << "]" << std::endl; 94094332d3Sopenharmony_ci } else if (ret == CAM_META_ITEM_NOT_FOUND) { 95094332d3Sopenharmony_ci std::cout << "OHOS_ABILITY_ZOOM_RATIO_RANGE is not support" << std::endl; 96094332d3Sopenharmony_ci } 97094332d3Sopenharmony_ci} 98094332d3Sopenharmony_ci 99094332d3Sopenharmony_ci/** 100094332d3Sopenharmony_ci * @tc.name: USB Camera 101094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_CAMERA_CONNECTION_TYPE 102094332d3Sopenharmony_ci * @tc.level: Level0 103094332d3Sopenharmony_ci * @tc.size: MediumTest 104094332d3Sopenharmony_ci * @tc.type: Function 105094332d3Sopenharmony_ci */ 106094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0003) 107094332d3Sopenharmony_ci{ 108094332d3Sopenharmony_ci if (!g_usbCameraExit) { 109094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 110094332d3Sopenharmony_ci } 111094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 112094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 113094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 114094332d3Sopenharmony_ci camera_metadata_item_t entry; 115094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_CAMERA_CONNECTION_TYPE, &entry); 116094332d3Sopenharmony_ci EXPECT_EQ(ret, CAM_META_SUCCESS); 117094332d3Sopenharmony_ci std::cout << "OHOS_ABILITY_CAMERA_CONNECTION_TYPE value is " 118094332d3Sopenharmony_ci << static_cast<int>(entry.data.u8[0]) << std::endl; 119094332d3Sopenharmony_ci EXPECT_TRUE(entry.data.u8[0] == OHOS_CAMERA_CONNECTION_TYPE_USB_PLUGIN); 120094332d3Sopenharmony_ci} 121094332d3Sopenharmony_ci 122094332d3Sopenharmony_ci/** 123094332d3Sopenharmony_ci * @tc.name: USB Camera 124094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_CAMERA_POSITION 125094332d3Sopenharmony_ci * @tc.level: Level0 126094332d3Sopenharmony_ci * @tc.size: MediumTest 127094332d3Sopenharmony_ci * @tc.type: Function 128094332d3Sopenharmony_ci */ 129094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0004) 130094332d3Sopenharmony_ci{ 131094332d3Sopenharmony_ci if (!g_usbCameraExit) { 132094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 133094332d3Sopenharmony_ci } 134094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 135094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 136094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 137094332d3Sopenharmony_ci camera_metadata_item_t entry; 138094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_CAMERA_POSITION, &entry); 139094332d3Sopenharmony_ci EXPECT_EQ(ret, CAM_META_SUCCESS); 140094332d3Sopenharmony_ci std::cout << "OHOS_ABILITY_CAMERA_POSITION value is " << static_cast<int>(entry.data.u8[0]) << std::endl; 141094332d3Sopenharmony_ci EXPECT_TRUE(entry.data.u8[0] == OHOS_CAMERA_POSITION_OTHER); 142094332d3Sopenharmony_ci} 143094332d3Sopenharmony_ci 144094332d3Sopenharmony_ci/** 145094332d3Sopenharmony_ci * @tc.name: USB Camera 146094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_FLASH_AVAILABLE 147094332d3Sopenharmony_ci * @tc.level: Level0 148094332d3Sopenharmony_ci * @tc.size: MediumTest 149094332d3Sopenharmony_ci * @tc.type: Function 150094332d3Sopenharmony_ci */ 151094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0005) 152094332d3Sopenharmony_ci{ 153094332d3Sopenharmony_ci if (!g_usbCameraExit) { 154094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 155094332d3Sopenharmony_ci } 156094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 157094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 158094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 159094332d3Sopenharmony_ci camera_metadata_item_t entry; 160094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_FLASH_AVAILABLE, &entry); 161094332d3Sopenharmony_ci EXPECT_EQ(ret, CAM_META_SUCCESS); 162094332d3Sopenharmony_ci std::cout << "OHOS_ABILITY_FLASH_AVAILABLE value is " << static_cast<int>(entry.data.u8[0]) << std::endl; 163094332d3Sopenharmony_ci} 164094332d3Sopenharmony_ci 165094332d3Sopenharmony_ci/** 166094332d3Sopenharmony_ci * @tc.name: USB Camera 167094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_VIDEO_STABILIZATION_MODES 168094332d3Sopenharmony_ci * @tc.level: Level0 169094332d3Sopenharmony_ci * @tc.size: MediumTest 170094332d3Sopenharmony_ci * @tc.type: Function 171094332d3Sopenharmony_ci */ 172094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0006) 173094332d3Sopenharmony_ci{ 174094332d3Sopenharmony_ci if (!g_usbCameraExit) { 175094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 176094332d3Sopenharmony_ci } 177094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 178094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 179094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 180094332d3Sopenharmony_ci camera_metadata_item_t entry; 181094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_VIDEO_STABILIZATION_MODES, &entry); 182094332d3Sopenharmony_ci if (ret == CAM_META_SUCCESS) { 183094332d3Sopenharmony_ci for (int i = 0; i < entry.count; i++) { 184094332d3Sopenharmony_ci std::cout << "OHOS_ABILITY_VIDEO_STABILIZATION_MODES value is " 185094332d3Sopenharmony_ci << static_cast<int>(entry.data.u8[i]) << std::endl; 186094332d3Sopenharmony_ci } 187094332d3Sopenharmony_ci } else if (ret == CAM_META_ITEM_NOT_FOUND) { 188094332d3Sopenharmony_ci std::cout << "OHOS_ABILITY_VIDEO_STABILIZATION_MODES is not support" << std::endl; 189094332d3Sopenharmony_ci } 190094332d3Sopenharmony_ci} 191094332d3Sopenharmony_ci 192094332d3Sopenharmony_ci/** 193094332d3Sopenharmony_ci * @tc.name: USB Camera 194094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_FLASH_MODES 195094332d3Sopenharmony_ci * @tc.level: Level0 196094332d3Sopenharmony_ci * @tc.size: MediumTest 197094332d3Sopenharmony_ci * @tc.type: Function 198094332d3Sopenharmony_ci */ 199094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_007) 200094332d3Sopenharmony_ci{ 201094332d3Sopenharmony_ci if (!g_usbCameraExit) { 202094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 203094332d3Sopenharmony_ci } 204094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 205094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 206094332d3Sopenharmony_ci camera_metadata_item_t entry; 207094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_FLASH_MODES, &entry); 208094332d3Sopenharmony_ci if (ret == CAM_META_SUCCESS) { 209094332d3Sopenharmony_ci std::cout << "supported flash mode list:"; 210094332d3Sopenharmony_ci for (int i = 0; i < entry.count; i++) { 211094332d3Sopenharmony_ci std::cout << " " << static_cast<int>(entry.data.u8[i]); 212094332d3Sopenharmony_ci } 213094332d3Sopenharmony_ci std::cout << std::endl; 214094332d3Sopenharmony_ci } else if (ret == CAM_META_ITEM_NOT_FOUND) { 215094332d3Sopenharmony_ci std::cout << "OHOS_ABILITY_FLASH_MODES is not support" << std::endl; 216094332d3Sopenharmony_ci } 217094332d3Sopenharmony_ci} 218094332d3Sopenharmony_ci 219094332d3Sopenharmony_ci/** 220094332d3Sopenharmony_ci * @tc.name: USB Camera 221094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_FOCUS_MODES 222094332d3Sopenharmony_ci * @tc.level: Level0 223094332d3Sopenharmony_ci * @tc.size: MediumTest 224094332d3Sopenharmony_ci * @tc.type: Function 225094332d3Sopenharmony_ci */ 226094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_008) 227094332d3Sopenharmony_ci{ 228094332d3Sopenharmony_ci if (!g_usbCameraExit) { 229094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 230094332d3Sopenharmony_ci } 231094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 232094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 233094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 234094332d3Sopenharmony_ci camera_metadata_item_t entry; 235094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_FOCUS_MODES, &entry); 236094332d3Sopenharmony_ci if (ret == CAM_META_SUCCESS) { 237094332d3Sopenharmony_ci std::cout << "supported focus mode list:"; 238094332d3Sopenharmony_ci for (int i = 0; i < entry.count; i++) { 239094332d3Sopenharmony_ci std::cout << " " << static_cast<int>(entry.data.u8[i]); 240094332d3Sopenharmony_ci } 241094332d3Sopenharmony_ci std::cout << std::endl; 242094332d3Sopenharmony_ci } else if (ret == CAM_META_ITEM_NOT_FOUND) { 243094332d3Sopenharmony_ci std::cout << "OHOS_ABILITY_FOCUS_MODES is not support" << std::endl; 244094332d3Sopenharmony_ci } 245094332d3Sopenharmony_ci} 246094332d3Sopenharmony_ci 247094332d3Sopenharmony_ci/** 248094332d3Sopenharmony_ci * @tc.name: USB Camera 249094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_EXPOSURE_MODES 250094332d3Sopenharmony_ci * @tc.level: Level0 251094332d3Sopenharmony_ci * @tc.size: MediumTest 252094332d3Sopenharmony_ci * @tc.type: Function 253094332d3Sopenharmony_ci */ 254094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_009) 255094332d3Sopenharmony_ci{ 256094332d3Sopenharmony_ci if (!g_usbCameraExit) { 257094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 258094332d3Sopenharmony_ci } 259094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 260094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 261094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 262094332d3Sopenharmony_ci camera_metadata_item_t entry; 263094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_EXPOSURE_MODES, &entry); 264094332d3Sopenharmony_ci if (ret == CAM_META_SUCCESS) { 265094332d3Sopenharmony_ci std::cout << "supported exposure mode list:"; 266094332d3Sopenharmony_ci for (int i = 0; i < entry.count; i++) { 267094332d3Sopenharmony_ci std::cout << " " << static_cast<int>(entry.data.u8[i]); 268094332d3Sopenharmony_ci } 269094332d3Sopenharmony_ci std::cout << std::endl; 270094332d3Sopenharmony_ci } else if (ret == CAM_META_ITEM_NOT_FOUND) { 271094332d3Sopenharmony_ci std::cout << "OHOS_ABILITY_EXPOSURE_MODES is not support" << std::endl; 272094332d3Sopenharmony_ci } 273094332d3Sopenharmony_ci} 274094332d3Sopenharmony_ci 275094332d3Sopenharmony_ci/** 276094332d3Sopenharmony_ci * @tc.name: USB Camera 277094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_CONTROL_CAPTURE_MIRROR_SUPPORTED 278094332d3Sopenharmony_ci * @tc.level: Level0 279094332d3Sopenharmony_ci * @tc.size: MediumTest 280094332d3Sopenharmony_ci * @tc.type: Function 281094332d3Sopenharmony_ci */ 282094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0010) 283094332d3Sopenharmony_ci{ 284094332d3Sopenharmony_ci if (!g_usbCameraExit) { 285094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 286094332d3Sopenharmony_ci } 287094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 288094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 289094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 290094332d3Sopenharmony_ci camera_metadata_item_t entry; 291094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_CONTROL_CAPTURE_MIRROR_SUPPORTED, &entry); 292094332d3Sopenharmony_ci EXPECT_EQ(ret, CAM_META_SUCCESS); 293094332d3Sopenharmony_ci std::cout << "capture mirror supported is :"; 294094332d3Sopenharmony_ci for (int i = 0; i < entry.count; i++) { 295094332d3Sopenharmony_ci std::cout << " " << static_cast<int>(entry.data.u8[i]); 296094332d3Sopenharmony_ci } 297094332d3Sopenharmony_ci std::cout << std::endl; 298094332d3Sopenharmony_ci} 299094332d3Sopenharmony_ci 300094332d3Sopenharmony_ci/** 301094332d3Sopenharmony_ci * @tc.name: USB Camera 302094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_MUTE_MODES 303094332d3Sopenharmony_ci * @tc.level: Level0 304094332d3Sopenharmony_ci * @tc.size: MediumTest 305094332d3Sopenharmony_ci * @tc.type: Function 306094332d3Sopenharmony_ci */ 307094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0011) 308094332d3Sopenharmony_ci{ 309094332d3Sopenharmony_ci if (!g_usbCameraExit) { 310094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 311094332d3Sopenharmony_ci } 312094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 313094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 314094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 315094332d3Sopenharmony_ci camera_metadata_item_t entry; 316094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_MUTE_MODES, &entry); 317094332d3Sopenharmony_ci if (ret == CAM_META_SUCCESS) { 318094332d3Sopenharmony_ci std::cout << "supported mute mode is:"; 319094332d3Sopenharmony_ci for (int i = 0; i < entry.count; i++) { 320094332d3Sopenharmony_ci std::cout << " " << static_cast<int>(entry.data.u8[i]); 321094332d3Sopenharmony_ci } 322094332d3Sopenharmony_ci std::cout << std::endl; 323094332d3Sopenharmony_ci } else if (ret == CAM_META_ITEM_NOT_FOUND) { 324094332d3Sopenharmony_ci std::cout << "OHOS_ABILITY_MUTE_MODES is not support" << std::endl; 325094332d3Sopenharmony_ci } 326094332d3Sopenharmony_ci} 327094332d3Sopenharmony_ci 328094332d3Sopenharmony_ci/** 329094332d3Sopenharmony_ci * @tc.name: USB Camera 330094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_FPS_RANGES 331094332d3Sopenharmony_ci * @tc.level: Level0 332094332d3Sopenharmony_ci * @tc.size: MediumTest 333094332d3Sopenharmony_ci * @tc.type: Function 334094332d3Sopenharmony_ci */ 335094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0012) 336094332d3Sopenharmony_ci{ 337094332d3Sopenharmony_ci if (!g_usbCameraExit) { 338094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 339094332d3Sopenharmony_ci } 340094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 341094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 342094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 343094332d3Sopenharmony_ci camera_metadata_item_t entry; 344094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_FPS_RANGES, &entry); 345094332d3Sopenharmony_ci EXPECT_EQ(ret, CAM_META_SUCCESS); 346094332d3Sopenharmony_ci std::cout << "supported fps ranges list: ["; 347094332d3Sopenharmony_ci std::cout << static_cast<int>(entry.data.i32[0]) << "," << static_cast<int>(entry.data.i32[1]) << "]"; 348094332d3Sopenharmony_ci std::cout << std::endl; 349094332d3Sopenharmony_ci} 350094332d3Sopenharmony_ci 351094332d3Sopenharmony_ci/** 352094332d3Sopenharmony_ci * @tc.name: USB Camera 353094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_CAMERA_TYPE 354094332d3Sopenharmony_ci * @tc.level: Level0 355094332d3Sopenharmony_ci * @tc.size: MediumTest 356094332d3Sopenharmony_ci * @tc.type: Function 357094332d3Sopenharmony_ci */ 358094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0013) 359094332d3Sopenharmony_ci{ 360094332d3Sopenharmony_ci if (!g_usbCameraExit) { 361094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 362094332d3Sopenharmony_ci } 363094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 364094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 365094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 366094332d3Sopenharmony_ci camera_metadata_item_t entry; 367094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_CAMERA_TYPE, &entry); 368094332d3Sopenharmony_ci EXPECT_EQ(ret, CAM_META_SUCCESS); 369094332d3Sopenharmony_ci std::cout << "OHOS_ABILITY_CAMERA_TYPE value is " << static_cast<int>(entry.data.u8[0]) << std::endl; 370094332d3Sopenharmony_ci EXPECT_TRUE(entry.data.u8[0] == OHOS_CAMERA_TYPE_UNSPECIFIED); 371094332d3Sopenharmony_ci} 372094332d3Sopenharmony_ci 373094332d3Sopenharmony_ci/** 374094332d3Sopenharmony_ci * @tc.name: USB Camera 375094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_JPEG_ORIENTATION 376094332d3Sopenharmony_ci * @tc.level: Level0 377094332d3Sopenharmony_ci * @tc.size: MediumTest 378094332d3Sopenharmony_ci * @tc.type: Function 379094332d3Sopenharmony_ci */ 380094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0014) 381094332d3Sopenharmony_ci{ 382094332d3Sopenharmony_ci if (!g_usbCameraExit) { 383094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 384094332d3Sopenharmony_ci } 385094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 386094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 387094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 388094332d3Sopenharmony_ci camera_metadata_item_t entry; 389094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_JPEG_ORIENTATION, &entry); 390094332d3Sopenharmony_ci EXPECT_EQ(ret, CAM_META_SUCCESS); 391094332d3Sopenharmony_ci std::cout << "OHOS_JPEG_ORIENTATION value is " << static_cast<int>(entry.data.i32[0]) << std::endl; 392094332d3Sopenharmony_ci} 393094332d3Sopenharmony_ci 394094332d3Sopenharmony_ci/** 395094332d3Sopenharmony_ci * @tc.name: USB Camera 396094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_JPEG_QUALITY 397094332d3Sopenharmony_ci * @tc.level: Level0 398094332d3Sopenharmony_ci * @tc.size: MediumTest 399094332d3Sopenharmony_ci * @tc.type: Function 400094332d3Sopenharmony_ci */ 401094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0015) 402094332d3Sopenharmony_ci{ 403094332d3Sopenharmony_ci if (!g_usbCameraExit) { 404094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 405094332d3Sopenharmony_ci } 406094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 407094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 408094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 409094332d3Sopenharmony_ci camera_metadata_item_t entry; 410094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_JPEG_QUALITY, &entry); 411094332d3Sopenharmony_ci EXPECT_EQ(ret, CAM_META_SUCCESS); 412094332d3Sopenharmony_ci std::cout << "OHOS_JPEG_ORIENTATION value is " << static_cast<int>(entry.data.u8[0]) << std::endl; 413094332d3Sopenharmony_ci} 414094332d3Sopenharmony_ci 415094332d3Sopenharmony_ci/** 416094332d3Sopenharmony_ci * @tc.name: USB Camera 417094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_STREAM_AVAILABLE_BASIC_CONFIGURATIONS 418094332d3Sopenharmony_ci * @tc.level: Level0 419094332d3Sopenharmony_ci * @tc.size: MediumTest 420094332d3Sopenharmony_ci * @tc.type: Function 421094332d3Sopenharmony_ci */ 422094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0016) 423094332d3Sopenharmony_ci{ 424094332d3Sopenharmony_ci if (!g_usbCameraExit) { 425094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 426094332d3Sopenharmony_ci } 427094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 428094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 429094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 430094332d3Sopenharmony_ci camera_metadata_item_t entry; 431094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_STREAM_AVAILABLE_BASIC_CONFIGURATIONS, &entry); 432094332d3Sopenharmony_ci EXPECT_EQ(ret, CAM_META_SUCCESS); 433094332d3Sopenharmony_ci std::cout << "OHOS_ABILITY_STREAM_AVAILABLE_BASIC_CONFIGURATIONS value is " 434094332d3Sopenharmony_ci << static_cast<int>(entry.data.u8[0]) << std::endl; 435094332d3Sopenharmony_ci EXPECT_TRUE(entry.data.u8[0] == OHOS_CAMERA_FORMAT_RGBA_8888); 436094332d3Sopenharmony_ci} 437094332d3Sopenharmony_ci 438094332d3Sopenharmony_ci/** 439094332d3Sopenharmony_ci * @tc.name: USB Camera 440094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_STREAM_AVAILABLE_EXTEND_CONFIGURATIONS 441094332d3Sopenharmony_ci * @tc.level: Level0 442094332d3Sopenharmony_ci * @tc.size: MediumTest 443094332d3Sopenharmony_ci * @tc.type: Function 444094332d3Sopenharmony_ci */ 445094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0017) 446094332d3Sopenharmony_ci{ 447094332d3Sopenharmony_ci if (!g_usbCameraExit) { 448094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 449094332d3Sopenharmony_ci } 450094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 451094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 452094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 453094332d3Sopenharmony_ci EXPECT_NE(data, nullptr); 454094332d3Sopenharmony_ci camera_metadata_item_t entry; 455094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_STREAM_AVAILABLE_EXTEND_CONFIGURATIONS, &entry); 456094332d3Sopenharmony_ci if (ret == 0 && entry.data.i32 != nullptr && entry.count > 0) { 457094332d3Sopenharmony_ci std::cout << "print tag<OHOS_ABILITY_STREAM_AVAILABLE_EXTEND_CONFIGURATIONS> value start." << std::endl; 458094332d3Sopenharmony_ci const size_t STEP = 10; // print step 459094332d3Sopenharmony_ci std::cout << "count" << entry.count << std::endl; 460094332d3Sopenharmony_ci for (size_t i = 0; i < entry.count; i++) { 461094332d3Sopenharmony_ci std::cout << entry.data.i32[i] << " "; 462094332d3Sopenharmony_ci if ((i != 0) && (i % STEP == 0 || i == entry.count - 1)) { 463094332d3Sopenharmony_ci std::cout << std::endl; 464094332d3Sopenharmony_ci } 465094332d3Sopenharmony_ci } 466094332d3Sopenharmony_ci std::cout << "print tag<OHOS_ABILITY_STREAM_AVAILABLE_EXTEND_CONFIGURATIONS> value end." << std::endl; 467094332d3Sopenharmony_ci } 468094332d3Sopenharmony_ci} 469094332d3Sopenharmony_ci 470094332d3Sopenharmony_ci/** 471094332d3Sopenharmony_ci * @tc.name: USB Camera 472094332d3Sopenharmony_ci * @tc.desc: Preview stream, expected success. 473094332d3Sopenharmony_ci * @tc.level: Level0 474094332d3Sopenharmony_ci * @tc.size: MediumTest 475094332d3Sopenharmony_ci * @tc.type: Function 476094332d3Sopenharmony_ci */ 477094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0018) 478094332d3Sopenharmony_ci{ 479094332d3Sopenharmony_ci if (!g_usbCameraExit) { 480094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 481094332d3Sopenharmony_ci } 482094332d3Sopenharmony_ci // Get the device manager 483094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 484094332d3Sopenharmony_ci // Get the stream manager 485094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 486094332d3Sopenharmony_ci // start stream 487094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW}; 488094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 489094332d3Sopenharmony_ci // Get preview 490094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 491094332d3Sopenharmony_ci // release stream 492094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW}; 493094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW}; 494094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 495094332d3Sopenharmony_ci} 496094332d3Sopenharmony_ci 497094332d3Sopenharmony_ci/** 498094332d3Sopenharmony_ci * @tc.name: USB Camera 499094332d3Sopenharmony_ci * @tc.desc: Preview stream, width = 1280, height = 720, expected success. 500094332d3Sopenharmony_ci * @tc.level: Level0 501094332d3Sopenharmony_ci * @tc.size: MediumTest 502094332d3Sopenharmony_ci * @tc.type: Function 503094332d3Sopenharmony_ci */ 504094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0019) 505094332d3Sopenharmony_ci{ 506094332d3Sopenharmony_ci if (!g_usbCameraExit) { 507094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 508094332d3Sopenharmony_ci } 509094332d3Sopenharmony_ci // Get the device manager 510094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 511094332d3Sopenharmony_ci // Create and get streamOperator information 512094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 513094332d3Sopenharmony_ci // Create data stream 514094332d3Sopenharmony_ci if (cameraBase_->streamCustomerPreview_ == nullptr) { 515094332d3Sopenharmony_ci cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>(); 516094332d3Sopenharmony_ci } 517094332d3Sopenharmony_ci OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer(); 518094332d3Sopenharmony_ci producer->SetQueueSize(8); // 8:set bufferQueue size 519094332d3Sopenharmony_ci 520094332d3Sopenharmony_ci std::vector<StreamInfo> streamInfos; 521094332d3Sopenharmony_ci StreamInfo streamInfo = {}; 522094332d3Sopenharmony_ci streamInfo.streamId_ = cameraBase_->STREAM_ID_PREVIEW; 523094332d3Sopenharmony_ci streamInfo.width_ = 1280; // 1280:picture width 524094332d3Sopenharmony_ci streamInfo.height_ = 720; // 720:picture height 525094332d3Sopenharmony_ci streamInfo.format_ = PIXEL_FMT_RGBA_8888; 526094332d3Sopenharmony_ci streamInfo.dataspace_ = 8; // 8:picture dataspace 527094332d3Sopenharmony_ci streamInfo.intent_ = PREVIEW; 528094332d3Sopenharmony_ci streamInfo.tunneledMode_ = 5; // 5:tunnel mode 529094332d3Sopenharmony_ci streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer); 530094332d3Sopenharmony_ci ASSERT_NE(streamInfo.bufferQueue_, nullptr); 531094332d3Sopenharmony_ci std::vector<StreamInfo>().swap(streamInfos); 532094332d3Sopenharmony_ci streamInfos.push_back(streamInfo); 533094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos); 534094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 535094332d3Sopenharmony_ci // Submit stream information 536094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CommitStreams(NORMAL, cameraBase_->ability_); 537094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 538094332d3Sopenharmony_ci // capture 539094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 540094332d3Sopenharmony_ci // release stream 541094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW}; 542094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW}; 543094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 544094332d3Sopenharmony_ci} 545094332d3Sopenharmony_ci 546094332d3Sopenharmony_ci/** 547094332d3Sopenharmony_ci * @tc.name: USB Camera 548094332d3Sopenharmony_ci * @tc.desc: UpdateSettings, fps. 549094332d3Sopenharmony_ci * @tc.level: Level0 550094332d3Sopenharmony_ci * @tc.size: MediumTest 551094332d3Sopenharmony_ci * @tc.type: Function 552094332d3Sopenharmony_ci */ 553094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0020) 554094332d3Sopenharmony_ci{ 555094332d3Sopenharmony_ci if (!g_usbCameraExit) { 556094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 557094332d3Sopenharmony_ci } 558094332d3Sopenharmony_ci // Get the device manager 559094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 560094332d3Sopenharmony_ci // get the stream manager 561094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 562094332d3Sopenharmony_ci 563094332d3Sopenharmony_ci // start stream 564094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW}; 565094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 566094332d3Sopenharmony_ci 567094332d3Sopenharmony_ci // updateSettings 568094332d3Sopenharmony_ci const uint32_t ITEM_CAPACITY = 100; 569094332d3Sopenharmony_ci const uint32_t DATA_CAPACITY = 2000; 570094332d3Sopenharmony_ci const int32_t FPS_VALUE = 10; 571094332d3Sopenharmony_ci std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>( 572094332d3Sopenharmony_ci ITEM_CAPACITY, DATA_CAPACITY); 573094332d3Sopenharmony_ci std::vector<int32_t> fpsRange; 574094332d3Sopenharmony_ci fpsRange.push_back(FPS_VALUE); 575094332d3Sopenharmony_ci fpsRange.push_back(FPS_VALUE); 576094332d3Sopenharmony_ci meta->addEntry(OHOS_CONTROL_FPS_RANGES, fpsRange.data(), fpsRange.size()); 577094332d3Sopenharmony_ci const int32_t DEVICE_STREAM_ID = 0; 578094332d3Sopenharmony_ci meta->addEntry(OHOS_CAMERA_STREAM_ID, &DEVICE_STREAM_ID, 1); 579094332d3Sopenharmony_ci std::vector<uint8_t> setting; 580094332d3Sopenharmony_ci MetadataUtils::ConvertMetadataToVec(meta, setting); 581094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->cameraDevice->UpdateSettings(setting); 582094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 583094332d3Sopenharmony_ci 584094332d3Sopenharmony_ci // get preview 585094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 586094332d3Sopenharmony_ci 587094332d3Sopenharmony_ci // release stream 588094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW}; 589094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW}; 590094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 591094332d3Sopenharmony_ci} 592094332d3Sopenharmony_ci 593094332d3Sopenharmony_ci/** 594094332d3Sopenharmony_ci * @tc.name: USB Camera 595094332d3Sopenharmony_ci * @tc.desc: USB Camera, OnCameraStatus and OnCameraEvent. 596094332d3Sopenharmony_ci * @tc.level: Level0 597094332d3Sopenharmony_ci * @tc.size: MediumTest 598094332d3Sopenharmony_ci * @tc.type: Function 599094332d3Sopenharmony_ci */ 600094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0021) 601094332d3Sopenharmony_ci{ 602094332d3Sopenharmony_ci uint32_t rc = 0; 603094332d3Sopenharmony_ci std::cout << "==========[test log] USB Camera, getCameraID success."<< std::endl; 604094332d3Sopenharmony_ci std::vector<std::string> cameraIds; 605094332d3Sopenharmony_ci std::cout << "==========[test log] 1. get current system cameraID."<< std::endl; 606094332d3Sopenharmony_ci cameraBase_->cameraHost->GetCameraIds(cameraIds); 607094332d3Sopenharmony_ci std::cout << "==========[test log] First cameraId.size = " << cameraIds.size() << std::endl; 608094332d3Sopenharmony_ci std::cout << "==========[test log] OnCameraStatus interface has been mobilized" << std::endl; 609094332d3Sopenharmony_ci for (const auto &cameraId : cameraIds) { 610094332d3Sopenharmony_ci std::cout << "==========[test log] cameraId = " << cameraId << std::endl; 611094332d3Sopenharmony_ci } 612094332d3Sopenharmony_ci const int count = 4; 613094332d3Sopenharmony_ci for (int i = 0; i < count; i++) { 614094332d3Sopenharmony_ci std::cout << "==========[test log] 2. please add or delete the usb camera, wait for 3s..."<< std::endl; 615094332d3Sopenharmony_ci sleep(3); // judging add or delete the usb camera, wait for 3s. 616094332d3Sopenharmony_ci } 617094332d3Sopenharmony_ci std::cout << "==========[test log] 3. check the cameraID again... wait for 3s..."<< std::endl; 618094332d3Sopenharmony_ci sleep(3); // checking the cameraID again, wait for 3s. 619094332d3Sopenharmony_ci std::cout << "==========[test log] Second cameraId.size = " << cameraIds.size() << std::endl; 620094332d3Sopenharmony_ci if (cameraIds.size() == 1) { 621094332d3Sopenharmony_ci cameraIds.clear(); 622094332d3Sopenharmony_ci } 623094332d3Sopenharmony_ci rc = cameraBase_->cameraHost->GetCameraIds(cameraIds); 624094332d3Sopenharmony_ci EXPECT_EQ(rc, HDI::Camera::V1_0::NO_ERROR); 625094332d3Sopenharmony_ci for (const auto &cameraId : cameraIds) { 626094332d3Sopenharmony_ci std::cout << "cameraId = " << cameraId << std::endl; 627094332d3Sopenharmony_ci } 628094332d3Sopenharmony_ci} 629094332d3Sopenharmony_ci 630094332d3Sopenharmony_ci/** 631094332d3Sopenharmony_ci * @tc.name: USB Camera 632094332d3Sopenharmony_ci * @tc.desc: Commit 2 streams together, Preview and still_capture streams, isStreaming is true. 633094332d3Sopenharmony_ci * @tc.level: Level0 634094332d3Sopenharmony_ci * @tc.size: MediumTest 635094332d3Sopenharmony_ci * @tc.type: Function 636094332d3Sopenharmony_ci */ 637094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0022) 638094332d3Sopenharmony_ci{ 639094332d3Sopenharmony_ci // Get the device manager 640094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 641094332d3Sopenharmony_ci if (!g_usbCameraExit) { 642094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 643094332d3Sopenharmony_ci } 644094332d3Sopenharmony_ci // Get the stream manager 645094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 646094332d3Sopenharmony_ci // start stream 647094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW, STILL_CAPTURE}; 648094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 649094332d3Sopenharmony_ci // Get preview 650094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 651094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_CAPTURE, cameraBase_->CAPTURE_ID_CAPTURE, false, true); 652094332d3Sopenharmony_ci // release stream 653094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_CAPTURE}; 654094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_CAPTURE}; 655094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 656094332d3Sopenharmony_ci} 657094332d3Sopenharmony_ci 658094332d3Sopenharmony_ci/** 659094332d3Sopenharmony_ci * @tc.name: USB Camera 660094332d3Sopenharmony_ci * @tc.desc: Commit 2 streams together, width = 1280, height = 720, expected success. 661094332d3Sopenharmony_ci * @tc.level: Level0 662094332d3Sopenharmony_ci * @tc.size: MediumTest 663094332d3Sopenharmony_ci * @tc.type: Function 664094332d3Sopenharmony_ci */ 665094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0023) 666094332d3Sopenharmony_ci{ 667094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 668094332d3Sopenharmony_ci if (!g_usbCameraExit) { 669094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 670094332d3Sopenharmony_ci } 671094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 672094332d3Sopenharmony_ci if (cameraBase_->streamCustomerPreview_ == nullptr) { 673094332d3Sopenharmony_ci cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>(); 674094332d3Sopenharmony_ci } 675094332d3Sopenharmony_ci std::vector<StreamInfo> streamInfos; 676094332d3Sopenharmony_ci StreamInfo streamInfo = {}; 677094332d3Sopenharmony_ci streamInfo.streamId_ = cameraBase_->STREAM_ID_PREVIEW; 678094332d3Sopenharmony_ci streamInfo.width_ = 1280; // 1280:picture width 679094332d3Sopenharmony_ci streamInfo.height_ = 720; // 720:picture height 680094332d3Sopenharmony_ci streamInfo.format_ = PIXEL_FMT_RGBA_8888; 681094332d3Sopenharmony_ci streamInfo.dataspace_ = 8; // 8:picture dataspace 682094332d3Sopenharmony_ci streamInfo.intent_ = PREVIEW; 683094332d3Sopenharmony_ci streamInfo.tunneledMode_ = 5; // 5:tunnel mode 684094332d3Sopenharmony_ci streamInfo.bufferQueue_ = new BufferProducerSequenceable(cameraBase_->streamCustomerPreview_->CreateProducer()); 685094332d3Sopenharmony_ci ASSERT_NE(streamInfo.bufferQueue_, nullptr); 686094332d3Sopenharmony_ci streamInfo.bufferQueue_->producer_->SetQueueSize(8); // 8:set bufferQueue size 687094332d3Sopenharmony_ci streamInfos.push_back(streamInfo); 688094332d3Sopenharmony_ci if (cameraBase_->streamCustomerCapture_ == nullptr) { 689094332d3Sopenharmony_ci cameraBase_->streamCustomerCapture_ = std::make_shared<StreamCustomer>(); 690094332d3Sopenharmony_ci } 691094332d3Sopenharmony_ci StreamInfo streamInfoCapture = {}; 692094332d3Sopenharmony_ci streamInfoCapture.streamId_ = cameraBase_->STREAM_ID_CAPTURE; 693094332d3Sopenharmony_ci streamInfoCapture.width_ = 1280; // 1280:picture width 694094332d3Sopenharmony_ci streamInfoCapture.height_ = 960; // 960:picture height 695094332d3Sopenharmony_ci streamInfoCapture.format_ = PIXEL_FMT_RGBA_8888; 696094332d3Sopenharmony_ci streamInfoCapture.dataspace_ = 8; // 8:picture dataspace 697094332d3Sopenharmony_ci streamInfoCapture.intent_ = STILL_CAPTURE; 698094332d3Sopenharmony_ci streamInfoCapture.encodeType_ = ENCODE_TYPE_JPEG; 699094332d3Sopenharmony_ci streamInfoCapture.tunneledMode_ = 5; // 5:tunnel mode 700094332d3Sopenharmony_ci streamInfoCapture.bufferQueue_ = new BufferProducerSequenceable( 701094332d3Sopenharmony_ci cameraBase_->streamCustomerCapture_->CreateProducer()); 702094332d3Sopenharmony_ci ASSERT_NE(streamInfoCapture.bufferQueue_, nullptr); 703094332d3Sopenharmony_ci streamInfoCapture.bufferQueue_->producer_->SetQueueSize(8); // 8:set bufferQueue size 704094332d3Sopenharmony_ci streamInfos.push_back(streamInfoCapture); 705094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos); 706094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 707094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CommitStreams(NORMAL, cameraBase_->ability_); 708094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 709094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 710094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_CAPTURE, cameraBase_->CAPTURE_ID_CAPTURE, false, true); 711094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_CAPTURE}; 712094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_CAPTURE}; 713094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 714094332d3Sopenharmony_ci} 715094332d3Sopenharmony_ci 716094332d3Sopenharmony_ci/** 717094332d3Sopenharmony_ci * @tc.name: preview and capture 718094332d3Sopenharmony_ci * @tc.desc: Commit 2 streams together, Change the value OHOS_JPEG_ORIENTATION, isStreaming is true. 719094332d3Sopenharmony_ci * @tc.level: Level0 720094332d3Sopenharmony_ci * @tc.size: MediumTest 721094332d3Sopenharmony_ci * @tc.type: Function 722094332d3Sopenharmony_ci */ 723094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0024) 724094332d3Sopenharmony_ci{ 725094332d3Sopenharmony_ci // Get the device manager 726094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 727094332d3Sopenharmony_ci if (!g_usbCameraExit) { 728094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 729094332d3Sopenharmony_ci } 730094332d3Sopenharmony_ci // Get the stream manager 731094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 732094332d3Sopenharmony_ci std::vector<int32_t> jpegOrientationVector; 733094332d3Sopenharmony_ci jpegOrientationVector.push_back(OHOS_CAMERA_JPEG_ROTATION_270); 734094332d3Sopenharmony_ci cameraBase_->ability->updateEntry(OHOS_JPEG_ORIENTATION, jpegOrientationVector.data(), 735094332d3Sopenharmony_ci jpegOrientationVector.size()); 736094332d3Sopenharmony_ci cameraBase_->ability_.clear(); 737094332d3Sopenharmony_ci MetadataUtils::ConvertMetadataToVec(cameraBase_->ability, cameraBase_->ability_); 738094332d3Sopenharmony_ci // start stream 739094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW, STILL_CAPTURE}; 740094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 741094332d3Sopenharmony_ci 742094332d3Sopenharmony_ci // Get preview 743094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 744094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_CAPTURE, cameraBase_->CAPTURE_ID_CAPTURE, false, true); 745094332d3Sopenharmony_ci // release stream 746094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_CAPTURE}; 747094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_CAPTURE}; 748094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 749094332d3Sopenharmony_ci} 750094332d3Sopenharmony_ci 751094332d3Sopenharmony_ci/** 752094332d3Sopenharmony_ci * @tc.name: preview and capture 753094332d3Sopenharmony_ci * @tc.desc: Commit 2 streams together, Preview and still_capture streams, isStreaming is true. 754094332d3Sopenharmony_ci * @tc.level: Level0 755094332d3Sopenharmony_ci * @tc.size: MediumTest 756094332d3Sopenharmony_ci * @tc.type: Function 757094332d3Sopenharmony_ci */ 758094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0025) 759094332d3Sopenharmony_ci{ 760094332d3Sopenharmony_ci // Get the device manager 761094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 762094332d3Sopenharmony_ci if (!g_usbCameraExit) { 763094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 764094332d3Sopenharmony_ci } 765094332d3Sopenharmony_ci // Get the stream manager 766094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 767094332d3Sopenharmony_ci std::vector<int32_t> jpegQualityVector; 768094332d3Sopenharmony_ci jpegQualityVector.push_back(OHOS_CAMERA_JPEG_LEVEL_LOW); 769094332d3Sopenharmony_ci cameraBase_->ability->updateEntry(OHOS_JPEG_QUALITY, jpegQualityVector.data(), jpegQualityVector.size()); 770094332d3Sopenharmony_ci cameraBase_->ability_.clear(); 771094332d3Sopenharmony_ci MetadataUtils::ConvertMetadataToVec(cameraBase_->ability, cameraBase_->ability_); 772094332d3Sopenharmony_ci // start stream 773094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW, STILL_CAPTURE}; 774094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 775094332d3Sopenharmony_ci 776094332d3Sopenharmony_ci // Get preview 777094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 778094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_CAPTURE, cameraBase_->CAPTURE_ID_CAPTURE, false, true); 779094332d3Sopenharmony_ci // release stream 780094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_CAPTURE}; 781094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_CAPTURE}; 782094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 783094332d3Sopenharmony_ci} 784094332d3Sopenharmony_ci 785094332d3Sopenharmony_ci/** 786094332d3Sopenharmony_ci * @tc.name: Video 787094332d3Sopenharmony_ci * @tc.desc: Preview + video, commit together, success. 788094332d3Sopenharmony_ci * @tc.level: Level0 789094332d3Sopenharmony_ci * @tc.size: MediumTest 790094332d3Sopenharmony_ci * @tc.type: Function 791094332d3Sopenharmony_ci */ 792094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0026) 793094332d3Sopenharmony_ci{ 794094332d3Sopenharmony_ci // Get the device manager 795094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 796094332d3Sopenharmony_ci if (!g_usbCameraExit) { 797094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 798094332d3Sopenharmony_ci } 799094332d3Sopenharmony_ci // Create and get streamOperator information 800094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 801094332d3Sopenharmony_ci // start stream 802094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW, VIDEO}; 803094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 804094332d3Sopenharmony_ci // Get preview 805094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 806094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_VIDEO, cameraBase_->CAPTURE_ID_VIDEO, false, true); 807094332d3Sopenharmony_ci 808094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_VIDEO}; 809094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_VIDEO}; 810094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 811094332d3Sopenharmony_ci} 812094332d3Sopenharmony_ci 813094332d3Sopenharmony_ci/** 814094332d3Sopenharmony_ci * @tc.name: USB Camera 815094332d3Sopenharmony_ci * @tc.desc: Preview stream, width = 1280, height = 720, expected success. 816094332d3Sopenharmony_ci * @tc.level: Level0 817094332d3Sopenharmony_ci * @tc.size: MediumTest 818094332d3Sopenharmony_ci * @tc.type: Function 819094332d3Sopenharmony_ci */ 820094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0027) 821094332d3Sopenharmony_ci{ 822094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 823094332d3Sopenharmony_ci if (!g_usbCameraExit) { 824094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 825094332d3Sopenharmony_ci } 826094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 827094332d3Sopenharmony_ci if (cameraBase_->streamCustomerPreview_ == nullptr) { 828094332d3Sopenharmony_ci cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>(); 829094332d3Sopenharmony_ci } 830094332d3Sopenharmony_ci std::vector<StreamInfo> streamInfos; 831094332d3Sopenharmony_ci StreamInfo streamInfo = {}; 832094332d3Sopenharmony_ci streamInfo.streamId_ = cameraBase_->STREAM_ID_PREVIEW; 833094332d3Sopenharmony_ci streamInfo.width_ = 1280; // 1280:picture width 834094332d3Sopenharmony_ci streamInfo.height_ = 720; // 720:picture height 835094332d3Sopenharmony_ci streamInfo.format_ = PIXEL_FMT_RGBA_8888; 836094332d3Sopenharmony_ci streamInfo.dataspace_ = 8; // 8:picture dataspace 837094332d3Sopenharmony_ci streamInfo.intent_ = PREVIEW; 838094332d3Sopenharmony_ci streamInfo.tunneledMode_ = 5; // 5:tunnel mode 839094332d3Sopenharmony_ci streamInfo.bufferQueue_ = new BufferProducerSequenceable(cameraBase_->streamCustomerPreview_->CreateProducer()); 840094332d3Sopenharmony_ci ASSERT_NE(streamInfo.bufferQueue_, nullptr); 841094332d3Sopenharmony_ci streamInfo.bufferQueue_->producer_->SetQueueSize(8); // 8:set bufferQueue size 842094332d3Sopenharmony_ci streamInfos.push_back(streamInfo); 843094332d3Sopenharmony_ci if (cameraBase_->streamCustomerVideo_ == nullptr) { 844094332d3Sopenharmony_ci cameraBase_->streamCustomerVideo_ = std::make_shared<StreamCustomer>(); 845094332d3Sopenharmony_ci } 846094332d3Sopenharmony_ci StreamInfo streamInfoVideo = {}; 847094332d3Sopenharmony_ci streamInfoVideo.streamId_ = cameraBase_->STREAM_ID_VIDEO; 848094332d3Sopenharmony_ci streamInfoVideo.width_ = 1280; // 1280:picture width 849094332d3Sopenharmony_ci streamInfoVideo.height_ = 960; // 960:picture height 850094332d3Sopenharmony_ci streamInfoVideo.format_ = PIXEL_FMT_RGBA_8888; 851094332d3Sopenharmony_ci streamInfoVideo.dataspace_ = 8; // 8:picture dataspace 852094332d3Sopenharmony_ci streamInfoVideo.intent_ = VIDEO; 853094332d3Sopenharmony_ci streamInfoVideo.encodeType_ = ENCODE_TYPE_H264; 854094332d3Sopenharmony_ci streamInfoVideo.tunneledMode_ = 5; // 5:tunnel mode 855094332d3Sopenharmony_ci streamInfoVideo.bufferQueue_ = new BufferProducerSequenceable(cameraBase_->streamCustomerVideo_->CreateProducer()); 856094332d3Sopenharmony_ci ASSERT_NE(streamInfoVideo.bufferQueue_, nullptr); 857094332d3Sopenharmony_ci streamInfoVideo.bufferQueue_->producer_->SetQueueSize(8); // 8:set bufferQueue size 858094332d3Sopenharmony_ci streamInfos.push_back(streamInfoVideo); 859094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos); 860094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 861094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CommitStreams(NORMAL, cameraBase_->ability_); 862094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 863094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 864094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_VIDEO, cameraBase_->CAPTURE_ID_VIDEO, false, true); 865094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_VIDEO}; 866094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_VIDEO}; 867094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 868094332d3Sopenharmony_ci} 869094332d3Sopenharmony_ci 870094332d3Sopenharmony_ci/** 871094332d3Sopenharmony_ci * @tc.name: USB Camera 872094332d3Sopenharmony_ci * @tc.desc: UpdateSettings, fps. 873094332d3Sopenharmony_ci * @tc.level: Level0 874094332d3Sopenharmony_ci * @tc.size: MediumTest 875094332d3Sopenharmony_ci * @tc.type: Function 876094332d3Sopenharmony_ci */ 877094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0028) 878094332d3Sopenharmony_ci{ 879094332d3Sopenharmony_ci // Get the device manager 880094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 881094332d3Sopenharmony_ci if (!g_usbCameraExit) { 882094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 883094332d3Sopenharmony_ci } 884094332d3Sopenharmony_ci // get the stream manager 885094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 886094332d3Sopenharmony_ci 887094332d3Sopenharmony_ci // start stream 888094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW, VIDEO}; 889094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 890094332d3Sopenharmony_ci 891094332d3Sopenharmony_ci // updateSettings 892094332d3Sopenharmony_ci const uint32_t ITEM_CAPACITY = 100; 893094332d3Sopenharmony_ci const uint32_t DATA_CAPACITY = 2000; 894094332d3Sopenharmony_ci const int32_t FPS_VALUE = 10; 895094332d3Sopenharmony_ci std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>( 896094332d3Sopenharmony_ci ITEM_CAPACITY, DATA_CAPACITY); 897094332d3Sopenharmony_ci std::vector<int32_t> fpsRange; 898094332d3Sopenharmony_ci fpsRange.push_back(FPS_VALUE); 899094332d3Sopenharmony_ci fpsRange.push_back(FPS_VALUE); 900094332d3Sopenharmony_ci meta->addEntry(OHOS_CONTROL_FPS_RANGES, fpsRange.data(), fpsRange.size()); 901094332d3Sopenharmony_ci const int32_t DEVICE_STREAM_ID = 0; 902094332d3Sopenharmony_ci meta->addEntry(OHOS_CAMERA_STREAM_ID, &DEVICE_STREAM_ID, 1); 903094332d3Sopenharmony_ci std::vector<uint8_t> setting; 904094332d3Sopenharmony_ci MetadataUtils::ConvertMetadataToVec(meta, setting); 905094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->cameraDevice->UpdateSettings(setting); 906094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 907094332d3Sopenharmony_ci 908094332d3Sopenharmony_ci // get preview 909094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 910094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_VIDEO, cameraBase_->CAPTURE_ID_VIDEO, false, true); 911094332d3Sopenharmony_ci 912094332d3Sopenharmony_ci // release stream 913094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_VIDEO}; 914094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_VIDEO}; 915094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 916094332d3Sopenharmony_ci} 917094332d3Sopenharmony_ci 918094332d3Sopenharmony_ci/** 919094332d3Sopenharmony_ci * @tc.name: USB Camera 920094332d3Sopenharmony_ci * @tc.desc: Commit 3 streams together, Preview,Video and still_capture streams, isStreaming is true. 921094332d3Sopenharmony_ci * @tc.level: Level0 922094332d3Sopenharmony_ci * @tc.size: MediumTest 923094332d3Sopenharmony_ci * @tc.type: Function 924094332d3Sopenharmony_ci */ 925094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0029) 926094332d3Sopenharmony_ci{ 927094332d3Sopenharmony_ci // Get the device manager 928094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 929094332d3Sopenharmony_ci if (!g_usbCameraExit) { 930094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 931094332d3Sopenharmony_ci } 932094332d3Sopenharmony_ci // Get the stream manager 933094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 934094332d3Sopenharmony_ci // start stream 935094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW, STILL_CAPTURE, VIDEO}; 936094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 937094332d3Sopenharmony_ci // Get preview 938094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 939094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_CAPTURE, cameraBase_->CAPTURE_ID_CAPTURE, false, true); 940094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_VIDEO, cameraBase_->CAPTURE_ID_VIDEO, false, true); 941094332d3Sopenharmony_ci // release stream 942094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_CAPTURE, 943094332d3Sopenharmony_ci cameraBase_->CAPTURE_ID_VIDEO}; 944094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_CAPTURE, 945094332d3Sopenharmony_ci cameraBase_->STREAM_ID_VIDEO}; 946094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 947094332d3Sopenharmony_ci} 948094332d3Sopenharmony_ci 949094332d3Sopenharmony_ci/** 950094332d3Sopenharmony_ci * @tc.name: USB Camera 951094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_SENSOR_ORIENTATION 952094332d3Sopenharmony_ci * @tc.level: Level0 953094332d3Sopenharmony_ci * @tc.size: MediumTest 954094332d3Sopenharmony_ci * @tc.type: Function 955094332d3Sopenharmony_ci */ 956094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0030) 957094332d3Sopenharmony_ci{ 958094332d3Sopenharmony_ci if (!g_usbCameraExit) { 959094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 960094332d3Sopenharmony_ci } 961094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 962094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 963094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 964094332d3Sopenharmony_ci camera_metadata_item_t entry; 965094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_SENSOR_ORIENTATION, &entry); 966094332d3Sopenharmony_ci EXPECT_EQ(ret, CAM_META_SUCCESS); 967094332d3Sopenharmony_ci std::cout << "OHOS_SENSOR_ORIENTATION value is " << static_cast<int>(entry.data.u8[0]) << std::endl; 968094332d3Sopenharmony_ci EXPECT_TRUE(entry.data.u8[0] == 0); 969094332d3Sopenharmony_ci} 970094332d3Sopenharmony_ci 971094332d3Sopenharmony_ci/** 972094332d3Sopenharmony_ci * @tc.name: USB Camera 973094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_FOCAL_LENGTH 974094332d3Sopenharmony_ci * @tc.level: Level0 975094332d3Sopenharmony_ci * @tc.size: MediumTest 976094332d3Sopenharmony_ci * @tc.type: Function 977094332d3Sopenharmony_ci */ 978094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0031) 979094332d3Sopenharmony_ci{ 980094332d3Sopenharmony_ci if (!g_usbCameraExit) { 981094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 982094332d3Sopenharmony_ci } 983094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 984094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 985094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 986094332d3Sopenharmony_ci camera_metadata_item_t entry; 987094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_FOCAL_LENGTH, &entry); 988094332d3Sopenharmony_ci if (ret == CAM_META_SUCCESS) { 989094332d3Sopenharmony_ci std::cout << "log OHOS_ABILITY_FOCAL_LENGTH: count is " << (int)entry.count << std::endl; 990094332d3Sopenharmony_ci std::cout << "log focal length value: " << entry.data.f[0] << std::endl; 991094332d3Sopenharmony_ci } else if (ret == CAM_META_ITEM_NOT_FOUND) { 992094332d3Sopenharmony_ci std::cout << "log OHOS_ABILITY_FOCAL_LENGTH is not support" << std::endl; 993094332d3Sopenharmony_ci } 994094332d3Sopenharmony_ci} 995094332d3Sopenharmony_ci 996094332d3Sopenharmony_ci/** 997094332d3Sopenharmony_ci * @tc.name: USB Camera 998094332d3Sopenharmony_ci * @tc.desc: USB Camera, Select the camera according to the cameraId 999094332d3Sopenharmony_ci * @tc.level: Level0 1000094332d3Sopenharmony_ci * @tc.size: MediumTest 1001094332d3Sopenharmony_ci * @tc.type: Function 1002094332d3Sopenharmony_ci */ 1003094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0032) 1004094332d3Sopenharmony_ci{ 1005094332d3Sopenharmony_ci // Get the device manager 1006094332d3Sopenharmony_ci std::vector<std::string> usbCameraIds; 1007094332d3Sopenharmony_ci cameraBase_->cameraHost->GetCameraIds(usbCameraIds); 1008094332d3Sopenharmony_ci if (usbCameraIds.size() > 2) { // 2:usb camera quantity 1009094332d3Sopenharmony_ci g_usbCameraExit = true; 1010094332d3Sopenharmony_ci } else { 1011094332d3Sopenharmony_ci g_usbCameraExit = false; 1012094332d3Sopenharmony_ci } 1013094332d3Sopenharmony_ci for (int i = 0; i < usbCameraIds.size(); i++) { 1014094332d3Sopenharmony_ci if (!g_usbCameraExit) { 1015094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 1016094332d3Sopenharmony_ci } 1017094332d3Sopenharmony_ci cameraBase_->rc = cameraBase_->SelectOpenCamera(usbCameraIds[i]); 1018094332d3Sopenharmony_ci ASSERT_EQ(cameraBase_->rc, HDI::Camera::V1_0::NO_ERROR); 1019094332d3Sopenharmony_ci // Get the stream manager 1020094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 1021094332d3Sopenharmony_ci // start stream 1022094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW, STILL_CAPTURE}; 1023094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 1024094332d3Sopenharmony_ci // Get preview 1025094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 1026094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_CAPTURE, cameraBase_->CAPTURE_ID_CAPTURE, false, true); 1027094332d3Sopenharmony_ci // release stream 1028094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_CAPTURE}; 1029094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_CAPTURE}; 1030094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 1031094332d3Sopenharmony_ci } 1032094332d3Sopenharmony_ci} 1033094332d3Sopenharmony_ci 1034094332d3Sopenharmony_ci/** 1035094332d3Sopenharmony_ci * @tc.name: USB Camera 1036094332d3Sopenharmony_ci * @tc.desc: Commit 2 streams together, width = 1280, height = 720, expected success. 1037094332d3Sopenharmony_ci * @tc.level: Level0 1038094332d3Sopenharmony_ci * @tc.size: MediumTest 1039094332d3Sopenharmony_ci * @tc.type: Function 1040094332d3Sopenharmony_ci */ 1041094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0033) 1042094332d3Sopenharmony_ci{ 1043094332d3Sopenharmony_ci std::vector<std::string> usbCameraIds; 1044094332d3Sopenharmony_ci cameraBase_->cameraHost->GetCameraIds(usbCameraIds); 1045094332d3Sopenharmony_ci if (usbCameraIds.size() > 1) { // 2:usb camera quantity 1046094332d3Sopenharmony_ci g_usbCameraExit = true; 1047094332d3Sopenharmony_ci } else { 1048094332d3Sopenharmony_ci g_usbCameraExit = false; 1049094332d3Sopenharmony_ci } 1050094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 1051094332d3Sopenharmony_ci if (!g_usbCameraExit) { 1052094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 1053094332d3Sopenharmony_ci } 1054094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 1055094332d3Sopenharmony_ci if (cameraBase_->streamCustomerPreview_ == nullptr) { 1056094332d3Sopenharmony_ci cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>(); 1057094332d3Sopenharmony_ci } 1058094332d3Sopenharmony_ci std::vector<StreamInfo> streamInfos; 1059094332d3Sopenharmony_ci StreamInfo streamInfo = {}; 1060094332d3Sopenharmony_ci streamInfo.streamId_ = cameraBase_->STREAM_ID_PREVIEW; 1061094332d3Sopenharmony_ci streamInfo.width_ = 1280; // 1280:picture width 1062094332d3Sopenharmony_ci streamInfo.height_ = 960; // 720:picture height 1063094332d3Sopenharmony_ci streamInfo.format_ = PIXEL_FMT_RGBA_8888; 1064094332d3Sopenharmony_ci streamInfo.dataspace_ = 8; // 8:picture dataspace 1065094332d3Sopenharmony_ci streamInfo.intent_ = PREVIEW; 1066094332d3Sopenharmony_ci streamInfo.tunneledMode_ = 5; // 5:tunnel mode 1067094332d3Sopenharmony_ci streamInfo.bufferQueue_ = new BufferProducerSequenceable(cameraBase_->streamCustomerPreview_->CreateProducer()); 1068094332d3Sopenharmony_ci ASSERT_NE(streamInfo.bufferQueue_, nullptr); 1069094332d3Sopenharmony_ci streamInfo.bufferQueue_->producer_->SetQueueSize(8); // 8:set bufferQueue size 1070094332d3Sopenharmony_ci streamInfos.push_back(streamInfo); 1071094332d3Sopenharmony_ci if (cameraBase_->streamCustomerCapture_ == nullptr) { 1072094332d3Sopenharmony_ci cameraBase_->streamCustomerCapture_ = std::make_shared<StreamCustomer>(); 1073094332d3Sopenharmony_ci } 1074094332d3Sopenharmony_ci StreamInfo streamInfoCapture = {}; 1075094332d3Sopenharmony_ci streamInfoCapture.streamId_ = cameraBase_->STREAM_ID_CAPTURE; 1076094332d3Sopenharmony_ci streamInfoCapture.width_ = 640; // 1280:picture width 1077094332d3Sopenharmony_ci streamInfoCapture.height_ = 480; // 960:picture height 1078094332d3Sopenharmony_ci streamInfoCapture.format_ = PIXEL_FMT_RGBA_8888; 1079094332d3Sopenharmony_ci streamInfoCapture.dataspace_ = 8; // 8:picture dataspace 1080094332d3Sopenharmony_ci streamInfoCapture.intent_ = STILL_CAPTURE; 1081094332d3Sopenharmony_ci streamInfoCapture.encodeType_ = ENCODE_TYPE_JPEG; 1082094332d3Sopenharmony_ci streamInfoCapture.tunneledMode_ = 5; // 5:tunnel mode 1083094332d3Sopenharmony_ci streamInfoCapture.bufferQueue_ = new BufferProducerSequenceable( 1084094332d3Sopenharmony_ci cameraBase_->streamCustomerCapture_->CreateProducer()); 1085094332d3Sopenharmony_ci ASSERT_NE(streamInfoCapture.bufferQueue_, nullptr); 1086094332d3Sopenharmony_ci streamInfoCapture.bufferQueue_->producer_->SetQueueSize(8); // 8:set bufferQueue size 1087094332d3Sopenharmony_ci streamInfos.push_back(streamInfoCapture); 1088094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos); 1089094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 1090094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CommitStreams(NORMAL, cameraBase_->ability_); 1091094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 1092094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 1093094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_CAPTURE, cameraBase_->CAPTURE_ID_CAPTURE, false, true); 1094094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_CAPTURE}; 1095094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_CAPTURE}; 1096094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 1097094332d3Sopenharmony_ci} 1098094332d3Sopenharmony_ci 1099094332d3Sopenharmony_ci/** 1100094332d3Sopenharmony_ci * @tc.name: USB Camera 1101094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_EXPOSURE_TIME 1102094332d3Sopenharmony_ci * @tc.level: Level0 1103094332d3Sopenharmony_ci * @tc.size: MediumTest 1104094332d3Sopenharmony_ci * @tc.type: Function 1105094332d3Sopenharmony_ci */ 1106094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0034) 1107094332d3Sopenharmony_ci{ 1108094332d3Sopenharmony_ci std::vector<std::string> usbCameraIds; 1109094332d3Sopenharmony_ci cameraBase_->cameraHost->GetCameraIds(usbCameraIds); 1110094332d3Sopenharmony_ci if (usbCameraIds.size() > 1) { // 2:usb camera quantity 1111094332d3Sopenharmony_ci g_usbCameraExit = true; 1112094332d3Sopenharmony_ci } else { 1113094332d3Sopenharmony_ci g_usbCameraExit = false; 1114094332d3Sopenharmony_ci } 1115094332d3Sopenharmony_ci if (!g_usbCameraExit) { 1116094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 1117094332d3Sopenharmony_ci } 1118094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 1119094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 1120094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 1121094332d3Sopenharmony_ci camera_metadata_item_t entry; 1122094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_EXPOSURE_TIME, &entry); 1123094332d3Sopenharmony_ci if (ret == CAM_META_SUCCESS) { 1124094332d3Sopenharmony_ci std::cout << "log OHOS_ABILITY_EXPOSURE_TIME: count is " << (int)entry.count << std::endl; 1125094332d3Sopenharmony_ci std::cout << "log exposure time value: [" << entry.data.i32[0] << ", " << entry.data.i32[1] << "]" <<std::endl; 1126094332d3Sopenharmony_ci std::cout << std::endl; 1127094332d3Sopenharmony_ci } else if (ret == CAM_META_ITEM_NOT_FOUND) { 1128094332d3Sopenharmony_ci std::cout << "OHOS_ABILITY_EXPOSURE_TIME is not support" << std::endl; 1129094332d3Sopenharmony_ci } 1130094332d3Sopenharmony_ci} 1131094332d3Sopenharmony_ci 1132094332d3Sopenharmony_ci/** 1133094332d3Sopenharmony_ci * @tc.name: USB Camera 1134094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_AE_LOCK 1135094332d3Sopenharmony_ci * @tc.level: Level0 1136094332d3Sopenharmony_ci * @tc.size: MediumTest 1137094332d3Sopenharmony_ci * @tc.type: Function 1138094332d3Sopenharmony_ci */ 1139094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0035) 1140094332d3Sopenharmony_ci{ 1141094332d3Sopenharmony_ci std::vector<std::string> usbCameraIds; 1142094332d3Sopenharmony_ci cameraBase_->cameraHost->GetCameraIds(usbCameraIds); 1143094332d3Sopenharmony_ci if (usbCameraIds.size() > 1) { // 2:usb camera quantity 1144094332d3Sopenharmony_ci g_usbCameraExit = true; 1145094332d3Sopenharmony_ci } else { 1146094332d3Sopenharmony_ci g_usbCameraExit = false; 1147094332d3Sopenharmony_ci } 1148094332d3Sopenharmony_ci if (!g_usbCameraExit) { 1149094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 1150094332d3Sopenharmony_ci } 1151094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 1152094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 1153094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 1154094332d3Sopenharmony_ci camera_metadata_item_t entry; 1155094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_AE_LOCK, &entry); 1156094332d3Sopenharmony_ci if (ret == CAM_META_SUCCESS) { 1157094332d3Sopenharmony_ci std::cout << "supported ae lock list:"; 1158094332d3Sopenharmony_ci for (int i = 0; i < entry.count; i++) { 1159094332d3Sopenharmony_ci std::cout << " " << static_cast<int>(entry.data.u8[i]); 1160094332d3Sopenharmony_ci } 1161094332d3Sopenharmony_ci std::cout << std::endl; 1162094332d3Sopenharmony_ci } else if (ret == CAM_META_ITEM_NOT_FOUND) { 1163094332d3Sopenharmony_ci std::cout << "OHOS_ABILITY_AE_LOCK is not support" << std::endl; 1164094332d3Sopenharmony_ci } 1165094332d3Sopenharmony_ci} 1166094332d3Sopenharmony_ci 1167094332d3Sopenharmony_ci/** 1168094332d3Sopenharmony_ci * @tc.name: USB Camera 1169094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_AWB_MODES 1170094332d3Sopenharmony_ci * @tc.level: Level0 1171094332d3Sopenharmony_ci * @tc.size: MediumTest 1172094332d3Sopenharmony_ci * @tc.type: Function 1173094332d3Sopenharmony_ci */ 1174094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0036) 1175094332d3Sopenharmony_ci{ 1176094332d3Sopenharmony_ci std::vector<std::string> usbCameraIds; 1177094332d3Sopenharmony_ci cameraBase_->cameraHost->GetCameraIds(usbCameraIds); 1178094332d3Sopenharmony_ci if (usbCameraIds.size() > 1) { // 2:usb camera quantity 1179094332d3Sopenharmony_ci g_usbCameraExit = true; 1180094332d3Sopenharmony_ci } else { 1181094332d3Sopenharmony_ci g_usbCameraExit = false; 1182094332d3Sopenharmony_ci } 1183094332d3Sopenharmony_ci if (!g_usbCameraExit) { 1184094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 1185094332d3Sopenharmony_ci } 1186094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 1187094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 1188094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 1189094332d3Sopenharmony_ci camera_metadata_item_t entry; 1190094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_AWB_MODES, &entry); 1191094332d3Sopenharmony_ci if (ret == CAM_META_SUCCESS) { 1192094332d3Sopenharmony_ci std::cout << "supported awb mode list:"; 1193094332d3Sopenharmony_ci for (int i = 0; i < entry.count; i++) { 1194094332d3Sopenharmony_ci std::cout << " " << static_cast<int>(entry.data.u8[i]); 1195094332d3Sopenharmony_ci } 1196094332d3Sopenharmony_ci std::cout << std::endl; 1197094332d3Sopenharmony_ci } else if (ret == CAM_META_ITEM_NOT_FOUND) { 1198094332d3Sopenharmony_ci std::cout << "OHOS_ABILITY_AWB_MODES is not support" << std::endl; 1199094332d3Sopenharmony_ci } 1200094332d3Sopenharmony_ci} 1201094332d3Sopenharmony_ci 1202094332d3Sopenharmony_ci/** 1203094332d3Sopenharmony_ci * @tc.name: USB Camera 1204094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_AWB_LOCK 1205094332d3Sopenharmony_ci * @tc.level: Level0 1206094332d3Sopenharmony_ci * @tc.size: MediumTest 1207094332d3Sopenharmony_ci * @tc.type: Function 1208094332d3Sopenharmony_ci */ 1209094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0037) 1210094332d3Sopenharmony_ci{ 1211094332d3Sopenharmony_ci std::vector<std::string> usbCameraIds; 1212094332d3Sopenharmony_ci cameraBase_->cameraHost->GetCameraIds(usbCameraIds); 1213094332d3Sopenharmony_ci if (usbCameraIds.size() > 1) { // 2:usb camera quantity 1214094332d3Sopenharmony_ci g_usbCameraExit = true; 1215094332d3Sopenharmony_ci } else { 1216094332d3Sopenharmony_ci g_usbCameraExit = false; 1217094332d3Sopenharmony_ci } 1218094332d3Sopenharmony_ci if (!g_usbCameraExit) { 1219094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 1220094332d3Sopenharmony_ci } 1221094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 1222094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 1223094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 1224094332d3Sopenharmony_ci camera_metadata_item_t entry; 1225094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_AWB_LOCK, &entry); 1226094332d3Sopenharmony_ci if (ret == CAM_META_SUCCESS) { 1227094332d3Sopenharmony_ci std::cout << "supported awb list list:"; 1228094332d3Sopenharmony_ci for (int i = 0; i < entry.count; i++) { 1229094332d3Sopenharmony_ci std::cout << " " << static_cast<int>(entry.data.u8[i]); 1230094332d3Sopenharmony_ci } 1231094332d3Sopenharmony_ci std::cout << std::endl; 1232094332d3Sopenharmony_ci } else if (ret == CAM_META_ITEM_NOT_FOUND) { 1233094332d3Sopenharmony_ci std::cout << "OHOS_ABILITY_AWB_LOCK is not support" << std::endl; 1234094332d3Sopenharmony_ci } 1235094332d3Sopenharmony_ci} 1236094332d3Sopenharmony_ci 1237094332d3Sopenharmony_ci/** 1238094332d3Sopenharmony_ci * @tc.name: USB Camera 1239094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_METER_MODES 1240094332d3Sopenharmony_ci * @tc.level: Level0 1241094332d3Sopenharmony_ci * @tc.size: MediumTest 1242094332d3Sopenharmony_ci * @tc.type: Function 1243094332d3Sopenharmony_ci */ 1244094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0038) 1245094332d3Sopenharmony_ci{ 1246094332d3Sopenharmony_ci std::vector<std::string> usbCameraIds; 1247094332d3Sopenharmony_ci cameraBase_->cameraHost->GetCameraIds(usbCameraIds); 1248094332d3Sopenharmony_ci if (usbCameraIds.size() > 1) { // 2:usb camera quantity 1249094332d3Sopenharmony_ci g_usbCameraExit = true; 1250094332d3Sopenharmony_ci } else { 1251094332d3Sopenharmony_ci g_usbCameraExit = false; 1252094332d3Sopenharmony_ci } 1253094332d3Sopenharmony_ci if (!g_usbCameraExit) { 1254094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 1255094332d3Sopenharmony_ci } 1256094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 1257094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 1258094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 1259094332d3Sopenharmony_ci camera_metadata_item_t entry; 1260094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_METER_MODES, &entry); 1261094332d3Sopenharmony_ci if (ret == CAM_META_SUCCESS) { 1262094332d3Sopenharmony_ci std::cout << "supported meter list list:"; 1263094332d3Sopenharmony_ci for (int i = 0; i < entry.count; i++) { 1264094332d3Sopenharmony_ci std::cout << " " << static_cast<int>(entry.data.u8[i]); 1265094332d3Sopenharmony_ci } 1266094332d3Sopenharmony_ci std::cout << std::endl; 1267094332d3Sopenharmony_ci } else if (ret == CAM_META_ITEM_NOT_FOUND) { 1268094332d3Sopenharmony_ci std::cout << "OHOS_ABILITY_METER_MODES is not support" << std::endl; 1269094332d3Sopenharmony_ci } 1270094332d3Sopenharmony_ci} 1271