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 // 1:number of connected cameras 69094332d3Sopenharmony_ci g_usbCameraExit = cameraIds.size() > 1; 70094332d3Sopenharmony_ci} 71094332d3Sopenharmony_ci 72094332d3Sopenharmony_ci/** 73094332d3Sopenharmony_ci * @tc.name: USB Camera 74094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_ZOOM_RATIO_RANGE 75094332d3Sopenharmony_ci * @tc.level: Level0 76094332d3Sopenharmony_ci * @tc.size: MediumTest 77094332d3Sopenharmony_ci * @tc.type: Function 78094332d3Sopenharmony_ci */ 79094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0002) 80094332d3Sopenharmony_ci{ 81094332d3Sopenharmony_ci if (!g_usbCameraExit) { 82094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 83094332d3Sopenharmony_ci } 84094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 85094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 86094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 87094332d3Sopenharmony_ci camera_metadata_item_t entry; 88094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_ZOOM_RATIO_RANGE, &entry); 89094332d3Sopenharmony_ci if (ret == CAM_META_SUCCESS) { 90094332d3Sopenharmony_ci std::cout << "OHOS_ABILITY_ZOOM_RATIO_RANGE: count is " << (int)entry.count << std::endl; 91094332d3Sopenharmony_ci std::cout << "Zoom ratio range: [" << entry.data.f[0]; 92094332d3Sopenharmony_ci std::cout << "," << entry.data.f[1] << "]" << std::endl; 93094332d3Sopenharmony_ci } else if (ret == CAM_META_ITEM_NOT_FOUND) { 94094332d3Sopenharmony_ci std::cout << "OHOS_ABILITY_ZOOM_RATIO_RANGE is not support" << std::endl; 95094332d3Sopenharmony_ci } 96094332d3Sopenharmony_ci} 97094332d3Sopenharmony_ci 98094332d3Sopenharmony_ci/** 99094332d3Sopenharmony_ci * @tc.name: USB Camera 100094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_CAMERA_CONNECTION_TYPE 101094332d3Sopenharmony_ci * @tc.level: Level0 102094332d3Sopenharmony_ci * @tc.size: MediumTest 103094332d3Sopenharmony_ci * @tc.type: Function 104094332d3Sopenharmony_ci */ 105094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0003) 106094332d3Sopenharmony_ci{ 107094332d3Sopenharmony_ci if (!g_usbCameraExit) { 108094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 109094332d3Sopenharmony_ci } 110094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 111094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 112094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 113094332d3Sopenharmony_ci camera_metadata_item_t entry; 114094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_CAMERA_CONNECTION_TYPE, &entry); 115094332d3Sopenharmony_ci EXPECT_EQ(ret, CAM_META_SUCCESS); 116094332d3Sopenharmony_ci std::cout << "OHOS_ABILITY_CAMERA_CONNECTION_TYPE value is " 117094332d3Sopenharmony_ci << static_cast<int>(entry.data.u8[0]) << std::endl; 118094332d3Sopenharmony_ci EXPECT_TRUE(entry.data.u8[0] == OHOS_CAMERA_CONNECTION_TYPE_USB_PLUGIN); 119094332d3Sopenharmony_ci} 120094332d3Sopenharmony_ci 121094332d3Sopenharmony_ci/** 122094332d3Sopenharmony_ci * @tc.name: USB Camera 123094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_CAMERA_POSITION 124094332d3Sopenharmony_ci * @tc.level: Level0 125094332d3Sopenharmony_ci * @tc.size: MediumTest 126094332d3Sopenharmony_ci * @tc.type: Function 127094332d3Sopenharmony_ci */ 128094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0004) 129094332d3Sopenharmony_ci{ 130094332d3Sopenharmony_ci if (!g_usbCameraExit) { 131094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 132094332d3Sopenharmony_ci } 133094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 134094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 135094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 136094332d3Sopenharmony_ci camera_metadata_item_t entry; 137094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_CAMERA_POSITION, &entry); 138094332d3Sopenharmony_ci EXPECT_EQ(ret, CAM_META_SUCCESS); 139094332d3Sopenharmony_ci std::cout << "OHOS_ABILITY_CAMERA_POSITION value is " << static_cast<int>(entry.data.u8[0]) << std::endl; 140094332d3Sopenharmony_ci EXPECT_TRUE(entry.data.u8[0] == OHOS_CAMERA_POSITION_FRONT); 141094332d3Sopenharmony_ci} 142094332d3Sopenharmony_ci 143094332d3Sopenharmony_ci/** 144094332d3Sopenharmony_ci * @tc.name: USB Camera 145094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_FLASH_AVAILABLE 146094332d3Sopenharmony_ci * @tc.level: Level0 147094332d3Sopenharmony_ci * @tc.size: MediumTest 148094332d3Sopenharmony_ci * @tc.type: Function 149094332d3Sopenharmony_ci */ 150094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0005) 151094332d3Sopenharmony_ci{ 152094332d3Sopenharmony_ci if (!g_usbCameraExit) { 153094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 154094332d3Sopenharmony_ci } 155094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 156094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 157094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 158094332d3Sopenharmony_ci camera_metadata_item_t entry; 159094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_FLASH_AVAILABLE, &entry); 160094332d3Sopenharmony_ci EXPECT_EQ(ret, CAM_META_SUCCESS); 161094332d3Sopenharmony_ci std::cout << "OHOS_ABILITY_FLASH_AVAILABLE value is " << static_cast<int>(entry.data.u8[0]) << std::endl; 162094332d3Sopenharmony_ci} 163094332d3Sopenharmony_ci 164094332d3Sopenharmony_ci/** 165094332d3Sopenharmony_ci * @tc.name: USB Camera 166094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_VIDEO_STABILIZATION_MODES 167094332d3Sopenharmony_ci * @tc.level: Level0 168094332d3Sopenharmony_ci * @tc.size: MediumTest 169094332d3Sopenharmony_ci * @tc.type: Function 170094332d3Sopenharmony_ci */ 171094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0006) 172094332d3Sopenharmony_ci{ 173094332d3Sopenharmony_ci if (!g_usbCameraExit) { 174094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 175094332d3Sopenharmony_ci } 176094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 177094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 178094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 179094332d3Sopenharmony_ci camera_metadata_item_t entry; 180094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_VIDEO_STABILIZATION_MODES, &entry); 181094332d3Sopenharmony_ci if (ret == CAM_META_SUCCESS) { 182094332d3Sopenharmony_ci for (int i = 0; i < entry.count; i++) { 183094332d3Sopenharmony_ci std::cout << "OHOS_ABILITY_VIDEO_STABILIZATION_MODES value is " 184094332d3Sopenharmony_ci << static_cast<int>(entry.data.u8[i]) << std::endl; 185094332d3Sopenharmony_ci } 186094332d3Sopenharmony_ci } else if (ret == CAM_META_ITEM_NOT_FOUND) { 187094332d3Sopenharmony_ci std::cout << "OHOS_ABILITY_VIDEO_STABILIZATION_MODES is not support" << std::endl; 188094332d3Sopenharmony_ci } 189094332d3Sopenharmony_ci} 190094332d3Sopenharmony_ci 191094332d3Sopenharmony_ci/** 192094332d3Sopenharmony_ci * @tc.name: USB Camera 193094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_FLASH_MODES 194094332d3Sopenharmony_ci * @tc.level: Level0 195094332d3Sopenharmony_ci * @tc.size: MediumTest 196094332d3Sopenharmony_ci * @tc.type: Function 197094332d3Sopenharmony_ci */ 198094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_007) 199094332d3Sopenharmony_ci{ 200094332d3Sopenharmony_ci if (!g_usbCameraExit) { 201094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 202094332d3Sopenharmony_ci } 203094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 204094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 205094332d3Sopenharmony_ci camera_metadata_item_t entry; 206094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_FLASH_MODES, &entry); 207094332d3Sopenharmony_ci if (ret == CAM_META_SUCCESS) { 208094332d3Sopenharmony_ci std::cout << "supported flash mode list:"; 209094332d3Sopenharmony_ci for (int i = 0; i < entry.count; i++) { 210094332d3Sopenharmony_ci std::cout << " " << static_cast<int>(entry.data.u8[i]); 211094332d3Sopenharmony_ci } 212094332d3Sopenharmony_ci std::cout << std::endl; 213094332d3Sopenharmony_ci } else if (ret == CAM_META_ITEM_NOT_FOUND) { 214094332d3Sopenharmony_ci std::cout << "OHOS_ABILITY_FLASH_MODES is not support" << std::endl; 215094332d3Sopenharmony_ci } 216094332d3Sopenharmony_ci} 217094332d3Sopenharmony_ci 218094332d3Sopenharmony_ci/** 219094332d3Sopenharmony_ci * @tc.name: USB Camera 220094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_FOCUS_MODES 221094332d3Sopenharmony_ci * @tc.level: Level0 222094332d3Sopenharmony_ci * @tc.size: MediumTest 223094332d3Sopenharmony_ci * @tc.type: Function 224094332d3Sopenharmony_ci */ 225094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_008) 226094332d3Sopenharmony_ci{ 227094332d3Sopenharmony_ci if (!g_usbCameraExit) { 228094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 229094332d3Sopenharmony_ci } 230094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 231094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 232094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 233094332d3Sopenharmony_ci camera_metadata_item_t entry; 234094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_FOCUS_MODES, &entry); 235094332d3Sopenharmony_ci if (ret == CAM_META_SUCCESS) { 236094332d3Sopenharmony_ci std::cout << "supported focus mode list:"; 237094332d3Sopenharmony_ci for (int i = 0; i < entry.count; i++) { 238094332d3Sopenharmony_ci std::cout << " " << static_cast<int>(entry.data.u8[i]); 239094332d3Sopenharmony_ci } 240094332d3Sopenharmony_ci std::cout << std::endl; 241094332d3Sopenharmony_ci } else if (ret == CAM_META_ITEM_NOT_FOUND) { 242094332d3Sopenharmony_ci std::cout << "OHOS_ABILITY_FOCUS_MODES is not support" << std::endl; 243094332d3Sopenharmony_ci } 244094332d3Sopenharmony_ci} 245094332d3Sopenharmony_ci 246094332d3Sopenharmony_ci/** 247094332d3Sopenharmony_ci * @tc.name: USB Camera 248094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_EXPOSURE_MODES 249094332d3Sopenharmony_ci * @tc.level: Level0 250094332d3Sopenharmony_ci * @tc.size: MediumTest 251094332d3Sopenharmony_ci * @tc.type: Function 252094332d3Sopenharmony_ci */ 253094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_009) 254094332d3Sopenharmony_ci{ 255094332d3Sopenharmony_ci if (!g_usbCameraExit) { 256094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 257094332d3Sopenharmony_ci } 258094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 259094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 260094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 261094332d3Sopenharmony_ci camera_metadata_item_t entry; 262094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_EXPOSURE_MODES, &entry); 263094332d3Sopenharmony_ci if (ret == CAM_META_SUCCESS) { 264094332d3Sopenharmony_ci std::cout << "supported exposure mode list:"; 265094332d3Sopenharmony_ci for (int i = 0; i < entry.count; i++) { 266094332d3Sopenharmony_ci std::cout << " " << static_cast<int>(entry.data.u8[i]); 267094332d3Sopenharmony_ci } 268094332d3Sopenharmony_ci std::cout << std::endl; 269094332d3Sopenharmony_ci } else if (ret == CAM_META_ITEM_NOT_FOUND) { 270094332d3Sopenharmony_ci std::cout << "OHOS_ABILITY_EXPOSURE_MODES is not support" << std::endl; 271094332d3Sopenharmony_ci } 272094332d3Sopenharmony_ci} 273094332d3Sopenharmony_ci 274094332d3Sopenharmony_ci/** 275094332d3Sopenharmony_ci * @tc.name: USB Camera 276094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_CONTROL_CAPTURE_MIRROR_SUPPORTED 277094332d3Sopenharmony_ci * @tc.level: Level0 278094332d3Sopenharmony_ci * @tc.size: MediumTest 279094332d3Sopenharmony_ci * @tc.type: Function 280094332d3Sopenharmony_ci */ 281094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0010) 282094332d3Sopenharmony_ci{ 283094332d3Sopenharmony_ci if (!g_usbCameraExit) { 284094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 285094332d3Sopenharmony_ci } 286094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 287094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 288094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 289094332d3Sopenharmony_ci camera_metadata_item_t entry; 290094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_CONTROL_CAPTURE_MIRROR_SUPPORTED, &entry); 291094332d3Sopenharmony_ci EXPECT_EQ(ret, CAM_META_SUCCESS); 292094332d3Sopenharmony_ci std::cout << "capture mirror supported is :"; 293094332d3Sopenharmony_ci for (int i = 0; i < entry.count; i++) { 294094332d3Sopenharmony_ci std::cout << " " << static_cast<int>(entry.data.u8[i]); 295094332d3Sopenharmony_ci } 296094332d3Sopenharmony_ci std::cout << std::endl; 297094332d3Sopenharmony_ci} 298094332d3Sopenharmony_ci 299094332d3Sopenharmony_ci/** 300094332d3Sopenharmony_ci * @tc.name: USB Camera 301094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_MUTE_MODES 302094332d3Sopenharmony_ci * @tc.level: Level0 303094332d3Sopenharmony_ci * @tc.size: MediumTest 304094332d3Sopenharmony_ci * @tc.type: Function 305094332d3Sopenharmony_ci */ 306094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0011) 307094332d3Sopenharmony_ci{ 308094332d3Sopenharmony_ci if (!g_usbCameraExit) { 309094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 310094332d3Sopenharmony_ci } 311094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 312094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 313094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 314094332d3Sopenharmony_ci camera_metadata_item_t entry; 315094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_MUTE_MODES, &entry); 316094332d3Sopenharmony_ci if (ret == CAM_META_SUCCESS) { 317094332d3Sopenharmony_ci std::cout << "supported mute mode is:"; 318094332d3Sopenharmony_ci for (int i = 0; i < entry.count; i++) { 319094332d3Sopenharmony_ci std::cout << " " << static_cast<int>(entry.data.u8[i]); 320094332d3Sopenharmony_ci } 321094332d3Sopenharmony_ci std::cout << std::endl; 322094332d3Sopenharmony_ci } else if (ret == CAM_META_ITEM_NOT_FOUND) { 323094332d3Sopenharmony_ci std::cout << "OHOS_ABILITY_MUTE_MODES is not support" << std::endl; 324094332d3Sopenharmony_ci } 325094332d3Sopenharmony_ci} 326094332d3Sopenharmony_ci 327094332d3Sopenharmony_ci/** 328094332d3Sopenharmony_ci * @tc.name: USB Camera 329094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_FPS_RANGES 330094332d3Sopenharmony_ci * @tc.level: Level0 331094332d3Sopenharmony_ci * @tc.size: MediumTest 332094332d3Sopenharmony_ci * @tc.type: Function 333094332d3Sopenharmony_ci */ 334094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0012) 335094332d3Sopenharmony_ci{ 336094332d3Sopenharmony_ci if (!g_usbCameraExit) { 337094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 338094332d3Sopenharmony_ci } 339094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 340094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 341094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 342094332d3Sopenharmony_ci camera_metadata_item_t entry; 343094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_FPS_RANGES, &entry); 344094332d3Sopenharmony_ci EXPECT_EQ(ret, CAM_META_SUCCESS); 345094332d3Sopenharmony_ci std::cout << "supported fps ranges list: ["; 346094332d3Sopenharmony_ci std::cout << static_cast<int>(entry.data.i32[0]) << "," << static_cast<int>(entry.data.i32[1]) << "]"; 347094332d3Sopenharmony_ci std::cout << std::endl; 348094332d3Sopenharmony_ci} 349094332d3Sopenharmony_ci 350094332d3Sopenharmony_ci/** 351094332d3Sopenharmony_ci * @tc.name: USB Camera 352094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_CAMERA_TYPE 353094332d3Sopenharmony_ci * @tc.level: Level0 354094332d3Sopenharmony_ci * @tc.size: MediumTest 355094332d3Sopenharmony_ci * @tc.type: Function 356094332d3Sopenharmony_ci */ 357094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0013) 358094332d3Sopenharmony_ci{ 359094332d3Sopenharmony_ci if (!g_usbCameraExit) { 360094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 361094332d3Sopenharmony_ci } 362094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 363094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 364094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 365094332d3Sopenharmony_ci camera_metadata_item_t entry; 366094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_CAMERA_TYPE, &entry); 367094332d3Sopenharmony_ci EXPECT_EQ(ret, CAM_META_SUCCESS); 368094332d3Sopenharmony_ci std::cout << "OHOS_ABILITY_CAMERA_TYPE value is " << static_cast<int>(entry.data.u8[0]) << std::endl; 369094332d3Sopenharmony_ci EXPECT_TRUE(entry.data.u8[0] == OHOS_CAMERA_TYPE_UNSPECIFIED); 370094332d3Sopenharmony_ci} 371094332d3Sopenharmony_ci 372094332d3Sopenharmony_ci/** 373094332d3Sopenharmony_ci * @tc.name: USB Camera 374094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_JPEG_ORIENTATION 375094332d3Sopenharmony_ci * @tc.level: Level0 376094332d3Sopenharmony_ci * @tc.size: MediumTest 377094332d3Sopenharmony_ci * @tc.type: Function 378094332d3Sopenharmony_ci */ 379094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0014) 380094332d3Sopenharmony_ci{ 381094332d3Sopenharmony_ci if (!g_usbCameraExit) { 382094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 383094332d3Sopenharmony_ci } 384094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 385094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 386094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 387094332d3Sopenharmony_ci camera_metadata_item_t entry; 388094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_JPEG_ORIENTATION, &entry); 389094332d3Sopenharmony_ci EXPECT_EQ(ret, CAM_META_SUCCESS); 390094332d3Sopenharmony_ci std::cout << "OHOS_JPEG_ORIENTATION value is " << static_cast<int>(entry.data.i32[0]) << std::endl; 391094332d3Sopenharmony_ci} 392094332d3Sopenharmony_ci 393094332d3Sopenharmony_ci/** 394094332d3Sopenharmony_ci * @tc.name: USB Camera 395094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_JPEG_QUALITY 396094332d3Sopenharmony_ci * @tc.level: Level0 397094332d3Sopenharmony_ci * @tc.size: MediumTest 398094332d3Sopenharmony_ci * @tc.type: Function 399094332d3Sopenharmony_ci */ 400094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0015) 401094332d3Sopenharmony_ci{ 402094332d3Sopenharmony_ci if (!g_usbCameraExit) { 403094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 404094332d3Sopenharmony_ci } 405094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 406094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 407094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 408094332d3Sopenharmony_ci camera_metadata_item_t entry; 409094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_JPEG_QUALITY, &entry); 410094332d3Sopenharmony_ci EXPECT_EQ(ret, CAM_META_SUCCESS); 411094332d3Sopenharmony_ci std::cout << "OHOS_JPEG_ORIENTATION value is " << static_cast<int>(entry.data.u8[0]) << std::endl; 412094332d3Sopenharmony_ci} 413094332d3Sopenharmony_ci 414094332d3Sopenharmony_ci/** 415094332d3Sopenharmony_ci * @tc.name: USB Camera 416094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_STREAM_AVAILABLE_BASIC_CONFIGURATIONS 417094332d3Sopenharmony_ci * @tc.level: Level0 418094332d3Sopenharmony_ci * @tc.size: MediumTest 419094332d3Sopenharmony_ci * @tc.type: Function 420094332d3Sopenharmony_ci */ 421094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0016) 422094332d3Sopenharmony_ci{ 423094332d3Sopenharmony_ci if (!g_usbCameraExit) { 424094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 425094332d3Sopenharmony_ci } 426094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 427094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 428094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 429094332d3Sopenharmony_ci camera_metadata_item_t entry; 430094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_STREAM_AVAILABLE_BASIC_CONFIGURATIONS, &entry); 431094332d3Sopenharmony_ci EXPECT_EQ(ret, CAM_META_SUCCESS); 432094332d3Sopenharmony_ci std::cout << "OHOS_ABILITY_STREAM_AVAILABLE_BASIC_CONFIGURATIONS value is " 433094332d3Sopenharmony_ci << static_cast<int>(entry.data.u8[0]) << std::endl; 434094332d3Sopenharmony_ci EXPECT_TRUE(entry.data.u8[0] == OHOS_CAMERA_FORMAT_RGBA_8888); 435094332d3Sopenharmony_ci} 436094332d3Sopenharmony_ci 437094332d3Sopenharmony_ci/** 438094332d3Sopenharmony_ci * @tc.name: USB Camera 439094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_STREAM_AVAILABLE_EXTEND_CONFIGURATIONS 440094332d3Sopenharmony_ci * @tc.level: Level0 441094332d3Sopenharmony_ci * @tc.size: MediumTest 442094332d3Sopenharmony_ci * @tc.type: Function 443094332d3Sopenharmony_ci */ 444094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0017) 445094332d3Sopenharmony_ci{ 446094332d3Sopenharmony_ci if (!g_usbCameraExit) { 447094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 448094332d3Sopenharmony_ci } 449094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 450094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 451094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 452094332d3Sopenharmony_ci EXPECT_NE(data, nullptr); 453094332d3Sopenharmony_ci camera_metadata_item_t entry; 454094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_STREAM_AVAILABLE_EXTEND_CONFIGURATIONS, &entry); 455094332d3Sopenharmony_ci if (ret == 0 && entry.data.i32 != nullptr && entry.count > 0) { 456094332d3Sopenharmony_ci std::cout << "print tag<OHOS_ABILITY_STREAM_AVAILABLE_EXTEND_CONFIGURATIONS> value start." << std::endl; 457094332d3Sopenharmony_ci const size_t STEP = 10; // print step 458094332d3Sopenharmony_ci std::cout << "count" << entry.count << std::endl; 459094332d3Sopenharmony_ci for (size_t i = 0; i < entry.count; i++) { 460094332d3Sopenharmony_ci std::cout << entry.data.i32[i] << " "; 461094332d3Sopenharmony_ci if ((i != 0) && (i % STEP == 0 || i == entry.count - 1)) { 462094332d3Sopenharmony_ci std::cout << std::endl; 463094332d3Sopenharmony_ci } 464094332d3Sopenharmony_ci } 465094332d3Sopenharmony_ci std::cout << "print tag<OHOS_ABILITY_STREAM_AVAILABLE_EXTEND_CONFIGURATIONS> value end." << std::endl; 466094332d3Sopenharmony_ci } 467094332d3Sopenharmony_ci} 468094332d3Sopenharmony_ci 469094332d3Sopenharmony_ci/** 470094332d3Sopenharmony_ci * @tc.name: USB Camera 471094332d3Sopenharmony_ci * @tc.desc: Preview stream, expected success. 472094332d3Sopenharmony_ci * @tc.level: Level0 473094332d3Sopenharmony_ci * @tc.size: MediumTest 474094332d3Sopenharmony_ci * @tc.type: Function 475094332d3Sopenharmony_ci */ 476094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0018) 477094332d3Sopenharmony_ci{ 478094332d3Sopenharmony_ci if (!g_usbCameraExit) { 479094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 480094332d3Sopenharmony_ci } 481094332d3Sopenharmony_ci // Get the device manager 482094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 483094332d3Sopenharmony_ci // Get the stream manager 484094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 485094332d3Sopenharmony_ci // start stream 486094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW}; 487094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 488094332d3Sopenharmony_ci // Get preview 489094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 490094332d3Sopenharmony_ci // release stream 491094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW}; 492094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW}; 493094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 494094332d3Sopenharmony_ci} 495094332d3Sopenharmony_ci 496094332d3Sopenharmony_ci/** 497094332d3Sopenharmony_ci * @tc.name: USB Camera 498094332d3Sopenharmony_ci * @tc.desc: Preview stream, width = 1280, height = 720, expected success. 499094332d3Sopenharmony_ci * @tc.level: Level0 500094332d3Sopenharmony_ci * @tc.size: MediumTest 501094332d3Sopenharmony_ci * @tc.type: Function 502094332d3Sopenharmony_ci */ 503094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0019) 504094332d3Sopenharmony_ci{ 505094332d3Sopenharmony_ci if (!g_usbCameraExit) { 506094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 507094332d3Sopenharmony_ci } 508094332d3Sopenharmony_ci // Get the device manager 509094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 510094332d3Sopenharmony_ci // Create and get streamOperator information 511094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 512094332d3Sopenharmony_ci // Create data stream 513094332d3Sopenharmony_ci if (cameraBase_->streamCustomerPreview_ == nullptr) { 514094332d3Sopenharmony_ci cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>(); 515094332d3Sopenharmony_ci } 516094332d3Sopenharmony_ci OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer(); 517094332d3Sopenharmony_ci producer->SetQueueSize(8); // 8:set bufferQueue size 518094332d3Sopenharmony_ci 519094332d3Sopenharmony_ci std::vector<StreamInfo> streamInfos; 520094332d3Sopenharmony_ci StreamInfo streamInfo = {}; 521094332d3Sopenharmony_ci streamInfo.streamId_ = cameraBase_->STREAM_ID_PREVIEW; 522094332d3Sopenharmony_ci streamInfo.width_ = 1280; // 1280:picture width 523094332d3Sopenharmony_ci streamInfo.height_ = 720; // 720:picture height 524094332d3Sopenharmony_ci streamInfo.format_ = PIXEL_FMT_RGBA_8888; 525094332d3Sopenharmony_ci streamInfo.dataspace_ = 8; // 8:picture dataspace 526094332d3Sopenharmony_ci streamInfo.intent_ = PREVIEW; 527094332d3Sopenharmony_ci streamInfo.tunneledMode_ = 5; // 5:tunnel mode 528094332d3Sopenharmony_ci streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer); 529094332d3Sopenharmony_ci ASSERT_NE(streamInfo.bufferQueue_, nullptr); 530094332d3Sopenharmony_ci std::vector<StreamInfo>().swap(streamInfos); 531094332d3Sopenharmony_ci streamInfos.push_back(streamInfo); 532094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos); 533094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 534094332d3Sopenharmony_ci // Submit stream information 535094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CommitStreams(NORMAL, cameraBase_->ability_); 536094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 537094332d3Sopenharmony_ci // capture 538094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 539094332d3Sopenharmony_ci // release stream 540094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW}; 541094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW}; 542094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 543094332d3Sopenharmony_ci} 544094332d3Sopenharmony_ci 545094332d3Sopenharmony_ci/** 546094332d3Sopenharmony_ci * @tc.name: USB Camera 547094332d3Sopenharmony_ci * @tc.desc: UpdateSettings, fps. 548094332d3Sopenharmony_ci * @tc.level: Level0 549094332d3Sopenharmony_ci * @tc.size: MediumTest 550094332d3Sopenharmony_ci * @tc.type: Function 551094332d3Sopenharmony_ci */ 552094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0020) 553094332d3Sopenharmony_ci{ 554094332d3Sopenharmony_ci if (!g_usbCameraExit) { 555094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 556094332d3Sopenharmony_ci } 557094332d3Sopenharmony_ci // Get the device manager 558094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 559094332d3Sopenharmony_ci // get the stream manager 560094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 561094332d3Sopenharmony_ci 562094332d3Sopenharmony_ci // start stream 563094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW}; 564094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 565094332d3Sopenharmony_ci 566094332d3Sopenharmony_ci // updateSettings 567094332d3Sopenharmony_ci const uint32_t ITEM_CAPACITY = 100; 568094332d3Sopenharmony_ci const uint32_t DATA_CAPACITY = 2000; 569094332d3Sopenharmony_ci const int32_t FPS_VALUE = 10; 570094332d3Sopenharmony_ci std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>( 571094332d3Sopenharmony_ci ITEM_CAPACITY, DATA_CAPACITY); 572094332d3Sopenharmony_ci std::vector<int32_t> fpsRange; 573094332d3Sopenharmony_ci fpsRange.push_back(FPS_VALUE); 574094332d3Sopenharmony_ci fpsRange.push_back(FPS_VALUE); 575094332d3Sopenharmony_ci meta->addEntry(OHOS_CONTROL_FPS_RANGES, fpsRange.data(), fpsRange.size()); 576094332d3Sopenharmony_ci const int32_t DEVICE_STREAM_ID = 0; 577094332d3Sopenharmony_ci meta->addEntry(OHOS_CAMERA_STREAM_ID, &DEVICE_STREAM_ID, 1); 578094332d3Sopenharmony_ci std::vector<uint8_t> setting; 579094332d3Sopenharmony_ci MetadataUtils::ConvertMetadataToVec(meta, setting); 580094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->cameraDevice->UpdateSettings(setting); 581094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 582094332d3Sopenharmony_ci 583094332d3Sopenharmony_ci // get preview 584094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 585094332d3Sopenharmony_ci 586094332d3Sopenharmony_ci // release stream 587094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW}; 588094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW}; 589094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 590094332d3Sopenharmony_ci} 591094332d3Sopenharmony_ci 592094332d3Sopenharmony_ci/** 593094332d3Sopenharmony_ci * @tc.name: USB Camera 594094332d3Sopenharmony_ci * @tc.desc: USB Camera, OnCameraStatus and OnCameraEvent. 595094332d3Sopenharmony_ci * @tc.level: Level0 596094332d3Sopenharmony_ci * @tc.size: MediumTest 597094332d3Sopenharmony_ci * @tc.type: Function 598094332d3Sopenharmony_ci */ 599094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0021) 600094332d3Sopenharmony_ci{ 601094332d3Sopenharmony_ci uint32_t rc = 0; 602094332d3Sopenharmony_ci std::cout << "==========[test log] USB Camera, getCameraID success."<< std::endl; 603094332d3Sopenharmony_ci std::vector<std::string> cameraIds; 604094332d3Sopenharmony_ci std::cout << "==========[test log] 1. get current system cameraID."<< std::endl; 605094332d3Sopenharmony_ci cameraBase_->cameraHost->GetCameraIds(cameraIds); 606094332d3Sopenharmony_ci std::cout << "==========[test log] First cameraId.size = " << cameraIds.size() << std::endl; 607094332d3Sopenharmony_ci std::cout << "==========[test log] OnCameraStatus interface has been mobilized" << std::endl; 608094332d3Sopenharmony_ci for (const auto &cameraId : cameraIds) { 609094332d3Sopenharmony_ci std::cout << "==========[test log] cameraId = " << cameraId << std::endl; 610094332d3Sopenharmony_ci } 611094332d3Sopenharmony_ci const int count = 4; 612094332d3Sopenharmony_ci for (int i = 0; i < count; i++) { 613094332d3Sopenharmony_ci std::cout << "==========[test log] 2. please add or delete the usb camera, wait for 3s..."<< std::endl; 614094332d3Sopenharmony_ci sleep(3); // judging add or delete the usb camera, wait for 3s. 615094332d3Sopenharmony_ci } 616094332d3Sopenharmony_ci std::cout << "==========[test log] 3. check the cameraID again... wait for 3s..."<< std::endl; 617094332d3Sopenharmony_ci sleep(3); // checking the cameraID again, wait for 3s. 618094332d3Sopenharmony_ci std::cout << "==========[test log] Second cameraId.size = " << cameraIds.size() << std::endl; 619094332d3Sopenharmony_ci if (cameraIds.size() == 1) { 620094332d3Sopenharmony_ci cameraIds.clear(); 621094332d3Sopenharmony_ci } 622094332d3Sopenharmony_ci rc = cameraBase_->cameraHost->GetCameraIds(cameraIds); 623094332d3Sopenharmony_ci EXPECT_EQ(rc, HDI::Camera::V1_0::NO_ERROR); 624094332d3Sopenharmony_ci for (const auto &cameraId : cameraIds) { 625094332d3Sopenharmony_ci std::cout << "cameraId = " << cameraId << std::endl; 626094332d3Sopenharmony_ci } 627094332d3Sopenharmony_ci // 1:number of connected cameras 628094332d3Sopenharmony_ci g_usbCameraExit = cameraIds.size() > 1; 629094332d3Sopenharmony_ci} 630094332d3Sopenharmony_ci 631094332d3Sopenharmony_ci/** 632094332d3Sopenharmony_ci * @tc.name: USB Camera 633094332d3Sopenharmony_ci * @tc.desc: Commit 2 streams together, Preview and still_capture streams, isStreaming is true. 634094332d3Sopenharmony_ci * @tc.level: Level0 635094332d3Sopenharmony_ci * @tc.size: MediumTest 636094332d3Sopenharmony_ci * @tc.type: Function 637094332d3Sopenharmony_ci */ 638094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0022) 639094332d3Sopenharmony_ci{ 640094332d3Sopenharmony_ci // Get the device manager 641094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 642094332d3Sopenharmony_ci if (!g_usbCameraExit) { 643094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 644094332d3Sopenharmony_ci } 645094332d3Sopenharmony_ci // Get the stream manager 646094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 647094332d3Sopenharmony_ci // start stream 648094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW, STILL_CAPTURE}; 649094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 650094332d3Sopenharmony_ci // Get preview 651094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 652094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_CAPTURE, cameraBase_->CAPTURE_ID_CAPTURE, false, true); 653094332d3Sopenharmony_ci // release stream 654094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_CAPTURE}; 655094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_CAPTURE}; 656094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 657094332d3Sopenharmony_ci} 658094332d3Sopenharmony_ci 659094332d3Sopenharmony_ci/** 660094332d3Sopenharmony_ci * @tc.name: USB Camera 661094332d3Sopenharmony_ci * @tc.desc: Commit 2 streams together, width = 1280, height = 720, expected success. 662094332d3Sopenharmony_ci * @tc.level: Level0 663094332d3Sopenharmony_ci * @tc.size: MediumTest 664094332d3Sopenharmony_ci * @tc.type: Function 665094332d3Sopenharmony_ci */ 666094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0023) 667094332d3Sopenharmony_ci{ 668094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 669094332d3Sopenharmony_ci if (!g_usbCameraExit) { 670094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 671094332d3Sopenharmony_ci } 672094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 673094332d3Sopenharmony_ci if (cameraBase_->streamCustomerPreview_ == nullptr) { 674094332d3Sopenharmony_ci cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>(); 675094332d3Sopenharmony_ci } 676094332d3Sopenharmony_ci std::vector<StreamInfo> streamInfos; 677094332d3Sopenharmony_ci StreamInfo streamInfo = {}; 678094332d3Sopenharmony_ci streamInfo.streamId_ = cameraBase_->STREAM_ID_PREVIEW; 679094332d3Sopenharmony_ci streamInfo.width_ = 1280; // 1280:picture width 680094332d3Sopenharmony_ci streamInfo.height_ = 720; // 720:picture height 681094332d3Sopenharmony_ci streamInfo.format_ = PIXEL_FMT_RGBA_8888; 682094332d3Sopenharmony_ci streamInfo.dataspace_ = 8; // 8:picture dataspace 683094332d3Sopenharmony_ci streamInfo.intent_ = PREVIEW; 684094332d3Sopenharmony_ci streamInfo.tunneledMode_ = 5; // 5:tunnel mode 685094332d3Sopenharmony_ci streamInfo.bufferQueue_ = new BufferProducerSequenceable(cameraBase_->streamCustomerPreview_->CreateProducer()); 686094332d3Sopenharmony_ci ASSERT_NE(streamInfo.bufferQueue_, nullptr); 687094332d3Sopenharmony_ci streamInfo.bufferQueue_->producer_->SetQueueSize(8); // 8:set bufferQueue size 688094332d3Sopenharmony_ci streamInfos.push_back(streamInfo); 689094332d3Sopenharmony_ci if (cameraBase_->streamCustomerCapture_ == nullptr) { 690094332d3Sopenharmony_ci cameraBase_->streamCustomerCapture_ = std::make_shared<StreamCustomer>(); 691094332d3Sopenharmony_ci } 692094332d3Sopenharmony_ci StreamInfo streamInfoCapture = {}; 693094332d3Sopenharmony_ci streamInfoCapture.streamId_ = cameraBase_->STREAM_ID_CAPTURE; 694094332d3Sopenharmony_ci streamInfoCapture.width_ = 1280; // 1280:picture width 695094332d3Sopenharmony_ci streamInfoCapture.height_ = 720; // 720:picture height 696094332d3Sopenharmony_ci streamInfoCapture.format_ = PIXEL_FMT_RGBA_8888; 697094332d3Sopenharmony_ci streamInfoCapture.dataspace_ = 8; // 8:picture dataspace 698094332d3Sopenharmony_ci streamInfoCapture.intent_ = STILL_CAPTURE; 699094332d3Sopenharmony_ci streamInfoCapture.encodeType_ = ENCODE_TYPE_JPEG; 700094332d3Sopenharmony_ci streamInfoCapture.tunneledMode_ = 5; // 5:tunnel mode 701094332d3Sopenharmony_ci streamInfoCapture.bufferQueue_ = new BufferProducerSequenceable( 702094332d3Sopenharmony_ci cameraBase_->streamCustomerCapture_->CreateProducer()); 703094332d3Sopenharmony_ci ASSERT_NE(streamInfoCapture.bufferQueue_, nullptr); 704094332d3Sopenharmony_ci streamInfoCapture.bufferQueue_->producer_->SetQueueSize(8); // 8:set bufferQueue size 705094332d3Sopenharmony_ci streamInfos.push_back(streamInfoCapture); 706094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos); 707094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 708094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CommitStreams(NORMAL, cameraBase_->ability_); 709094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 710094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 711094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_CAPTURE, cameraBase_->CAPTURE_ID_CAPTURE, false, true); 712094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_CAPTURE}; 713094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_CAPTURE}; 714094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 715094332d3Sopenharmony_ci} 716094332d3Sopenharmony_ci 717094332d3Sopenharmony_ci/** 718094332d3Sopenharmony_ci * @tc.name: preview and capture 719094332d3Sopenharmony_ci * @tc.desc: Commit 2 streams together, Change the value OHOS_JPEG_ORIENTATION, isStreaming is true. 720094332d3Sopenharmony_ci * @tc.level: Level0 721094332d3Sopenharmony_ci * @tc.size: MediumTest 722094332d3Sopenharmony_ci * @tc.type: Function 723094332d3Sopenharmony_ci */ 724094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0024) 725094332d3Sopenharmony_ci{ 726094332d3Sopenharmony_ci // Get the device manager 727094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 728094332d3Sopenharmony_ci if (!g_usbCameraExit) { 729094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 730094332d3Sopenharmony_ci } 731094332d3Sopenharmony_ci // Get the stream manager 732094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 733094332d3Sopenharmony_ci std::vector<int32_t> jpegOrientationVector; 734094332d3Sopenharmony_ci jpegOrientationVector.push_back(OHOS_CAMERA_JPEG_ROTATION_270); 735094332d3Sopenharmony_ci cameraBase_->ability->updateEntry(OHOS_JPEG_ORIENTATION, jpegOrientationVector.data(), 736094332d3Sopenharmony_ci jpegOrientationVector.size()); 737094332d3Sopenharmony_ci cameraBase_->ability_.clear(); 738094332d3Sopenharmony_ci MetadataUtils::ConvertMetadataToVec(cameraBase_->ability, cameraBase_->ability_); 739094332d3Sopenharmony_ci // start stream 740094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW, STILL_CAPTURE}; 741094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 742094332d3Sopenharmony_ci 743094332d3Sopenharmony_ci // Get preview 744094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 745094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_CAPTURE, cameraBase_->CAPTURE_ID_CAPTURE, false, true); 746094332d3Sopenharmony_ci // release stream 747094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_CAPTURE}; 748094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_CAPTURE}; 749094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 750094332d3Sopenharmony_ci} 751094332d3Sopenharmony_ci 752094332d3Sopenharmony_ci/** 753094332d3Sopenharmony_ci * @tc.name: preview and capture 754094332d3Sopenharmony_ci * @tc.desc: Commit 2 streams together, Preview and still_capture streams, isStreaming is true. 755094332d3Sopenharmony_ci * @tc.level: Level0 756094332d3Sopenharmony_ci * @tc.size: MediumTest 757094332d3Sopenharmony_ci * @tc.type: Function 758094332d3Sopenharmony_ci */ 759094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0025) 760094332d3Sopenharmony_ci{ 761094332d3Sopenharmony_ci // Get the device manager 762094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 763094332d3Sopenharmony_ci if (!g_usbCameraExit) { 764094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 765094332d3Sopenharmony_ci } 766094332d3Sopenharmony_ci // Get the stream manager 767094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 768094332d3Sopenharmony_ci std::vector<int32_t> jpegQualityVector; 769094332d3Sopenharmony_ci jpegQualityVector.push_back(OHOS_CAMERA_JPEG_LEVEL_LOW); 770094332d3Sopenharmony_ci cameraBase_->ability->updateEntry(OHOS_JPEG_QUALITY, jpegQualityVector.data(), jpegQualityVector.size()); 771094332d3Sopenharmony_ci cameraBase_->ability_.clear(); 772094332d3Sopenharmony_ci MetadataUtils::ConvertMetadataToVec(cameraBase_->ability, cameraBase_->ability_); 773094332d3Sopenharmony_ci // start stream 774094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW, STILL_CAPTURE}; 775094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 776094332d3Sopenharmony_ci 777094332d3Sopenharmony_ci // Get preview 778094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 779094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_CAPTURE, cameraBase_->CAPTURE_ID_CAPTURE, false, true); 780094332d3Sopenharmony_ci // release stream 781094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_CAPTURE}; 782094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_CAPTURE}; 783094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 784094332d3Sopenharmony_ci} 785094332d3Sopenharmony_ci 786094332d3Sopenharmony_ci/** 787094332d3Sopenharmony_ci * @tc.name: Video 788094332d3Sopenharmony_ci * @tc.desc: Preview + video, commit together, success. 789094332d3Sopenharmony_ci * @tc.level: Level0 790094332d3Sopenharmony_ci * @tc.size: MediumTest 791094332d3Sopenharmony_ci * @tc.type: Function 792094332d3Sopenharmony_ci */ 793094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0026) 794094332d3Sopenharmony_ci{ 795094332d3Sopenharmony_ci // Get the device manager 796094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 797094332d3Sopenharmony_ci if (!g_usbCameraExit) { 798094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 799094332d3Sopenharmony_ci } 800094332d3Sopenharmony_ci // Create and get streamOperator information 801094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 802094332d3Sopenharmony_ci // start stream 803094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW, VIDEO}; 804094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 805094332d3Sopenharmony_ci // Get preview 806094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 807094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_VIDEO, cameraBase_->CAPTURE_ID_VIDEO, false, true); 808094332d3Sopenharmony_ci 809094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_VIDEO}; 810094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_VIDEO}; 811094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 812094332d3Sopenharmony_ci} 813094332d3Sopenharmony_ci 814094332d3Sopenharmony_ci/** 815094332d3Sopenharmony_ci * @tc.name: USB Camera 816094332d3Sopenharmony_ci * @tc.desc: Preview stream, width = 1280, height = 720, expected success. 817094332d3Sopenharmony_ci * @tc.level: Level0 818094332d3Sopenharmony_ci * @tc.size: MediumTest 819094332d3Sopenharmony_ci * @tc.type: Function 820094332d3Sopenharmony_ci */ 821094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0027) 822094332d3Sopenharmony_ci{ 823094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 824094332d3Sopenharmony_ci if (!g_usbCameraExit) { 825094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 826094332d3Sopenharmony_ci } 827094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 828094332d3Sopenharmony_ci if (cameraBase_->streamCustomerPreview_ == nullptr) { 829094332d3Sopenharmony_ci cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>(); 830094332d3Sopenharmony_ci } 831094332d3Sopenharmony_ci std::vector<StreamInfo> streamInfos; 832094332d3Sopenharmony_ci StreamInfo streamInfo = {}; 833094332d3Sopenharmony_ci streamInfo.streamId_ = cameraBase_->STREAM_ID_PREVIEW; 834094332d3Sopenharmony_ci streamInfo.width_ = 1280; // 1280:picture width 835094332d3Sopenharmony_ci streamInfo.height_ = 720; // 720:picture height 836094332d3Sopenharmony_ci streamInfo.format_ = PIXEL_FMT_RGBA_8888; 837094332d3Sopenharmony_ci streamInfo.dataspace_ = 8; // 8:picture dataspace 838094332d3Sopenharmony_ci streamInfo.intent_ = PREVIEW; 839094332d3Sopenharmony_ci streamInfo.tunneledMode_ = 5; // 5:tunnel mode 840094332d3Sopenharmony_ci streamInfo.bufferQueue_ = new BufferProducerSequenceable(cameraBase_->streamCustomerPreview_->CreateProducer()); 841094332d3Sopenharmony_ci ASSERT_NE(streamInfo.bufferQueue_, nullptr); 842094332d3Sopenharmony_ci streamInfo.bufferQueue_->producer_->SetQueueSize(8); // 8:set bufferQueue size 843094332d3Sopenharmony_ci streamInfos.push_back(streamInfo); 844094332d3Sopenharmony_ci if (cameraBase_->streamCustomerVideo_ == nullptr) { 845094332d3Sopenharmony_ci cameraBase_->streamCustomerVideo_ = std::make_shared<StreamCustomer>(); 846094332d3Sopenharmony_ci } 847094332d3Sopenharmony_ci StreamInfo streamInfoVideo = {}; 848094332d3Sopenharmony_ci streamInfoVideo.streamId_ = cameraBase_->STREAM_ID_VIDEO; 849094332d3Sopenharmony_ci streamInfoVideo.width_ = 1280; // 1280:picture width 850094332d3Sopenharmony_ci streamInfoVideo.height_ = 720; // 720:picture height 851094332d3Sopenharmony_ci streamInfoVideo.format_ = PIXEL_FMT_RGBA_8888; 852094332d3Sopenharmony_ci streamInfoVideo.dataspace_ = 8; // 8:picture dataspace 853094332d3Sopenharmony_ci streamInfoVideo.intent_ = VIDEO; 854094332d3Sopenharmony_ci streamInfoVideo.encodeType_ = ENCODE_TYPE_H264; 855094332d3Sopenharmony_ci streamInfoVideo.tunneledMode_ = 5; // 5:tunnel mode 856094332d3Sopenharmony_ci streamInfoVideo.bufferQueue_ = new BufferProducerSequenceable(cameraBase_->streamCustomerVideo_->CreateProducer()); 857094332d3Sopenharmony_ci ASSERT_NE(streamInfoVideo.bufferQueue_, nullptr); 858094332d3Sopenharmony_ci streamInfoVideo.bufferQueue_->producer_->SetQueueSize(8); // 8:set bufferQueue size 859094332d3Sopenharmony_ci streamInfos.push_back(streamInfoVideo); 860094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos); 861094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 862094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CommitStreams(NORMAL, cameraBase_->ability_); 863094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 864094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 865094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_VIDEO, cameraBase_->CAPTURE_ID_VIDEO, false, true); 866094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_VIDEO}; 867094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_VIDEO}; 868094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 869094332d3Sopenharmony_ci} 870094332d3Sopenharmony_ci 871094332d3Sopenharmony_ci/** 872094332d3Sopenharmony_ci * @tc.name: USB Camera 873094332d3Sopenharmony_ci * @tc.desc: UpdateSettings, fps. 874094332d3Sopenharmony_ci * @tc.level: Level0 875094332d3Sopenharmony_ci * @tc.size: MediumTest 876094332d3Sopenharmony_ci * @tc.type: Function 877094332d3Sopenharmony_ci */ 878094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0028) 879094332d3Sopenharmony_ci{ 880094332d3Sopenharmony_ci // Get the device manager 881094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 882094332d3Sopenharmony_ci if (!g_usbCameraExit) { 883094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 884094332d3Sopenharmony_ci } 885094332d3Sopenharmony_ci // get the stream manager 886094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 887094332d3Sopenharmony_ci 888094332d3Sopenharmony_ci // start stream 889094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW, VIDEO}; 890094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 891094332d3Sopenharmony_ci 892094332d3Sopenharmony_ci // updateSettings 893094332d3Sopenharmony_ci const uint32_t ITEM_CAPACITY = 100; 894094332d3Sopenharmony_ci const uint32_t DATA_CAPACITY = 2000; 895094332d3Sopenharmony_ci const int32_t FPS_VALUE = 10; 896094332d3Sopenharmony_ci std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>( 897094332d3Sopenharmony_ci ITEM_CAPACITY, DATA_CAPACITY); 898094332d3Sopenharmony_ci std::vector<int32_t> fpsRange; 899094332d3Sopenharmony_ci fpsRange.push_back(FPS_VALUE); 900094332d3Sopenharmony_ci fpsRange.push_back(FPS_VALUE); 901094332d3Sopenharmony_ci meta->addEntry(OHOS_CONTROL_FPS_RANGES, fpsRange.data(), fpsRange.size()); 902094332d3Sopenharmony_ci const int32_t DEVICE_STREAM_ID = 0; 903094332d3Sopenharmony_ci meta->addEntry(OHOS_CAMERA_STREAM_ID, &DEVICE_STREAM_ID, 1); 904094332d3Sopenharmony_ci std::vector<uint8_t> setting; 905094332d3Sopenharmony_ci MetadataUtils::ConvertMetadataToVec(meta, setting); 906094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->cameraDevice->UpdateSettings(setting); 907094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 908094332d3Sopenharmony_ci 909094332d3Sopenharmony_ci // get preview 910094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 911094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_VIDEO, cameraBase_->CAPTURE_ID_VIDEO, false, true); 912094332d3Sopenharmony_ci 913094332d3Sopenharmony_ci // release stream 914094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_VIDEO}; 915094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_VIDEO}; 916094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 917094332d3Sopenharmony_ci} 918094332d3Sopenharmony_ci 919094332d3Sopenharmony_ci/** 920094332d3Sopenharmony_ci * @tc.name: USB Camera 921094332d3Sopenharmony_ci * @tc.desc: Commit 3 streams together, Preview,Video and still_capture streams, isStreaming is true. 922094332d3Sopenharmony_ci * @tc.level: Level0 923094332d3Sopenharmony_ci * @tc.size: MediumTest 924094332d3Sopenharmony_ci * @tc.type: Function 925094332d3Sopenharmony_ci */ 926094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0029) 927094332d3Sopenharmony_ci{ 928094332d3Sopenharmony_ci // Get the device manager 929094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 930094332d3Sopenharmony_ci if (!g_usbCameraExit) { 931094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 932094332d3Sopenharmony_ci } 933094332d3Sopenharmony_ci // Get the stream manager 934094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 935094332d3Sopenharmony_ci // start stream 936094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW, STILL_CAPTURE, VIDEO}; 937094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 938094332d3Sopenharmony_ci // Get preview 939094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 940094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_CAPTURE, cameraBase_->CAPTURE_ID_CAPTURE, false, true); 941094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_VIDEO, cameraBase_->CAPTURE_ID_VIDEO, false, true); 942094332d3Sopenharmony_ci // release stream 943094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_CAPTURE, 944094332d3Sopenharmony_ci cameraBase_->CAPTURE_ID_VIDEO}; 945094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_CAPTURE, 946094332d3Sopenharmony_ci cameraBase_->STREAM_ID_VIDEO}; 947094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 948094332d3Sopenharmony_ci} 949094332d3Sopenharmony_ci 950094332d3Sopenharmony_ci/** 951094332d3Sopenharmony_ci * @tc.name: USB Camera 952094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_SENSOR_ORIENTATION 953094332d3Sopenharmony_ci * @tc.level: Level0 954094332d3Sopenharmony_ci * @tc.size: MediumTest 955094332d3Sopenharmony_ci * @tc.type: Function 956094332d3Sopenharmony_ci */ 957094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0030) 958094332d3Sopenharmony_ci{ 959094332d3Sopenharmony_ci if (!g_usbCameraExit) { 960094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 961094332d3Sopenharmony_ci } 962094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 963094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 964094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 965094332d3Sopenharmony_ci camera_metadata_item_t entry; 966094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_SENSOR_ORIENTATION, &entry); 967094332d3Sopenharmony_ci EXPECT_EQ(ret, CAM_META_SUCCESS); 968094332d3Sopenharmony_ci std::cout << "OHOS_SENSOR_ORIENTATION value is " << entry.data.i32[0] << std::endl; 969094332d3Sopenharmony_ci EXPECT_TRUE(entry.data.i32[0] == 0); 970094332d3Sopenharmony_ci} 971094332d3Sopenharmony_ci 972094332d3Sopenharmony_ci/** 973094332d3Sopenharmony_ci * @tc.name: USB Camera 974094332d3Sopenharmony_ci * @tc.desc: get value of OHOS_ABILITY_FOCAL_LENGTH 975094332d3Sopenharmony_ci * @tc.level: Level0 976094332d3Sopenharmony_ci * @tc.size: MediumTest 977094332d3Sopenharmony_ci * @tc.type: Function 978094332d3Sopenharmony_ci */ 979094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0031) 980094332d3Sopenharmony_ci{ 981094332d3Sopenharmony_ci if (!g_usbCameraExit) { 982094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 983094332d3Sopenharmony_ci } 984094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbility(); 985094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 986094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 987094332d3Sopenharmony_ci camera_metadata_item_t entry; 988094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_FOCAL_LENGTH, &entry); 989094332d3Sopenharmony_ci if (ret == CAM_META_SUCCESS) { 990094332d3Sopenharmony_ci std::cout << "log OHOS_ABILITY_FOCAL_LENGTH: count is " << (int)entry.count << std::endl; 991094332d3Sopenharmony_ci std::cout << "log focal length value: " << entry.data.f[0] << std::endl; 992094332d3Sopenharmony_ci } else if (ret == CAM_META_ITEM_NOT_FOUND) { 993094332d3Sopenharmony_ci std::cout << "log OHOS_ABILITY_FOCAL_LENGTH is not support" << std::endl; 994094332d3Sopenharmony_ci } 995094332d3Sopenharmony_ci} 996094332d3Sopenharmony_ci 997094332d3Sopenharmony_ci/** 998094332d3Sopenharmony_ci * @tc.name: USB Camera 999094332d3Sopenharmony_ci * @tc.desc: Commit 2 streams together, Preview and still_capture streams, isStreaming is true. 1000094332d3Sopenharmony_ci * @tc.level: Level0 1001094332d3Sopenharmony_ci * @tc.size: MediumTest 1002094332d3Sopenharmony_ci * @tc.type: Function 1003094332d3Sopenharmony_ci */ 1004094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0032) 1005094332d3Sopenharmony_ci{ 1006094332d3Sopenharmony_ci // Get the device manager 1007094332d3Sopenharmony_ci std::vector<std::string> usbCameraIds; 1008094332d3Sopenharmony_ci cameraBase_->cameraHost->GetCameraIds(usbCameraIds); 1009094332d3Sopenharmony_ci // 1:number of connected cameras 1010094332d3Sopenharmony_ci g_usbCameraExit = usbCameraIds.size() > 1; 1011094332d3Sopenharmony_ci for (int i = 0; i < usbCameraIds.size(); i++) { 1012094332d3Sopenharmony_ci if (!g_usbCameraExit) { 1013094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 1014094332d3Sopenharmony_ci } 1015094332d3Sopenharmony_ci cameraBase_->rc = cameraBase_->SelectOpenCamera(usbCameraIds[i]); 1016094332d3Sopenharmony_ci ASSERT_EQ(cameraBase_->rc, HDI::Camera::V1_0::NO_ERROR); 1017094332d3Sopenharmony_ci // Get the stream manager 1018094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 1019094332d3Sopenharmony_ci // start stream 1020094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW, STILL_CAPTURE}; 1021094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 1022094332d3Sopenharmony_ci // Get preview 1023094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 1024094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_CAPTURE, cameraBase_->CAPTURE_ID_CAPTURE, false, true); 1025094332d3Sopenharmony_ci // release stream 1026094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_CAPTURE}; 1027094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_CAPTURE}; 1028094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 1029094332d3Sopenharmony_ci } 1030094332d3Sopenharmony_ci} 1031094332d3Sopenharmony_ci 1032094332d3Sopenharmony_ci/** 1033094332d3Sopenharmony_ci * @tc.name: USB Camera 1034094332d3Sopenharmony_ci * @tc.desc: Open the capture stream for both cameras at the same time. 1035094332d3Sopenharmony_ci * @tc.level: Level0 1036094332d3Sopenharmony_ci * @tc.size: MediumTest 1037094332d3Sopenharmony_ci * @tc.type: Function 1038094332d3Sopenharmony_ci */ 1039094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0033) 1040094332d3Sopenharmony_ci{ 1041094332d3Sopenharmony_ci // Get the device manager 1042094332d3Sopenharmony_ci std::vector<std::string> usbCameraIds; 1043094332d3Sopenharmony_ci cameraBase_->cameraHost->GetCameraIds(usbCameraIds); 1044094332d3Sopenharmony_ci // 1:number of connected cameras 1045094332d3Sopenharmony_ci g_usbCameraExit = usbCameraIds.size() > 1; 1046094332d3Sopenharmony_ci for (int i = 0; i < usbCameraIds.size(); i++) { 1047094332d3Sopenharmony_ci if (!g_usbCameraExit) { 1048094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 1049094332d3Sopenharmony_ci } 1050094332d3Sopenharmony_ci cameraBase_->rc = cameraBase_->SelectOpenCamera(usbCameraIds[i]); 1051094332d3Sopenharmony_ci ASSERT_EQ(cameraBase_->rc, HDI::Camera::V1_0::NO_ERROR); 1052094332d3Sopenharmony_ci // Get the stream manager 1053094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 1054094332d3Sopenharmony_ci // start stream 1055094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW, STILL_CAPTURE, VIDEO}; 1056094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 1057094332d3Sopenharmony_ci // Get preview 1058094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 1059094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_CAPTURE, cameraBase_->CAPTURE_ID_CAPTURE, false, true); 1060094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_VIDEO, cameraBase_->CAPTURE_ID_VIDEO, false, true); 1061094332d3Sopenharmony_ci // release stream 1062094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_CAPTURE, 1063094332d3Sopenharmony_ci cameraBase_->CAPTURE_ID_VIDEO}; 1064094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_CAPTURE, 1065094332d3Sopenharmony_ci cameraBase_->STREAM_ID_VIDEO}; 1066094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 1067094332d3Sopenharmony_ci } 1068094332d3Sopenharmony_ci} 1069094332d3Sopenharmony_ci 1070094332d3Sopenharmony_ci/** 1071094332d3Sopenharmony_ci * @tc.name: USB Camera 1072094332d3Sopenharmony_ci * @tc.desc: One camera starts capturing and the other camera starts recording. 1073094332d3Sopenharmony_ci * @tc.level: Level0 1074094332d3Sopenharmony_ci * @tc.size: MediumTest 1075094332d3Sopenharmony_ci * @tc.type: Function 1076094332d3Sopenharmony_ci */ 1077094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0034) 1078094332d3Sopenharmony_ci{ 1079094332d3Sopenharmony_ci // Get the device manager 1080094332d3Sopenharmony_ci std::vector<std::string> usbCameraIds; 1081094332d3Sopenharmony_ci cameraBase_->cameraHost->GetCameraIds(usbCameraIds); 1082094332d3Sopenharmony_ci // 1:number of connected cameras 1083094332d3Sopenharmony_ci g_usbCameraExit = usbCameraIds.size() > 1; 1084094332d3Sopenharmony_ci if (!g_usbCameraExit) { 1085094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 1086094332d3Sopenharmony_ci } 1087094332d3Sopenharmony_ci cameraBase_->rc = cameraBase_->SelectOpenCamera(usbCameraIds[0]); 1088094332d3Sopenharmony_ci ASSERT_EQ(cameraBase_->rc, HDI::Camera::V1_0::NO_ERROR); 1089094332d3Sopenharmony_ci // Get the stream manager 1090094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 1091094332d3Sopenharmony_ci // start stream 1092094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW, STILL_CAPTURE}; 1093094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 1094094332d3Sopenharmony_ci // Get preview 1095094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 1096094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_CAPTURE, cameraBase_->CAPTURE_ID_CAPTURE, false, true); 1097094332d3Sopenharmony_ci // release stream 1098094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_CAPTURE}; 1099094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_CAPTURE}; 1100094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 1101094332d3Sopenharmony_ci 1102094332d3Sopenharmony_ci cameraBase_->rc = cameraBase_->SelectOpenCamera(usbCameraIds[1]); 1103094332d3Sopenharmony_ci ASSERT_EQ(cameraBase_->rc, HDI::Camera::V1_0::NO_ERROR); 1104094332d3Sopenharmony_ci // Get the stream manager 1105094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 1106094332d3Sopenharmony_ci // start stream 1107094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW, STILL_CAPTURE, VIDEO}; 1108094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 1109094332d3Sopenharmony_ci // Get preview 1110094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 1111094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_CAPTURE, cameraBase_->CAPTURE_ID_CAPTURE, false, true); 1112094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_VIDEO, cameraBase_->CAPTURE_ID_VIDEO, false, true); 1113094332d3Sopenharmony_ci // release stream 1114094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_CAPTURE, 1115094332d3Sopenharmony_ci cameraBase_->CAPTURE_ID_VIDEO}; 1116094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_CAPTURE, 1117094332d3Sopenharmony_ci cameraBase_->STREAM_ID_VIDEO}; 1118094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 1119094332d3Sopenharmony_ci} 1120094332d3Sopenharmony_ci 1121094332d3Sopenharmony_ci/** 1122094332d3Sopenharmony_ci * @tc.name: USB Camera 1123094332d3Sopenharmony_ci * @tc.desc: Plug in multiple USB cameras,get value of OHOS_ABILITY_ZOOM_RATIO_RANGE 1124094332d3Sopenharmony_ci * @tc.level: Level0 1125094332d3Sopenharmony_ci * @tc.size: MediumTest 1126094332d3Sopenharmony_ci * @tc.type: Function 1127094332d3Sopenharmony_ci */ 1128094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0035) 1129094332d3Sopenharmony_ci{ 1130094332d3Sopenharmony_ci // Get the device manager 1131094332d3Sopenharmony_ci std::vector<std::string> usbCameraIds; 1132094332d3Sopenharmony_ci cameraBase_->cameraHost->GetCameraIds(usbCameraIds); 1133094332d3Sopenharmony_ci // 1:number of connected cameras 1134094332d3Sopenharmony_ci g_usbCameraExit = usbCameraIds.size() > 1; 1135094332d3Sopenharmony_ci for (int i = 0; i < usbCameraIds.size(); i++) { 1136094332d3Sopenharmony_ci if (!g_usbCameraExit) { 1137094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 1138094332d3Sopenharmony_ci } 1139094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbilityById(usbCameraIds[i]); 1140094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 1141094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 1142094332d3Sopenharmony_ci camera_metadata_item_t entry; 1143094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_ZOOM_RATIO_RANGE, &entry); 1144094332d3Sopenharmony_ci if (ret == CAM_META_SUCCESS) { 1145094332d3Sopenharmony_ci CAMERA_LOGD("OHOS_ABILITY_ZOOM_RATIO_RANGE: count is %{public}d ", entry.count); 1146094332d3Sopenharmony_ci CAMERA_LOGD("Zoom ratio range: [%{public}d,[%{public}d]", entry.data.f[0], entry.data.f[1]); 1147094332d3Sopenharmony_ci } else if (ret == CAM_META_ITEM_NOT_FOUND) { 1148094332d3Sopenharmony_ci CAMERA_LOGD("OHOS_ABILITY_ZOOM_RATIO_RANGE is not support"); 1149094332d3Sopenharmony_ci } 1150094332d3Sopenharmony_ci } 1151094332d3Sopenharmony_ci} 1152094332d3Sopenharmony_ci 1153094332d3Sopenharmony_ci/** 1154094332d3Sopenharmony_ci * @tc.name: USB Camera 1155094332d3Sopenharmony_ci * @tc.desc: Plug in multiple USB cameras,get value of OHOS_ABILITY_FLASH_AVAILABLE 1156094332d3Sopenharmony_ci * @tc.level: Level0 1157094332d3Sopenharmony_ci * @tc.size: MediumTest 1158094332d3Sopenharmony_ci * @tc.type: Function 1159094332d3Sopenharmony_ci */ 1160094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0036) 1161094332d3Sopenharmony_ci{ 1162094332d3Sopenharmony_ci // Get the device manager 1163094332d3Sopenharmony_ci std::vector<std::string> usbCameraIds; 1164094332d3Sopenharmony_ci cameraBase_->cameraHost->GetCameraIds(usbCameraIds); 1165094332d3Sopenharmony_ci // 1:number of connected cameras 1166094332d3Sopenharmony_ci g_usbCameraExit = usbCameraIds.size() > 1; 1167094332d3Sopenharmony_ci for (int i = 0; i < usbCameraIds.size(); i++) { 1168094332d3Sopenharmony_ci if (!g_usbCameraExit) { 1169094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 1170094332d3Sopenharmony_ci } 1171094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbilityById(usbCameraIds[i]); 1172094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 1173094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 1174094332d3Sopenharmony_ci camera_metadata_item_t entry; 1175094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_FLASH_AVAILABLE, &entry); 1176094332d3Sopenharmony_ci EXPECT_EQ(ret, CAM_META_SUCCESS); 1177094332d3Sopenharmony_ci CAMERA_LOGD("OHOS_ABILITY_FLASH_AVAILABLE value is %{public}d", entry.data.u8[0]); 1178094332d3Sopenharmony_ci } 1179094332d3Sopenharmony_ci} 1180094332d3Sopenharmony_ci 1181094332d3Sopenharmony_ci/** 1182094332d3Sopenharmony_ci * @tc.name: USB Camera 1183094332d3Sopenharmony_ci * @tc.desc: Plug in multiple USB cameras,get value of OHOS_ABILITY_VIDEO_STABILIZATION_MODES 1184094332d3Sopenharmony_ci * @tc.level: Level0 1185094332d3Sopenharmony_ci * @tc.size: MediumTest 1186094332d3Sopenharmony_ci * @tc.type: Function 1187094332d3Sopenharmony_ci */ 1188094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0037) 1189094332d3Sopenharmony_ci{ 1190094332d3Sopenharmony_ci // Get the device manager 1191094332d3Sopenharmony_ci std::vector<std::string> usbCameraIds; 1192094332d3Sopenharmony_ci cameraBase_->cameraHost->GetCameraIds(usbCameraIds); 1193094332d3Sopenharmony_ci // 1:number of connected cameras 1194094332d3Sopenharmony_ci g_usbCameraExit = usbCameraIds.size() > 1; 1195094332d3Sopenharmony_ci for (int i = 0; i < usbCameraIds.size(); i++) { 1196094332d3Sopenharmony_ci if (!g_usbCameraExit) { 1197094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 1198094332d3Sopenharmony_ci } 1199094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbilityById(usbCameraIds[i]); 1200094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 1201094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 1202094332d3Sopenharmony_ci camera_metadata_item_t entry; 1203094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_VIDEO_STABILIZATION_MODES, &entry); 1204094332d3Sopenharmony_ci if (ret == CAM_META_SUCCESS) { 1205094332d3Sopenharmony_ci for (int i = 0; i < entry.count; i++) { 1206094332d3Sopenharmony_ci CAMERA_LOGD("OHOS_ABILITY_VIDEO_STABILIZATION_MODES value is %{public}d", entry.data.u8[i]); 1207094332d3Sopenharmony_ci } 1208094332d3Sopenharmony_ci } else if (ret == CAM_META_ITEM_NOT_FOUND) { 1209094332d3Sopenharmony_ci CAMERA_LOGD("OHOS_ABILITY_VIDEO_STABILIZATION_MODES is not support"); 1210094332d3Sopenharmony_ci } 1211094332d3Sopenharmony_ci } 1212094332d3Sopenharmony_ci} 1213094332d3Sopenharmony_ci 1214094332d3Sopenharmony_ci/** 1215094332d3Sopenharmony_ci * @tc.name: USB Camera 1216094332d3Sopenharmony_ci * @tc.desc: Plug in multiple USB cameras,get value of OHOS_ABILITY_FLASH_MODES 1217094332d3Sopenharmony_ci * @tc.level: Level0 1218094332d3Sopenharmony_ci * @tc.size: MediumTest 1219094332d3Sopenharmony_ci * @tc.type: Function 1220094332d3Sopenharmony_ci */ 1221094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0038) 1222094332d3Sopenharmony_ci{ 1223094332d3Sopenharmony_ci // Get the device manager 1224094332d3Sopenharmony_ci std::vector<std::string> usbCameraIds; 1225094332d3Sopenharmony_ci cameraBase_->cameraHost->GetCameraIds(usbCameraIds); 1226094332d3Sopenharmony_ci // 1:number of connected cameras 1227094332d3Sopenharmony_ci g_usbCameraExit = usbCameraIds.size() > 1; 1228094332d3Sopenharmony_ci for (int i = 0; i < usbCameraIds.size(); i++) { 1229094332d3Sopenharmony_ci if (!g_usbCameraExit) { 1230094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 1231094332d3Sopenharmony_ci } 1232094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbilityById(usbCameraIds[i]); 1233094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 1234094332d3Sopenharmony_ci camera_metadata_item_t entry; 1235094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_FLASH_MODES, &entry); 1236094332d3Sopenharmony_ci if (ret == CAM_META_SUCCESS) { 1237094332d3Sopenharmony_ci CAMERA_LOGD("supported flash mode list:"); 1238094332d3Sopenharmony_ci for (int i = 0; i < entry.count; i++) { 1239094332d3Sopenharmony_ci CAMERA_LOGD("%{public}d", entry.data.u8[i]); 1240094332d3Sopenharmony_ci } 1241094332d3Sopenharmony_ci } else if (ret == CAM_META_ITEM_NOT_FOUND) { 1242094332d3Sopenharmony_ci CAMERA_LOGD("OHOS_ABILITY_FLASH_MODES is not support"); 1243094332d3Sopenharmony_ci } 1244094332d3Sopenharmony_ci } 1245094332d3Sopenharmony_ci} 1246094332d3Sopenharmony_ci 1247094332d3Sopenharmony_ci/** 1248094332d3Sopenharmony_ci * @tc.name: USB Camera 1249094332d3Sopenharmony_ci * @tc.desc: Plug in multiple USB cameras,get value of OHOS_ABILITY_FOCUS_MODES 1250094332d3Sopenharmony_ci * @tc.level: Level0 1251094332d3Sopenharmony_ci * @tc.size: MediumTest 1252094332d3Sopenharmony_ci * @tc.type: Function 1253094332d3Sopenharmony_ci */ 1254094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0039) 1255094332d3Sopenharmony_ci{ 1256094332d3Sopenharmony_ci // Get the device manager 1257094332d3Sopenharmony_ci std::vector<std::string> usbCameraIds; 1258094332d3Sopenharmony_ci cameraBase_->cameraHost->GetCameraIds(usbCameraIds); 1259094332d3Sopenharmony_ci // 1:number of connected cameras 1260094332d3Sopenharmony_ci g_usbCameraExit = usbCameraIds.size() > 1; 1261094332d3Sopenharmony_ci for (int i = 0; i < usbCameraIds.size(); i++) { 1262094332d3Sopenharmony_ci if (!g_usbCameraExit) { 1263094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 1264094332d3Sopenharmony_ci } 1265094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbilityById(usbCameraIds[i]); 1266094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 1267094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 1268094332d3Sopenharmony_ci camera_metadata_item_t entry; 1269094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_FOCUS_MODES, &entry); 1270094332d3Sopenharmony_ci if (ret == CAM_META_SUCCESS) { 1271094332d3Sopenharmony_ci CAMERA_LOGD("supported flash mode list:"); 1272094332d3Sopenharmony_ci for (int i = 0; i < entry.count; i++) { 1273094332d3Sopenharmony_ci CAMERA_LOGD("%{public}d", entry.data.u8[i]); 1274094332d3Sopenharmony_ci } 1275094332d3Sopenharmony_ci } else if (ret == CAM_META_ITEM_NOT_FOUND) { 1276094332d3Sopenharmony_ci CAMERA_LOGD("OHOS_ABILITY_FOCUS_MODES is not support"); 1277094332d3Sopenharmony_ci } 1278094332d3Sopenharmony_ci } 1279094332d3Sopenharmony_ci} 1280094332d3Sopenharmony_ci 1281094332d3Sopenharmony_ci/** 1282094332d3Sopenharmony_ci * @tc.name: USB Camera 1283094332d3Sopenharmony_ci * @tc.desc: Plug in multiple USB cameras,get value of OHOS_ABILITY_EXPOSURE_MODES 1284094332d3Sopenharmony_ci * @tc.level: Level0 1285094332d3Sopenharmony_ci * @tc.size: MediumTest 1286094332d3Sopenharmony_ci * @tc.type: Function 1287094332d3Sopenharmony_ci */ 1288094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0040) 1289094332d3Sopenharmony_ci{ 1290094332d3Sopenharmony_ci // Get the device manager 1291094332d3Sopenharmony_ci std::vector<std::string> usbCameraIds; 1292094332d3Sopenharmony_ci cameraBase_->cameraHost->GetCameraIds(usbCameraIds); 1293094332d3Sopenharmony_ci // 1:number of connected cameras 1294094332d3Sopenharmony_ci g_usbCameraExit = usbCameraIds.size() > 1; 1295094332d3Sopenharmony_ci for (int i = 0; i < usbCameraIds.size(); i++) { 1296094332d3Sopenharmony_ci if (!g_usbCameraExit) { 1297094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 1298094332d3Sopenharmony_ci } 1299094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbilityById(usbCameraIds[i]); 1300094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 1301094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 1302094332d3Sopenharmony_ci camera_metadata_item_t entry; 1303094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_EXPOSURE_MODES, &entry); 1304094332d3Sopenharmony_ci if (ret == CAM_META_SUCCESS) { 1305094332d3Sopenharmony_ci CAMERA_LOGD("supported flash mode list:"); 1306094332d3Sopenharmony_ci for (int i = 0; i < entry.count; i++) { 1307094332d3Sopenharmony_ci CAMERA_LOGD("%{public}d ", entry.data.u8[i]); 1308094332d3Sopenharmony_ci } 1309094332d3Sopenharmony_ci } else if (ret == CAM_META_ITEM_NOT_FOUND) { 1310094332d3Sopenharmony_ci CAMERA_LOGD("OHOS_ABILITY_EXPOSURE_MODES is not support"); 1311094332d3Sopenharmony_ci } 1312094332d3Sopenharmony_ci } 1313094332d3Sopenharmony_ci} 1314094332d3Sopenharmony_ci 1315094332d3Sopenharmony_ci/** 1316094332d3Sopenharmony_ci * @tc.name: USB Camera 1317094332d3Sopenharmony_ci * @tc.desc: Plug in multiple USB cameras,get value of OHOS_CONTROL_CAPTURE_MIRROR_SUPPORTED 1318094332d3Sopenharmony_ci * @tc.level: Level0 1319094332d3Sopenharmony_ci * @tc.size: MediumTest 1320094332d3Sopenharmony_ci * @tc.type: Function 1321094332d3Sopenharmony_ci */ 1322094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0041) 1323094332d3Sopenharmony_ci{ 1324094332d3Sopenharmony_ci // Get the device manager 1325094332d3Sopenharmony_ci std::vector<std::string> usbCameraIds; 1326094332d3Sopenharmony_ci cameraBase_->cameraHost->GetCameraIds(usbCameraIds); 1327094332d3Sopenharmony_ci // 1:number of connected cameras 1328094332d3Sopenharmony_ci g_usbCameraExit = usbCameraIds.size() > 1; 1329094332d3Sopenharmony_ci for (int i = 0; i < usbCameraIds.size(); i++) { 1330094332d3Sopenharmony_ci if (!g_usbCameraExit) { 1331094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 1332094332d3Sopenharmony_ci } 1333094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbilityById(usbCameraIds[i]); 1334094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 1335094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 1336094332d3Sopenharmony_ci camera_metadata_item_t entry; 1337094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_CONTROL_CAPTURE_MIRROR_SUPPORTED, &entry); 1338094332d3Sopenharmony_ci EXPECT_EQ(ret, CAM_META_SUCCESS); 1339094332d3Sopenharmony_ci CAMERA_LOGD("capture mirror supported is :"); 1340094332d3Sopenharmony_ci for (int i = 0; i < entry.count; i++) { 1341094332d3Sopenharmony_ci CAMERA_LOGD("%{public}d", entry.data.u8[i]); 1342094332d3Sopenharmony_ci } 1343094332d3Sopenharmony_ci } 1344094332d3Sopenharmony_ci} 1345094332d3Sopenharmony_ci 1346094332d3Sopenharmony_ci/** 1347094332d3Sopenharmony_ci * @tc.name: USB Camera 1348094332d3Sopenharmony_ci * @tc.desc: Plug in multiple USB cameras,get value of OHOS_ABILITY_MUTE_MODES 1349094332d3Sopenharmony_ci * @tc.level: Level0 1350094332d3Sopenharmony_ci * @tc.size: MediumTest 1351094332d3Sopenharmony_ci * @tc.type: Function 1352094332d3Sopenharmony_ci */ 1353094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0042) 1354094332d3Sopenharmony_ci{ 1355094332d3Sopenharmony_ci // Get the device manager 1356094332d3Sopenharmony_ci std::vector<std::string> usbCameraIds; 1357094332d3Sopenharmony_ci cameraBase_->cameraHost->GetCameraIds(usbCameraIds); 1358094332d3Sopenharmony_ci // 1:number of connected cameras 1359094332d3Sopenharmony_ci g_usbCameraExit = usbCameraIds.size() > 1; 1360094332d3Sopenharmony_ci for (int i = 0; i < usbCameraIds.size(); i++) { 1361094332d3Sopenharmony_ci if (!g_usbCameraExit) { 1362094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 1363094332d3Sopenharmony_ci } 1364094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbilityById(usbCameraIds[i]); 1365094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 1366094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 1367094332d3Sopenharmony_ci camera_metadata_item_t entry; 1368094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_MUTE_MODES, &entry); 1369094332d3Sopenharmony_ci if (ret == CAM_META_SUCCESS) { 1370094332d3Sopenharmony_ci CAMERA_LOGD("supported flash mode list:"); 1371094332d3Sopenharmony_ci for (int i = 0; i < entry.count; i++) { 1372094332d3Sopenharmony_ci CAMERA_LOGD("%{public}d", entry.data.u8[i]); 1373094332d3Sopenharmony_ci } 1374094332d3Sopenharmony_ci } else if (ret == CAM_META_ITEM_NOT_FOUND) { 1375094332d3Sopenharmony_ci CAMERA_LOGD("OHOS_ABILITY_MUTE_MODES is not support"); 1376094332d3Sopenharmony_ci } 1377094332d3Sopenharmony_ci } 1378094332d3Sopenharmony_ci} 1379094332d3Sopenharmony_ci 1380094332d3Sopenharmony_ci/** 1381094332d3Sopenharmony_ci * @tc.name: USB Camera 1382094332d3Sopenharmony_ci * @tc.desc: Plug in multiple USB cameras,get value of OHOS_ABILITY_FPS_RANGES 1383094332d3Sopenharmony_ci * @tc.level: Level0 1384094332d3Sopenharmony_ci * @tc.size: MediumTest 1385094332d3Sopenharmony_ci * @tc.type: Function 1386094332d3Sopenharmony_ci */ 1387094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0043) 1388094332d3Sopenharmony_ci{ 1389094332d3Sopenharmony_ci // Get the device manager 1390094332d3Sopenharmony_ci std::vector<std::string> usbCameraIds; 1391094332d3Sopenharmony_ci cameraBase_->cameraHost->GetCameraIds(usbCameraIds); 1392094332d3Sopenharmony_ci // 1:number of connected cameras 1393094332d3Sopenharmony_ci g_usbCameraExit = usbCameraIds.size() > 1; 1394094332d3Sopenharmony_ci for (int i = 0; i < usbCameraIds.size(); i++) { 1395094332d3Sopenharmony_ci if (!g_usbCameraExit) { 1396094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 1397094332d3Sopenharmony_ci } 1398094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbilityById(usbCameraIds[i]); 1399094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 1400094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 1401094332d3Sopenharmony_ci camera_metadata_item_t entry; 1402094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_FPS_RANGES, &entry); 1403094332d3Sopenharmony_ci EXPECT_EQ(ret, CAM_META_SUCCESS); 1404094332d3Sopenharmony_ci CAMERA_LOGD("supported fps ranges list: [ %{public}d, %{public}d ]", entry.data.i32[0], entry.data.i32[1]); 1405094332d3Sopenharmony_ci } 1406094332d3Sopenharmony_ci} 1407094332d3Sopenharmony_ci 1408094332d3Sopenharmony_ci/** 1409094332d3Sopenharmony_ci * @tc.name: USB Camera 1410094332d3Sopenharmony_ci * @tc.desc: Plug in multiple USB cameras,get value of OHOS_JPEG_ORIENTATION 1411094332d3Sopenharmony_ci * @tc.level: Level0 1412094332d3Sopenharmony_ci * @tc.size: MediumTest 1413094332d3Sopenharmony_ci * @tc.type: Function 1414094332d3Sopenharmony_ci */ 1415094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0044) 1416094332d3Sopenharmony_ci{ 1417094332d3Sopenharmony_ci // Get the device manager 1418094332d3Sopenharmony_ci std::vector<std::string> usbCameraIds; 1419094332d3Sopenharmony_ci cameraBase_->cameraHost->GetCameraIds(usbCameraIds); 1420094332d3Sopenharmony_ci // 1:number of connected cameras 1421094332d3Sopenharmony_ci g_usbCameraExit = usbCameraIds.size() > 1; 1422094332d3Sopenharmony_ci for (int i = 0; i < usbCameraIds.size(); i++) { 1423094332d3Sopenharmony_ci if (!g_usbCameraExit) { 1424094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 1425094332d3Sopenharmony_ci } 1426094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbilityById(usbCameraIds[i]); 1427094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 1428094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 1429094332d3Sopenharmony_ci camera_metadata_item_t entry; 1430094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_JPEG_ORIENTATION, &entry); 1431094332d3Sopenharmony_ci EXPECT_EQ(ret, CAM_META_SUCCESS); 1432094332d3Sopenharmony_ci CAMERA_LOGD("OHOS_JPEG_ORIENTATION value is %{public}d", entry.data.i32[0]); 1433094332d3Sopenharmony_ci } 1434094332d3Sopenharmony_ci} 1435094332d3Sopenharmony_ci 1436094332d3Sopenharmony_ci/** 1437094332d3Sopenharmony_ci * @tc.name: USB Camera 1438094332d3Sopenharmony_ci * @tc.desc: Plug in multiple USB cameras,get value of OHOS_JPEG_QUALITY 1439094332d3Sopenharmony_ci * @tc.level: Level0 1440094332d3Sopenharmony_ci * @tc.size: MediumTest 1441094332d3Sopenharmony_ci * @tc.type: Function 1442094332d3Sopenharmony_ci */ 1443094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0045) 1444094332d3Sopenharmony_ci{ 1445094332d3Sopenharmony_ci // Get the device manager 1446094332d3Sopenharmony_ci std::vector<std::string> usbCameraIds; 1447094332d3Sopenharmony_ci cameraBase_->cameraHost->GetCameraIds(usbCameraIds); 1448094332d3Sopenharmony_ci // 1:number of connected cameras 1449094332d3Sopenharmony_ci g_usbCameraExit = usbCameraIds.size() > 1; 1450094332d3Sopenharmony_ci for (int i = 0; i < usbCameraIds.size(); i++) { 1451094332d3Sopenharmony_ci if (!g_usbCameraExit) { 1452094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 1453094332d3Sopenharmony_ci } 1454094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbilityById(usbCameraIds[i]); 1455094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 1456094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 1457094332d3Sopenharmony_ci camera_metadata_item_t entry; 1458094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_JPEG_QUALITY, &entry); 1459094332d3Sopenharmony_ci EXPECT_EQ(ret, CAM_META_SUCCESS); 1460094332d3Sopenharmony_ci CAMERA_LOGD("OHOS_JPEG_QUALITY value is %{public}d", entry.data.i32[0]); 1461094332d3Sopenharmony_ci } 1462094332d3Sopenharmony_ci} 1463094332d3Sopenharmony_ci 1464094332d3Sopenharmony_ci/** 1465094332d3Sopenharmony_ci * @tc.name: USB Camera 1466094332d3Sopenharmony_ci * @tc.desc: Plug in multiple USB cameras,get value of OHOS_ABILITY_STREAM_AVAILABLE_BASIC_CONFIGURATIONS 1467094332d3Sopenharmony_ci * @tc.level: Level0 1468094332d3Sopenharmony_ci * @tc.size: MediumTest 1469094332d3Sopenharmony_ci * @tc.type: Function 1470094332d3Sopenharmony_ci */ 1471094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0046) 1472094332d3Sopenharmony_ci{ 1473094332d3Sopenharmony_ci // Get the device manager 1474094332d3Sopenharmony_ci std::vector<std::string> usbCameraIds; 1475094332d3Sopenharmony_ci cameraBase_->cameraHost->GetCameraIds(usbCameraIds); 1476094332d3Sopenharmony_ci // 1:number of connected cameras 1477094332d3Sopenharmony_ci g_usbCameraExit = usbCameraIds.size() > 1; 1478094332d3Sopenharmony_ci for (int i = 0; i < usbCameraIds.size(); i++) { 1479094332d3Sopenharmony_ci if (!g_usbCameraExit) { 1480094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 1481094332d3Sopenharmony_ci } 1482094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbilityById(usbCameraIds[i]); 1483094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 1484094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 1485094332d3Sopenharmony_ci camera_metadata_item_t entry; 1486094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_STREAM_AVAILABLE_BASIC_CONFIGURATIONS, &entry); 1487094332d3Sopenharmony_ci EXPECT_EQ(ret, CAM_META_SUCCESS); 1488094332d3Sopenharmony_ci CAMERA_LOGD("OHOS_ABILITY_STREAM_AVAILABLE_BASIC_CONFIGURATIONS value is %{public}d", entry.data.u8[0]); 1489094332d3Sopenharmony_ci EXPECT_TRUE(entry.data.u8[0] == OHOS_CAMERA_FORMAT_RGBA_8888); 1490094332d3Sopenharmony_ci } 1491094332d3Sopenharmony_ci} 1492094332d3Sopenharmony_ci 1493094332d3Sopenharmony_ci/** 1494094332d3Sopenharmony_ci * @tc.name: USB Camera 1495094332d3Sopenharmony_ci * @tc.desc: Plug in multiple USB cameras,get value of OHOS_ABILITY_STREAM_AVAILABLE_EXTEND_CONFIGURATIONS 1496094332d3Sopenharmony_ci * @tc.level: Level0 1497094332d3Sopenharmony_ci * @tc.size: MediumTest 1498094332d3Sopenharmony_ci * @tc.type: Function 1499094332d3Sopenharmony_ci */ 1500094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0047) 1501094332d3Sopenharmony_ci{ 1502094332d3Sopenharmony_ci // Get the device manager 1503094332d3Sopenharmony_ci std::vector<std::string> usbCameraIds; 1504094332d3Sopenharmony_ci cameraBase_->cameraHost->GetCameraIds(usbCameraIds); 1505094332d3Sopenharmony_ci // 1:number of connected cameras 1506094332d3Sopenharmony_ci g_usbCameraExit = usbCameraIds.size() > 1; 1507094332d3Sopenharmony_ci for (int i = 0; i < usbCameraIds.size(); i++) { 1508094332d3Sopenharmony_ci if (!g_usbCameraExit) { 1509094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 1510094332d3Sopenharmony_ci } 1511094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbilityById(usbCameraIds[i]); 1512094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 1513094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 1514094332d3Sopenharmony_ci EXPECT_NE(data, nullptr); 1515094332d3Sopenharmony_ci camera_metadata_item_t entry; 1516094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_STREAM_AVAILABLE_EXTEND_CONFIGURATIONS, &entry); 1517094332d3Sopenharmony_ci if (ret == 0 && entry.data.i32 != nullptr && entry.count > 0) { 1518094332d3Sopenharmony_ci CAMERA_LOGD("print tag<OHOS_ABILITY_STREAM_AVAILABLE_EXTEND_CONFIGURATIONS> value start."); 1519094332d3Sopenharmony_ci const size_t STEP = 10; // print step 1520094332d3Sopenharmony_ci CAMERA_LOGD("count: %{public}s", entry.count); 1521094332d3Sopenharmony_ci for (size_t a = 0; a < entry.count; a++) { 1522094332d3Sopenharmony_ci CAMERA_LOGD("%{public}d", entry.data.i32[a]); 1523094332d3Sopenharmony_ci } 1524094332d3Sopenharmony_ci CAMERA_LOGE("print tag<OHOS_ABILITY_STREAM_AVAILABLE_EXTEND_CONFIGURATIONS> value end."); 1525094332d3Sopenharmony_ci } 1526094332d3Sopenharmony_ci } 1527094332d3Sopenharmony_ci} 1528094332d3Sopenharmony_ci 1529094332d3Sopenharmony_ci/** 1530094332d3Sopenharmony_ci * @tc.name: USB Camera 1531094332d3Sopenharmony_ci * @tc.desc: Plug in multiple USB cameras,get value of OHOS_ABILITY_FOCAL_LENGTH 1532094332d3Sopenharmony_ci * @tc.level: Level0 1533094332d3Sopenharmony_ci * @tc.size: MediumTest 1534094332d3Sopenharmony_ci * @tc.type: Function 1535094332d3Sopenharmony_ci */ 1536094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0048) 1537094332d3Sopenharmony_ci{ 1538094332d3Sopenharmony_ci // Get the device manager 1539094332d3Sopenharmony_ci std::vector<std::string> usbCameraIds; 1540094332d3Sopenharmony_ci cameraBase_->cameraHost->GetCameraIds(usbCameraIds); 1541094332d3Sopenharmony_ci // 1:number of connected cameras 1542094332d3Sopenharmony_ci g_usbCameraExit = usbCameraIds.size() > 1; 1543094332d3Sopenharmony_ci for (int i = 0; i < usbCameraIds.size(); i++) { 1544094332d3Sopenharmony_ci if (!g_usbCameraExit) { 1545094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 1546094332d3Sopenharmony_ci } 1547094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbilityById(usbCameraIds[i]); 1548094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 1549094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 1550094332d3Sopenharmony_ci camera_metadata_item_t entry; 1551094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_FOCAL_LENGTH, &entry); 1552094332d3Sopenharmony_ci if (ret == CAM_META_SUCCESS) { 1553094332d3Sopenharmony_ci CAMERA_LOGD("log OHOS_ABILITY_FOCAL_LENGTH: count is %{public}s", entry.count); 1554094332d3Sopenharmony_ci CAMERA_LOGD("log focal length value: %{pubilc}d", entry.data.f[0]); 1555094332d3Sopenharmony_ci } else if (ret == CAM_META_ITEM_NOT_FOUND) { 1556094332d3Sopenharmony_ci CAMERA_LOGD("log OHOS_ABILITY_FOCAL_LENGTH is not support"); 1557094332d3Sopenharmony_ci } 1558094332d3Sopenharmony_ci } 1559094332d3Sopenharmony_ci} 1560094332d3Sopenharmony_ci 1561094332d3Sopenharmony_ci/** 1562094332d3Sopenharmony_ci * @tc.name: USB Camera 1563094332d3Sopenharmony_ci * @tc.desc: Plug in multiple USB cameras,get value of OHOS_SENSOR_ORIENTATION 1564094332d3Sopenharmony_ci * @tc.level: Level0 1565094332d3Sopenharmony_ci * @tc.size: MediumTest 1566094332d3Sopenharmony_ci * @tc.type: Function 1567094332d3Sopenharmony_ci */ 1568094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0049) 1569094332d3Sopenharmony_ci{ 1570094332d3Sopenharmony_ci // Get the device manager 1571094332d3Sopenharmony_ci std::vector<std::string> usbCameraIds; 1572094332d3Sopenharmony_ci cameraBase_->cameraHost->GetCameraIds(usbCameraIds); 1573094332d3Sopenharmony_ci // 1:number of connected cameras 1574094332d3Sopenharmony_ci g_usbCameraExit = usbCameraIds.size() > 1; 1575094332d3Sopenharmony_ci for (int i = 0; i < usbCameraIds.size(); i++) { 1576094332d3Sopenharmony_ci if (!g_usbCameraExit) { 1577094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 1578094332d3Sopenharmony_ci } 1579094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbilityById(usbCameraIds[i]); 1580094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 1581094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 1582094332d3Sopenharmony_ci camera_metadata_item_t entry; 1583094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_SENSOR_ORIENTATION, &entry); 1584094332d3Sopenharmony_ci EXPECT_EQ(ret, CAM_META_SUCCESS); 1585094332d3Sopenharmony_ci CAMERA_LOGD("OHOS_SENSOR_ORIENTATION value is %{pubilc}d", entry.data.i32[0]); 1586094332d3Sopenharmony_ci EXPECT_TRUE(entry.data.i32[0] == 0); 1587094332d3Sopenharmony_ci } 1588094332d3Sopenharmony_ci} 1589094332d3Sopenharmony_ci 1590094332d3Sopenharmony_ci/** 1591094332d3Sopenharmony_ci * @tc.name: USB Camera 1592094332d3Sopenharmony_ci * @tc.desc: Plug in multiple USB cameras,get value of OHOS_CAMERA_TYPE_UNSPECIFIED 1593094332d3Sopenharmony_ci * @tc.level: Level0 1594094332d3Sopenharmony_ci * @tc.size: MediumTest 1595094332d3Sopenharmony_ci * @tc.type: Function 1596094332d3Sopenharmony_ci */ 1597094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0050) 1598094332d3Sopenharmony_ci{ 1599094332d3Sopenharmony_ci // Get the device manager 1600094332d3Sopenharmony_ci std::vector<std::string> usbCameraIds; 1601094332d3Sopenharmony_ci cameraBase_->cameraHost->GetCameraIds(usbCameraIds); 1602094332d3Sopenharmony_ci // 1:number of connected cameras 1603094332d3Sopenharmony_ci g_usbCameraExit = usbCameraIds.size() > 1; 1604094332d3Sopenharmony_ci for (int i = 0; i < usbCameraIds.size(); i++) { 1605094332d3Sopenharmony_ci if (!g_usbCameraExit) { 1606094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 1607094332d3Sopenharmony_ci } 1608094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbilityById(usbCameraIds[i]); 1609094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 1610094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 1611094332d3Sopenharmony_ci camera_metadata_item_t entry; 1612094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_CAMERA_TYPE, &entry); 1613094332d3Sopenharmony_ci EXPECT_EQ(ret, CAM_META_SUCCESS); 1614094332d3Sopenharmony_ci CAMERA_LOGD("OHOS_ABILITY_CAMERA_TYPE value is %{pubilc}d", entry.data.u8[0]); 1615094332d3Sopenharmony_ci EXPECT_TRUE(entry.data.u8[0] == OHOS_CAMERA_TYPE_UNSPECIFIED); 1616094332d3Sopenharmony_ci } 1617094332d3Sopenharmony_ci} 1618094332d3Sopenharmony_ci 1619094332d3Sopenharmony_ci/** 1620094332d3Sopenharmony_ci * @tc.name: USB Camera 1621094332d3Sopenharmony_ci * @tc.desc: Plug in multiple USB cameras,get value of OHOS_CAMERA_CONNECTION_TYPE_USB_PLUGIN 1622094332d3Sopenharmony_ci * @tc.level: Level0 1623094332d3Sopenharmony_ci * @tc.size: MediumTest 1624094332d3Sopenharmony_ci * @tc.type: Function 1625094332d3Sopenharmony_ci */ 1626094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0051) 1627094332d3Sopenharmony_ci{ 1628094332d3Sopenharmony_ci // Get the device manager 1629094332d3Sopenharmony_ci std::vector<std::string> usbCameraIds; 1630094332d3Sopenharmony_ci cameraBase_->cameraHost->GetCameraIds(usbCameraIds); 1631094332d3Sopenharmony_ci // 1:number of connected cameras 1632094332d3Sopenharmony_ci g_usbCameraExit = usbCameraIds.size() > 1; 1633094332d3Sopenharmony_ci for (int i = 0; i < usbCameraIds.size(); i++) { 1634094332d3Sopenharmony_ci if (!g_usbCameraExit) { 1635094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 1636094332d3Sopenharmony_ci } 1637094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbilityById(usbCameraIds[i]); 1638094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 1639094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 1640094332d3Sopenharmony_ci camera_metadata_item_t entry; 1641094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_CAMERA_CONNECTION_TYPE, &entry); 1642094332d3Sopenharmony_ci EXPECT_EQ(ret, CAM_META_SUCCESS); 1643094332d3Sopenharmony_ci CAMERA_LOGD("OHOS_ABILITY_CAMERA_CONNECTION_TYPE value is %{pubilc}d", entry.data.u8[0]); 1644094332d3Sopenharmony_ci EXPECT_TRUE(entry.data.u8[0] == OHOS_CAMERA_CONNECTION_TYPE_USB_PLUGIN); 1645094332d3Sopenharmony_ci } 1646094332d3Sopenharmony_ci} 1647094332d3Sopenharmony_ci 1648094332d3Sopenharmony_ci/** 1649094332d3Sopenharmony_ci * @tc.name: USB Camera 1650094332d3Sopenharmony_ci * @tc.desc: Plug in multiple USB cameras,get value of OHOS_ABILITY_CAMERA_POSITION 1651094332d3Sopenharmony_ci * @tc.level: Level0 1652094332d3Sopenharmony_ci * @tc.size: MediumTest 1653094332d3Sopenharmony_ci * @tc.type: Function 1654094332d3Sopenharmony_ci */ 1655094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0052) 1656094332d3Sopenharmony_ci{ 1657094332d3Sopenharmony_ci // Get the device manager 1658094332d3Sopenharmony_ci std::vector<std::string> usbCameraIds; 1659094332d3Sopenharmony_ci cameraBase_->cameraHost->GetCameraIds(usbCameraIds); 1660094332d3Sopenharmony_ci // 1:number of connected cameras 1661094332d3Sopenharmony_ci g_usbCameraExit = usbCameraIds.size() > 1; 1662094332d3Sopenharmony_ci for (int i = 0; i < usbCameraIds.size(); i++) { 1663094332d3Sopenharmony_ci if (!g_usbCameraExit) { 1664094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 1665094332d3Sopenharmony_ci } 1666094332d3Sopenharmony_ci ability_ = cameraBase_->GetCameraAbilityById(usbCameraIds[i]); 1667094332d3Sopenharmony_ci EXPECT_NE(ability_, nullptr); 1668094332d3Sopenharmony_ci common_metadata_header_t *data = ability_->get(); 1669094332d3Sopenharmony_ci camera_metadata_item_t entry; 1670094332d3Sopenharmony_ci int ret = FindCameraMetadataItem(data, OHOS_ABILITY_CAMERA_POSITION, &entry); 1671094332d3Sopenharmony_ci CAMERA_LOGD("OHOS_ABILITY_CAMERA_POSITION value is %{pubilc}d", entry.data.u8[0]); 1672094332d3Sopenharmony_ci EXPECT_TRUE(entry.data.u8[0] == OHOS_CAMERA_POSITION_FRONT); 1673094332d3Sopenharmony_ci } 1674094332d3Sopenharmony_ci} 1675094332d3Sopenharmony_ci 1676094332d3Sopenharmony_ci/** 1677094332d3Sopenharmony_ci * @tc.name: USB Camera 1678094332d3Sopenharmony_ci * @tc.desc: Commit 2 streams together, width = 1280, height = 720, expected success. 1679094332d3Sopenharmony_ci * @tc.level: Level0 1680094332d3Sopenharmony_ci * @tc.size: MediumTest 1681094332d3Sopenharmony_ci * @tc.type: Function 1682094332d3Sopenharmony_ci */ 1683094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0053) 1684094332d3Sopenharmony_ci{ 1685094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 1686094332d3Sopenharmony_ci if (!g_usbCameraExit) { 1687094332d3Sopenharmony_ci GTEST_SKIP() << "No usb camera plugged in" << std::endl; 1688094332d3Sopenharmony_ci } 1689094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 1690094332d3Sopenharmony_ci if (cameraBase_->streamCustomerPreview_ == nullptr) { 1691094332d3Sopenharmony_ci cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>(); 1692094332d3Sopenharmony_ci } 1693094332d3Sopenharmony_ci std::vector<StreamInfo> streamInfos; 1694094332d3Sopenharmony_ci StreamInfo streamInfo = {}; 1695094332d3Sopenharmony_ci streamInfo.streamId_ = cameraBase_->STREAM_ID_PREVIEW; 1696094332d3Sopenharmony_ci streamInfo.width_ = 1280; // 1280:picture width 1697094332d3Sopenharmony_ci streamInfo.height_ = 720; // 720:picture height 1698094332d3Sopenharmony_ci streamInfo.format_ = PIXEL_FMT_RGBA_8888; 1699094332d3Sopenharmony_ci streamInfo.dataspace_ = 8; // 8:picture dataspace 1700094332d3Sopenharmony_ci streamInfo.intent_ = PREVIEW; 1701094332d3Sopenharmony_ci streamInfo.tunneledMode_ = 5; // 5:tunnel mode 1702094332d3Sopenharmony_ci streamInfo.bufferQueue_ = new BufferProducerSequenceable(cameraBase_->streamCustomerPreview_->CreateProducer()); 1703094332d3Sopenharmony_ci ASSERT_NE(streamInfo.bufferQueue_, nullptr); 1704094332d3Sopenharmony_ci streamInfo.bufferQueue_->producer_->SetQueueSize(8); // 8:set bufferQueue size 1705094332d3Sopenharmony_ci streamInfos.push_back(streamInfo); 1706094332d3Sopenharmony_ci if (cameraBase_->streamCustomerCapture_ == nullptr) { 1707094332d3Sopenharmony_ci cameraBase_->streamCustomerCapture_ = std::make_shared<StreamCustomer>(); 1708094332d3Sopenharmony_ci } 1709094332d3Sopenharmony_ci StreamInfo streamInfoCapture = {}; 1710094332d3Sopenharmony_ci streamInfoCapture.streamId_ = cameraBase_->STREAM_ID_CAPTURE; 1711094332d3Sopenharmony_ci streamInfoCapture.width_ = 1280; // 1280:picture width 1712094332d3Sopenharmony_ci streamInfoCapture.height_ = 720; // 720:picture height 1713094332d3Sopenharmony_ci streamInfoCapture.format_ = PIXEL_FMT_RGBA_8888; 1714094332d3Sopenharmony_ci streamInfoCapture.dataspace_ = 8; // 8:picture dataspace 1715094332d3Sopenharmony_ci streamInfoCapture.intent_ = STILL_CAPTURE; 1716094332d3Sopenharmony_ci streamInfoCapture.encodeType_ = ENCODE_TYPE_JPEG; 1717094332d3Sopenharmony_ci streamInfoCapture.tunneledMode_ = 5; // 5:tunnel mode 1718094332d3Sopenharmony_ci streamInfoCapture.bufferQueue_ = new BufferProducerSequenceable( 1719094332d3Sopenharmony_ci cameraBase_->streamCustomerCapture_->CreateProducer()); 1720094332d3Sopenharmony_ci ASSERT_NE(streamInfoCapture.bufferQueue_, nullptr); 1721094332d3Sopenharmony_ci streamInfoCapture.bufferQueue_->producer_->SetQueueSize(8); // 8:set bufferQueue size 1722094332d3Sopenharmony_ci streamInfos.push_back(streamInfoCapture); 1723094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos); 1724094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 1725094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CommitStreams(NORMAL, cameraBase_->ability_); 1726094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 1727094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 1728094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_CAPTURE, cameraBase_->CAPTURE_ID_CAPTURE, false, true); 1729094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_CAPTURE}; 1730094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_CAPTURE}; 1731094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 1732094332d3Sopenharmony_ci} 1733094332d3Sopenharmony_ci 1734094332d3Sopenharmony_civoid StoreFile(const unsigned char *bufStart, const uint32_t size, const char* suffix) 1735094332d3Sopenharmony_ci{ 1736094332d3Sopenharmony_ci static int count = 0; 1737094332d3Sopenharmony_ci constexpr uint32_t pathLen = 128; 1738094332d3Sopenharmony_ci char path[pathLen] = {0}; 1739094332d3Sopenharmony_ci char prefix[] = "/data/"; 1740094332d3Sopenharmony_ci struct timeval start = {}; 1741094332d3Sopenharmony_ci gettimeofday(&start, nullptr); 1742094332d3Sopenharmony_ci std::cout << "suffix = " << suffix << std::endl; 1743094332d3Sopenharmony_ci if (sprintf_s(path, sizeof(path), "%sfile_%d_%lld_%s", prefix, count++, start.tv_usec, suffix) < 0) { 1744094332d3Sopenharmony_ci CAMERA_LOGE("%{public}s:StoreFile sprintf failed", __func__); 1745094332d3Sopenharmony_ci return; 1746094332d3Sopenharmony_ci } 1747094332d3Sopenharmony_ci int fd = open(path, O_RDWR | O_CREAT, 00766); // 00766:file operate permission 1748094332d3Sopenharmony_ci if (fd < 0) { 1749094332d3Sopenharmony_ci CAMERA_LOGE("demo test:StoreFile open %s %{public}s failed", path, strerror(errno)); 1750094332d3Sopenharmony_ci return; 1751094332d3Sopenharmony_ci } 1752094332d3Sopenharmony_ci int ret = write(fd, bufStart, size); 1753094332d3Sopenharmony_ci if (ret == -1) { 1754094332d3Sopenharmony_ci CAMERA_LOGE("demo test:StoreFile write video file error %{public}s.....\n", strerror(errno)); 1755094332d3Sopenharmony_ci } 1756094332d3Sopenharmony_ci CAMERA_LOGD("demo test:StoreFile size == %{public}d\n", size); 1757094332d3Sopenharmony_ci std::cout << "Strore File , Path = " << path << ", size = " << size << std::endl; 1758094332d3Sopenharmony_ci close(fd); 1759094332d3Sopenharmony_ci} 1760094332d3Sopenharmony_ci 1761094332d3Sopenharmony_ci/** 1762094332d3Sopenharmony_ci * @tc.name: USB Camera 1763094332d3Sopenharmony_ci * @tc.desc: single video stream, output nv21, expected success. 1764094332d3Sopenharmony_ci * @tc.level: Level0 1765094332d3Sopenharmony_ci * @tc.size: MediumTest 1766094332d3Sopenharmony_ci * @tc.type: Function 1767094332d3Sopenharmony_ci */ 1768094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0054) 1769094332d3Sopenharmony_ci{ 1770094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 1771094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 1772094332d3Sopenharmony_ci auto streamCustomerVideo = std::make_shared<StreamCustomer>(); 1773094332d3Sopenharmony_ci 1774094332d3Sopenharmony_ci uint32_t captureIdVideo = 1; 1775094332d3Sopenharmony_ci uint32_t streamIdVideo = 1; 1776094332d3Sopenharmony_ci std::vector<StreamInfo> streamInfos; 1777094332d3Sopenharmony_ci StreamInfo streamInfo = {}; 1778094332d3Sopenharmony_ci streamInfo.streamId_ = streamIdVideo; 1779094332d3Sopenharmony_ci streamInfo.width_ = 1280; // 1280:picture width 1780094332d3Sopenharmony_ci streamInfo.height_ = 720; // 720:picture height 1781094332d3Sopenharmony_ci streamInfo.format_ = PIXEL_FMT_YCRCB_420_SP; 1782094332d3Sopenharmony_ci streamInfo.encodeType_ = ENCODE_TYPE_NULL; 1783094332d3Sopenharmony_ci streamInfo.dataspace_ = 8; // 8:picture dataspace 1784094332d3Sopenharmony_ci streamInfo.intent_ = VIDEO; 1785094332d3Sopenharmony_ci streamInfo.tunneledMode_ = 5; // 5:tunnel mode 1786094332d3Sopenharmony_ci streamInfo.bufferQueue_ = new BufferProducerSequenceable(streamCustomerVideo->CreateProducer()); 1787094332d3Sopenharmony_ci ASSERT_NE(streamInfo.bufferQueue_, nullptr); 1788094332d3Sopenharmony_ci streamInfo.bufferQueue_->producer_->SetQueueSize(8); // 8:set bufferQueue size 1789094332d3Sopenharmony_ci streamInfos.push_back(streamInfo); 1790094332d3Sopenharmony_ci 1791094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos); 1792094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 1793094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CommitStreams(NORMAL, cameraBase_->ability_); 1794094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 1795094332d3Sopenharmony_ci 1796094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 1797094332d3Sopenharmony_ci streamCustomerVideo->ReceiveFrameOn([this](const unsigned char *addr, const uint32_t size) { 1798094332d3Sopenharmony_ci StoreFile(addr, size, "_single_video.yuv"); 1799094332d3Sopenharmony_ci }); 1800094332d3Sopenharmony_ci 1801094332d3Sopenharmony_ci CaptureInfo captureInfoVideo = { 1802094332d3Sopenharmony_ci .streamIds_ = {streamIdVideo}, 1803094332d3Sopenharmony_ci .captureSetting_ = cameraBase_->ability_, 1804094332d3Sopenharmony_ci .enableShutterCallback_ = false, 1805094332d3Sopenharmony_ci }; 1806094332d3Sopenharmony_ci std::cout << "start capture video" << std::endl; 1807094332d3Sopenharmony_ci CAMERA_LOGE("start capture video"); 1808094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->Capture(captureIdVideo, captureInfoVideo, true); 1809094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 1810094332d3Sopenharmony_ci sleep(1); 1811094332d3Sopenharmony_ci 1812094332d3Sopenharmony_ci std::cout << "cancel capture video" << std::endl; 1813094332d3Sopenharmony_ci CAMERA_LOGE("cancel capture video"); 1814094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CancelCapture(captureIdVideo); 1815094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 1816094332d3Sopenharmony_ci sleep(1); 1817094332d3Sopenharmony_ci 1818094332d3Sopenharmony_ci std::cout << "start capture video" << std::endl; 1819094332d3Sopenharmony_ci CAMERA_LOGE("start capture video"); 1820094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->Capture(captureIdVideo, captureInfoVideo, true); 1821094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 1822094332d3Sopenharmony_ci sleep(1); 1823094332d3Sopenharmony_ci 1824094332d3Sopenharmony_ci streamCustomerVideo->ReceiveFrameOff(); 1825094332d3Sopenharmony_ci 1826094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CancelCapture({captureIdVideo}); 1827094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 1828094332d3Sopenharmony_ci sleep(1); 1829094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->ReleaseStreams({streamIdVideo}); 1830094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 1831094332d3Sopenharmony_ci} 1832094332d3Sopenharmony_ci 1833094332d3Sopenharmony_ci/** 1834094332d3Sopenharmony_ci * @tc.name: USB Camera 1835094332d3Sopenharmony_ci * @tc.desc: single video stream, output jpeg, expected success. 1836094332d3Sopenharmony_ci * @tc.level: Level0 1837094332d3Sopenharmony_ci * @tc.size: MediumTest 1838094332d3Sopenharmony_ci * @tc.type: Function 1839094332d3Sopenharmony_ci */ 1840094332d3Sopenharmony_ciTEST_F(UtestUSBCameraTest, camera_usb_0055) 1841094332d3Sopenharmony_ci{ 1842094332d3Sopenharmony_ci cameraBase_->OpenUsbCamera(); 1843094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 1844094332d3Sopenharmony_ci auto streamCustomerVideo = std::make_shared<StreamCustomer>(); 1845094332d3Sopenharmony_ci 1846094332d3Sopenharmony_ci uint32_t captureIdVideo = 1; 1847094332d3Sopenharmony_ci uint32_t streamIdVideo = 1; 1848094332d3Sopenharmony_ci std::vector<StreamInfo> streamInfos; 1849094332d3Sopenharmony_ci StreamInfo streamInfo = {}; 1850094332d3Sopenharmony_ci streamInfo.streamId_ = streamIdVideo; 1851094332d3Sopenharmony_ci streamInfo.width_ = 1280; // 1280:picture width 1852094332d3Sopenharmony_ci streamInfo.height_ = 720; // 720:picture height 1853094332d3Sopenharmony_ci streamInfo.format_ = PIXEL_FMT_YCRCB_420_SP; 1854094332d3Sopenharmony_ci streamInfo.encodeType_ = ENCODE_TYPE_JPEG; 1855094332d3Sopenharmony_ci streamInfo.dataspace_ = 8; // 8:picture dataspace 1856094332d3Sopenharmony_ci streamInfo.intent_ = VIDEO; 1857094332d3Sopenharmony_ci streamInfo.tunneledMode_ = 5; // 5:tunnel mode 1858094332d3Sopenharmony_ci streamInfo.bufferQueue_ = new (std::nothrow) BufferProducerSequenceable(streamCustomerVideo->CreateProducer()); 1859094332d3Sopenharmony_ci ASSERT_NE(streamInfo.bufferQueue_, nullptr); 1860094332d3Sopenharmony_ci streamInfo.bufferQueue_->producer_->SetQueueSize(8); // 8:set bufferQueue size 1861094332d3Sopenharmony_ci streamInfos.push_back(streamInfo); 1862094332d3Sopenharmony_ci 1863094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos); 1864094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 1865094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CommitStreams(NORMAL, cameraBase_->ability_); 1866094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 1867094332d3Sopenharmony_ci 1868094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 1869094332d3Sopenharmony_ci streamCustomerVideo->ReceiveFrameOn([this](const unsigned char *addr, const uint32_t size) { 1870094332d3Sopenharmony_ci StoreFile(addr, size, "_single_video.jpeg"); 1871094332d3Sopenharmony_ci }); 1872094332d3Sopenharmony_ci 1873094332d3Sopenharmony_ci CaptureInfo captureInfoVideo = { 1874094332d3Sopenharmony_ci .streamIds_ = {streamIdVideo}, 1875094332d3Sopenharmony_ci .captureSetting_ = cameraBase_->ability_, 1876094332d3Sopenharmony_ci .enableShutterCallback_ = false, 1877094332d3Sopenharmony_ci }; 1878094332d3Sopenharmony_ci std::cout << "start capture video" << std::endl; 1879094332d3Sopenharmony_ci CAMERA_LOGE("start capture video"); 1880094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->Capture(captureIdVideo, captureInfoVideo, true); 1881094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 1882094332d3Sopenharmony_ci sleep(1); 1883094332d3Sopenharmony_ci 1884094332d3Sopenharmony_ci std::cout << "cancel capture video" << std::endl; 1885094332d3Sopenharmony_ci CAMERA_LOGE("cancel capture video"); 1886094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CancelCapture(captureIdVideo); 1887094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 1888094332d3Sopenharmony_ci sleep(1); 1889094332d3Sopenharmony_ci 1890094332d3Sopenharmony_ci std::cout << "start capture video" << std::endl; 1891094332d3Sopenharmony_ci CAMERA_LOGE("start capture video"); 1892094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->Capture(captureIdVideo, captureInfoVideo, true); 1893094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 1894094332d3Sopenharmony_ci sleep(1); 1895094332d3Sopenharmony_ci 1896094332d3Sopenharmony_ci streamCustomerVideo->ReceiveFrameOff(); 1897094332d3Sopenharmony_ci 1898094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CancelCapture({captureIdVideo}); 1899094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 1900094332d3Sopenharmony_ci sleep(1); 1901094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->ReleaseStreams({streamIdVideo}); 1902094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 1903094332d3Sopenharmony_ci}