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