• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file expected in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #include "camera_hdi_test_v1_2.h"
16 #include <functional>
17 
18 using namespace OHOS;
19 using namespace std;
20 using namespace testing::ext;
21 using namespace OHOS::Camera;
22 
23 constexpr uint32_t ITEM_CAPACITY = 100;
24 constexpr uint32_t DATA_CAPACITY = 2000;
25 constexpr uint32_t DATA_COUNT = 1;
26 std::vector<std::string> pendingImagesId = {"-1", "-2"};
SetUpTestCase(void)27 void CameraHdiTestV1_2::SetUpTestCase(void) {}
TearDownTestCase(void)28 void CameraHdiTestV1_2::TearDownTestCase(void) {}
SetUp(void)29 void CameraHdiTestV1_2::SetUp(void)
30 {
31     cameraTest = std::make_shared<OHOS::Camera::Test>();
32     cameraTest->Init(); // assert inside
33     cameraTest->Open(DEVICE_0); // assert inside
34 }
35 
TearDown(void)36 void CameraHdiTestV1_2::TearDown(void)
37 {
38     cameraTest->Close();
39 }
40 
TakePhoteWithDefferredImage(int PhotoCount)41 void CameraHdiTestV1_2::TakePhoteWithDefferredImage(int PhotoCount)
42 {
43     auto meta = std::make_shared<CameraSetting>(100, 100);
44     uint8_t value = OHOS::HDI::Camera::V1_2::STILL_IMAGE;
45     meta->addEntry(OHOS_CONTROL_DEFERRED_IMAGE_DELIVERY, &value, sizeof(value));
46     std::vector<uint8_t> metaVec;
47     MetadataUtils::ConvertMetadataToVec(meta, metaVec);
48     cameraTest->rc = cameraTest->cameraDevice->UpdateSettings(metaVec);
49     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
50 
51     // take photo
52     cameraTest->imageDataSaveSwitch = SWITCH_ON;
53     cameraTest->intents = {PREVIEW, STILL_CAPTURE};
54     cameraTest->StartStream(cameraTest->intents);
55     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
56     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
57     for (int i = 0; i < PhotoCount; i++) {
58         cameraTest->StartCapture(cameraTest->streamIdCapture, cameraTest->captureIdCapture, false, false);
59     }
60     cameraTest->captureIds = {cameraTest->captureIdPreview};
61     cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdCapture};
62     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
63 }
64 
RemovePendingImages()65 void CameraHdiTestV1_2::RemovePendingImages()
66 {
67     std::vector<std::string> pendingImages;
68     int ret = cameraTest->imageProcessSession_->GetPendingImages(pendingImages);
69     EXPECT_EQ(ret, 0);
70     if (pendingImages.size() != 0) {
71         for (auto imageId = pendingImages.begin(); imageId != pendingImages.end(); ++imageId) {
72             ret = cameraTest->imageProcessSession_->RemoveImage(*imageId);
73             EXPECT_EQ(ret, 0);
74         }
75     }
76 }
77 
78 /**
79  * @tc.name:SUB_Driver_Camera_DefferredImage_0200
80  * @tc.desc:ProcessPendingImages
81  * @tc.size:MediumTest
82  * @tc.type:Function
83 */
84 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_DefferredImage_0200, TestSize.Level1)
85 {
86     int ret = 0;
87     bool isImageProcessServiceExist = true;
88     bool isExit = cameraTest->IsTagValueExistsU8(cameraTest->ability,\
89         OHOS_ABILITY_DEFERRED_IMAGE_DELIVERY,\
90         OHOS::HDI::Camera::V1_2::STILL_IMAGE);
91     EXPECT_EQ(isExit, true);
92     // get DefferredImageTestInit
93     ret = cameraTest->DefferredImageTestInit();
94     EXPECT_EQ(ret, 0);
95     if (ret != 0) {
96         CAMERA_LOGE("DefferredImageTestInit Fail!!!");
97         printf("DefferredImageTestInit Fail!!!\r\n");
98         isImageProcessServiceExist = false;
99     }
100     // 如果存在未处理的图片,则删除未处理的图片
101     RemovePendingImages();
102     // take photo using deferred image delivery
103     TakePhoteWithDefferredImage(1);
104     // image deferred delivery process
105     ASSERT_EQ(isImageProcessServiceExist, true);
106     int taskCount = 0;
107     ret = cameraTest->imageProcessSession_->GetCoucurrency(OHOS::HDI::Camera::V1_2::HIGH_PREFORMANCE, taskCount);
108     EXPECT_EQ(ret, 0);
109     std::vector<std::string> pendingImages;
110     ret = cameraTest->imageProcessSession_->GetPendingImages(pendingImages);
111     EXPECT_EQ(ret, 0);
112     EXPECT_GE(taskCount, 1);
113 }
114 
ProcessPendingImages(int ret)115 void CameraHdiTestV1_2::ProcessPendingImages(int ret)
116 {
117     // image deferred delivery process
118     int taskCount = 0;
119     std::vector<std::string> pendingImages;
120     ret = cameraTest->imageProcessSession_->GetCoucurrency(OHOS::HDI::Camera::V1_2::BALANCED, taskCount);
121     EXPECT_EQ(ret, 0);
122     ret = cameraTest->imageProcessSession_->GetPendingImages(pendingImages);
123     EXPECT_EQ(ret, 0);
124     ret = cameraTest->imageProcessSession_->SetExecutionMode(OHOS::HDI::Camera::V1_2::BALANCED);
125     EXPECT_EQ(ret, 0);
126     ret = cameraTest->imageProcessSession_->SetExecutionMode(OHOS::HDI::Camera::V1_2::LOW_POWER);
127     EXPECT_EQ(ret, 0);
128     ret = cameraTest->imageProcessSession_->SetExecutionMode(OHOS::HDI::Camera::V1_2::HIGH_PREFORMANCE);
129     EXPECT_EQ(ret, 0);
130     // process the first image
131     ret = cameraTest->imageProcessSession_->ProcessImage(pendingImagesId[0]);
132     EXPECT_EQ(ret, 0);
133     // process the second image
134     ret = cameraTest->imageProcessSession_->ProcessImage(pendingImagesId[1]);
135     EXPECT_EQ(ret, 0);
136     // process the third image, and test the Interrupt, Reset, RemoveImage Interfaces
137     ret = cameraTest->imageProcessSession_->Interrupt();
138     EXPECT_EQ(ret, 0);
139     ret = cameraTest->imageProcessSession_->Reset();
140     EXPECT_EQ(ret, 0);
141     ret = cameraTest->imageProcessSession_->RemoveImage(pendingImagesId[0]);
142     EXPECT_EQ(ret, 0);
143 }
144 
145 /**
146  * @tc.name:SUB_Driver_Camera_DefferredImage_0300
147  * @tc.desc:ProcessPendingImages
148  * @tc.size:MediumTest
149  * @tc.type:Function
150 */
151 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_DefferredImage_0300, TestSize.Level1)
152 {
153     int ret = 0;
154     bool isImageProcessServiceExist = true;
155     bool isExit = cameraTest->IsTagValueExistsU8(cameraTest->ability,\
156         OHOS_ABILITY_DEFERRED_IMAGE_DELIVERY, OHOS::HDI::Camera::V1_2::STILL_IMAGE);
157     EXPECT_EQ(isExit, true);
158     // get DefferredImageTestInit
159     ret = cameraTest->DefferredImageTestInit();
160     EXPECT_EQ(ret, 0);
161     if (ret != 0) {
162         CAMERA_LOGE("DefferredImageTestInit Fail");
163         printf("DefferredImageTestInit Fail\r\n");
164         isImageProcessServiceExist = false;
165     }
166     // 如果存在未处理的图片,则删除未处理的图片
167     RemovePendingImages();
168     // take three photo using deferred image delivery, three times
169     TakePhoteWithDefferredImage(3);
170     ASSERT_EQ(isImageProcessServiceExist, true);
171     // 进行二段式处理拍照图片
172     ProcessPendingImages(ret);
173 }
174 
175 /**
176  * @tc.name: SUB_Driver_Camera_ScanMode_0100
177  * @tc.desc: CommitStreams_V1_1 for Scan code, preview and video
178  * @tc.size: MediumTest
179  * @tc.type: Function
180  */
181 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_ScanMode_0100, TestSize.Level1)
182 {
183     // Get Stream Operator
184     cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
185     cameraTest->rc = cameraTest->cameraDeviceV1_1->GetStreamOperator_V1_1(cameraTest->streamOperatorCallback,
186         cameraTest->streamOperator_V1_1);
187     EXPECT_NE(cameraTest->streamOperator_V1_1, nullptr);
188     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
189 
190     // preview streamInfo
191     cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
192     cameraTest->DefaultInfosPreview(cameraTest->streamInfoV1_1);
193     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
194 
195     // video streamInfo
196     cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
197     cameraTest->DefaultInfosVideo(cameraTest->streamInfoV1_1);
198     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
199 
200     // is streams supported V1_1
201     std::shared_ptr<CameraMetadata> modeSetting = std::make_shared<CameraMetadata>(2, 128);
202     int64_t expoTime = 0;
203     modeSetting->addEntry(OHOS_SENSOR_EXPOSURE_TIME, &expoTime, 1);
204     int64_t colorGains[4] = {0};
205     modeSetting->addEntry(OHOS_SENSOR_COLOR_CORRECTION_GAINS, &colorGains, 4);
206     std::vector<uint8_t> modeSettingVec;
207     MetadataUtils::ConvertMetadataToVec(modeSetting, modeSettingVec);
208     StreamSupportType pType;
209     cameraTest->rc = cameraTest->streamOperator_V1_1->IsStreamsSupported_V1_1(
210         static_cast<OHOS::HDI::Camera::V1_1::OperationMode_V1_1>(OHOS::HDI::Camera::V1_2::SCAN_CODE),
211         modeSettingVec, cameraTest->streamInfosV1_1, pType);
212     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
213 
214     // create and commitstreams
215     cameraTest->rc = cameraTest->streamOperator_V1_1->CreateStreams_V1_1(cameraTest->streamInfosV1_1);
216     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
217     cameraTest->rc = cameraTest->streamOperator_V1_1->CommitStreams_V1_1(
218         static_cast<OHOS::HDI::Camera::V1_1::OperationMode_V1_1>(OHOS::HDI::Camera::V1_2::SCAN_CODE),
219         cameraTest->abilityVec);
220     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
221     sleep(UT_SECOND_TIMES);
222 
223     // start capture
224     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
225     cameraTest->StartCapture(cameraTest->streamIdVideo, cameraTest->captureIdVideo, false, true);
226     sleep(UT_SECOND_TIMES);
227 
228     // stop stream
229     cameraTest->captureIds = {cameraTest->captureIdPreview, cameraTest->captureIdVideo};
230     cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdVideo};
231     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
232 }
233 
234 /**
235  * @tc.name: SUB_Driver_Camera_XMAGE_0200
236  * @tc.desc: UpdateSettings:CAMERA_CUSTOM_COLOR_BRIGHT
237  * @tc.size: MediumTest
238  * @tc.type: Function
239  */
240 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_XMAGE_0200, TestSize.Level1)
241 {
242     // Start Xmage control setting and verify
243     std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(100, 200);
244     uint8_t xmageMode = CAMERA_CUSTOM_COLOR_BRIGHT;
245     meta->addEntry(OHOS_CONTROL_SUPPORTED_COLOR_MODES, &xmageMode, 1);
246     std::vector<uint8_t> metaVec;
247     MetadataUtils::ConvertMetadataToVec(meta, metaVec);
248     cameraTest->cameraDevice->UpdateSettings(metaVec);
249     cameraTest->intents = {PREVIEW, STILL_CAPTURE};
250     cameraTest->StartStream(cameraTest->intents);
251     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
252     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
253     sleep(1);
254     cameraTest->StartCapture(cameraTest->streamIdCapture, cameraTest->captureIdCapture, false, false);
255     cameraTest->captureIds = {cameraTest->captureIdPreview};
256     cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdCapture};
257     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
258 }
259 
260 /**
261  * @tc.name: SUB_Driver_Camera_XMAGE_0300
262  * @tc.desc: UpdateSettings:CAMERA_CUSTOM_COLOR_NORMAL
263  * @tc.size: MediumTest
264  * @tc.type: Function
265  */
266 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_XMAGE_0300, TestSize.Level1)
267 {
268     // Start Xmage control setting and verify
269     std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(100, 200);
270     uint8_t xmageMode = 100;
271     meta->addEntry(OHOS_CONTROL_SUPPORTED_COLOR_MODES, &xmageMode, 1);
272     std::vector<uint8_t> metaVec;
273     MetadataUtils::ConvertMetadataToVec(meta, metaVec);
274     cameraTest->cameraDevice->UpdateSettings(metaVec);
275     cameraTest->intents = {PREVIEW, STILL_CAPTURE};
276     cameraTest->StartStream(cameraTest->intents);
277     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
278 }
279 
280 #define TODEFINESTRING(x) #x
281 
TranslateXMageAbilityToString(camera_xmage_color_type mode)282 static std::string TranslateXMageAbilityToString(camera_xmage_color_type mode)
283 {
284     std::string res;
285     switch (mode) {
286         case CAMERA_CUSTOM_COLOR_NORMAL:
287         {
288             res = TODEFINESTRING(CAMERA_CUSTOM_COLOR_NORMAL);
289             break;
290         }
291         case CAMERA_CUSTOM_COLOR_BRIGHT:
292         {
293             res = TODEFINESTRING(CAMERA_CUSTOM_COLOR_BRIGHT);
294             break;
295         }
296         case CAMERA_CUSTOM_COLOR_SOFT:
297         {
298             res = TODEFINESTRING(CAMERA_CUSTOM_COLOR_SOFT);
299             break;
300         }
301         default:
302             break;
303     }
304     return res;
305 }
306 
307 /**
308  * @tc.name: SUB_Driver_Camera_XMAGE_0400
309  * @tc.desc: OHOS_CONTROL_SUPPORTED_COLOR_MODES,all value
310  * @tc.size: MediumTest
311  * @tc.type: Function
312  */
313 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_XMAGE_0400, TestSize.Level1)
314 {
315     // Start Xmage control setting and verify
316     common_metadata_header_t* data = cameraTest->ability->get();
317     EXPECT_NE(data, nullptr);
318     camera_metadata_item_t entry;
319     int ret = FindCameraMetadataItem(data, OHOS_ABILITY_SUPPORTED_COLOR_MODES, &entry);
320     std::vector<uint8_t> xmageAbilities;
321     // 查询支持的Xmage所有模式
322     if (ret == 0) {
323         EXPECT_TRUE(entry.data.u8 != nullptr);
324         EXPECT_NE(entry.count, 0);
325 
326         for (uint32_t i = 0; i < entry.count; ++i) {
327             // 打印并保存当前相机所支持的xmage能力
328             CAMERA_LOGI("Current camera xmage ability %{public}s supported!",
329                 TranslateXMageAbilityToString(static_cast<camera_xmage_color_type>(entry.data.u8[i])).c_str());
330 
331             xmageAbilities.push_back(entry.data.u8[i]);
332         }
333     } else {
334         CAMERA_LOGI("XMage not supported");
335     }
336     CAMERA_LOGI("%{public}lu xmage abilities supported",
337                           static_cast<unsigned long>(xmageAbilities.size()));
338     for (uint32_t i = 0; i < xmageAbilities.size(); ++i) {
339         std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(100, 200);
340         // UpdateSettings mode
341         uint8_t xmageMode = xmageAbilities[i];
342         meta->addEntry(OHOS_CONTROL_SUPPORTED_COLOR_MODES, &xmageMode, 1);
343         std::vector<uint8_t> metaVec;
344         MetadataUtils::ConvertMetadataToVec(meta, metaVec);
345         cameraTest->cameraDevice->UpdateSettings(metaVec);
346         CAMERA_LOGI("Now current camera xmage ability is %{public}s !",
347                 TranslateXMageAbilityToString(static_cast<camera_xmage_color_type>(xmageMode)).c_str());
348         cameraTest->intents = {PREVIEW, STILL_CAPTURE, VIDEO};
349         cameraTest->StartStream(cameraTest->intents);
350         cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
351         cameraTest->StartCapture(cameraTest->streamIdCapture, cameraTest->captureIdCapture, false, true);
352         cameraTest->StartCapture(cameraTest->streamIdVideo, cameraTest->captureIdVideo, false, true);
353         cameraTest->captureIds = {cameraTest->captureIdPreview, cameraTest->captureIdCapture,
354                                                                         cameraTest->captureIdVideo};
355         cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdCapture, cameraTest->streamIdVideo};
356         cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
357     }
358 }
359 
TakePhotoWithTags(std::shared_ptr<OHOS::Camera::CameraSetting> metaDate)360 void CameraHdiTestV1_2::TakePhotoWithTags(std::shared_ptr<OHOS::Camera::CameraSetting> metaDate)
361 {
362     std::vector<uint8_t> metaVec;
363     MetadataUtils::ConvertMetadataToVec(metaDate, metaVec);
364     cameraTest->intents = {PREVIEW, STILL_CAPTURE};
365     cameraTest->StartStream(cameraTest->intents);
366     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
367     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
368     sleep(1);
369     cameraTest->StartCapture(cameraTest->streamIdCapture, cameraTest->captureIdCapture, false, false);
370     cameraTest->captureIds = {cameraTest->captureIdPreview};
371     cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdCapture};
372     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
373 }
374 
375 /**
376  * @tc.name:SUB_Driver_Camera_Stabilization_0200
377  * @tc.desc:OHOS_CAMERA_VIDEO_STABILIZATION_OFF
378  * @tc.size:MediumTest
379  * @tc.type:Function
380 */
381 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_Stabilization_0200, TestSize.Level1)
382 {
383     //start stream
384     cameraTest->intents = {PREVIEW, VIDEO};
385     cameraTest->StartStream(cameraTest->intents);
386     //updateSettings
387     std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY, DATA_CAPACITY);
388     uint8_t videoStabiliMode = OHOS_CAMERA_VIDEO_STABILIZATION_OFF;
389     meta->addEntry(OHOS_CONTROL_VIDEO_STABILIZATION_MODE, &videoStabiliMode, DATA_COUNT);
390     const int32_t deviceStreamId = cameraTest->streamIdPreview;
391     meta->addEntry(OHOS_CAMERA_STREAM_ID, &deviceStreamId, DATA_COUNT);
392     std::vector<uint8_t> setting;
393     MetadataUtils::ConvertMetadataToVec(meta, setting);
394     cameraTest->rc = (CamRetCode)cameraTest->cameraDevice->UpdateSettings(setting);
395     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
396     //get preview capture and video
397     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
398     cameraTest->StartCapture(cameraTest->streamIdVideo, cameraTest->captureIdVideo, false, true);
399     //release stream
400     cameraTest->captureIds = {cameraTest->captureIdPreview, cameraTest->captureIdVideo};
401     cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdVideo};
402     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
403 }
404 
405 /**
406  * @tc.name:SUB_Driver_Camera_Stabilization_0300
407  * @tc.desc:OHOS_CAMERA_VIDEO_STABILIZATION_AUTO
408  * @tc.size:MediumTest
409  * @tc.type:Function
410 */
411 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_Stabilization_0300, TestSize.Level1)
412 {
413     //start stream
414     cameraTest->intents = {PREVIEW, VIDEO};
415     cameraTest->StartStream(cameraTest->intents);
416 
417     //updateSettings
418     std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY, DATA_CAPACITY);
419     uint8_t videoStabiliMode = OHOS_CAMERA_VIDEO_STABILIZATION_AUTO;
420     meta->addEntry(OHOS_CONTROL_VIDEO_STABILIZATION_MODE, &videoStabiliMode, DATA_COUNT);
421     const int32_t deviceStreamId = cameraTest->streamIdPreview;
422     meta->addEntry(OHOS_CAMERA_STREAM_ID, &deviceStreamId, DATA_COUNT);
423     std::vector<uint8_t> setting;
424     MetadataUtils::ConvertMetadataToVec(meta, setting);
425     cameraTest->rc = (CamRetCode)cameraTest->cameraDevice->UpdateSettings(setting);
426     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
427 
428     //get preview capture and video
429     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
430     cameraTest->StartCapture(cameraTest->streamIdVideo, cameraTest->captureIdVideo, false, true);
431 
432     //release stream
433     cameraTest->captureIds = {cameraTest->captureIdPreview, cameraTest->captureIdVideo};
434     cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdVideo};
435     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
436 }
437 
CaptureByColorSpaces(std::vector<int32_t> captureColorSpaces,std::shared_ptr<OHOS::Camera::Test> cameraTest)438 void CaptureByColorSpaces(std::vector<int32_t> captureColorSpaces, std::shared_ptr<OHOS::Camera::Test> cameraTest)
439 {
440     if (!captureColorSpaces.empty()) {
441         for (int32_t colorSpaces : captureColorSpaces) {
442             printf("capture colorSpaces value %d\n", colorSpaces);
443             // preview streamInfo
444             cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
445             cameraTest->DefaultInfosPreview(cameraTest->streamInfoV1_1);
446             cameraTest->streamInfoV1_1->v1_0.dataspace_ = colorSpaces;
447             cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
448             // capture streamInfo
449             cameraTest->streamInfoCapture = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
450             cameraTest->DefaultInfosCapture(cameraTest->streamInfoCapture);
451             cameraTest->streamInfoCapture->v1_0.dataspace_ = colorSpaces;
452             cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoCapture);
453             cameraTest->rc = cameraTest->streamOperator_V1_1->CreateStreams_V1_1(cameraTest->streamInfosV1_1);
454             EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
455             cameraTest->rc = cameraTest->streamOperator_V1_1->CommitStreams(
456                 OperationMode::NORMAL, cameraTest->abilityVec);
457             EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
458             sleep(UT_SECOND_TIMES);
459             cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
460             cameraTest->StartCapture(cameraTest->streamIdCapture, cameraTest->captureIdCapture, false, false);
461             cameraTest->captureIds = {cameraTest->captureIdPreview};
462             cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdCapture};
463             cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
464             cameraTest->streamInfosV1_1.clear();
465         }
466     }
467 }
468 
VideoByColorSpaces(std::vector<int32_t> videoColorSpaces,std::shared_ptr<OHOS::Camera::Test> cameraTest)469 void VideoByColorSpaces(std::vector<int32_t> videoColorSpaces, std::shared_ptr<OHOS::Camera::Test> cameraTest)
470 {
471     if (!videoColorSpaces.empty()) {
472         for (int32_t colorSpaces : videoColorSpaces) {
473             printf("video colorSpaces value %d\n", colorSpaces);
474             // preview streamInfo
475             cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
476             cameraTest->DefaultInfosPreview(cameraTest->streamInfoV1_1);
477             cameraTest->streamInfoV1_1->v1_0.dataspace_ = colorSpaces;
478             if (colorSpaces == OHOS_CAMERA_BT2020_HLG_FULL) {
479                 cameraTest->streamInfoV1_1->v1_0.format_ = OHOS_CAMERA_FORMAT_YCBCR_P010;
480             }
481             cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
482             // video streamInfo
483             cameraTest->streamInfoVideo = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
484             cameraTest->DefaultInfosVideo(cameraTest->streamInfoVideo);
485             cameraTest->streamInfoVideo->v1_0.dataspace_ = colorSpaces;
486             if (colorSpaces == OHOS_CAMERA_BT2020_HLG_FULL) {
487                 cameraTest->streamInfoVideo->v1_0.format_ = OHOS_CAMERA_FORMAT_YCBCR_P010;
488             }
489             cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoVideo);
490             cameraTest->rc = cameraTest->streamOperator_V1_1->CreateStreams_V1_1(cameraTest->streamInfosV1_1);
491             EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
492             cameraTest->rc = cameraTest->streamOperator_V1_1->CommitStreams(
493                 OperationMode::NORMAL, cameraTest->abilityVec);
494             EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
495             sleep(UT_SECOND_TIMES);
496             cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
497             cameraTest->StartCapture(cameraTest->streamIdVideo, cameraTest->captureIdVideo, false, true);
498             cameraTest->captureIds = {cameraTest->captureIdPreview, cameraTest->captureIdVideo};
499             cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdVideo};
500             cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
501             cameraTest->streamInfosV1_1.clear();
502         }
503     }
504 }
505 
SuperStubByColorSpaces(std::vector<int32_t> superStubColorSpaces,std::shared_ptr<OHOS::Camera::Test> cameraTest)506 void SuperStubByColorSpaces(std::vector<int32_t> superStubColorSpaces, std::shared_ptr<OHOS::Camera::Test> cameraTest)
507 {
508     if (!superStubColorSpaces.empty()) {
509         for (int32_t colorSpaces : superStubColorSpaces) {
510             printf("superStubColorSpaces colorSpaces value %d\n", colorSpaces);
511             // preview streamInfo
512             cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
513             cameraTest->DefaultInfosPreview(cameraTest->streamInfoV1_1);
514             cameraTest->streamInfoV1_1->v1_0.dataspace_ = colorSpaces;
515             if (colorSpaces == OHOS_CAMERA_BT2020_HLG_FULL) {
516                 cameraTest->streamInfoV1_1->v1_0.format_ = OHOS_CAMERA_FORMAT_YCBCR_P010;
517             }
518             cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
519             // video streamInfo
520             cameraTest->streamInfoVideo = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
521             cameraTest->DefaultInfosVideo(cameraTest->streamInfoVideo);
522             cameraTest->streamInfoVideo->v1_0.dataspace_ = colorSpaces;
523             if (colorSpaces == OHOS_CAMERA_BT2020_HLG_FULL) {
524                 cameraTest->streamInfoVideo->v1_0.format_ = OHOS_CAMERA_FORMAT_YCBCR_P010;
525             }
526             cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoVideo);
527             cameraTest->rc = cameraTest->streamOperator_V1_1->CreateStreams_V1_1(cameraTest->streamInfosV1_1);
528             EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
529             cameraTest->rc = cameraTest->streamOperator_V1_1->CommitStreams_V1_1(
530                 static_cast<OHOS::HDI::Camera::V1_1::OperationMode_V1_1>(OHOS::HDI::Camera::V1_2::SUPER_STAB),
531                 cameraTest->abilityVec);
532             EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
533             sleep(UT_SECOND_TIMES);
534             cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
535             cameraTest->StartCapture(cameraTest->streamIdVideo, cameraTest->captureIdVideo, false, true);
536             cameraTest->captureIds = {cameraTest->captureIdPreview, cameraTest->captureIdVideo};
537             cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdVideo};
538             cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
539             cameraTest->streamInfosV1_1.clear();
540         }
541     }
542 }
543 
544 /**
545  * @tc.name:SUB_Driver_Camera_Colorspace_0200
546  * @tc.desc: Update macro ability setting and check the callback
547  * @tc.size:MediumTest
548  * @tc.type:Function
549 */
550 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_Colorspace_0200, TestSize.Level1)
551 {
552     cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
553     cameraTest->rc = cameraTest->cameraDeviceV1_1->GetStreamOperator_V1_1(
554         cameraTest->streamOperatorCallback, cameraTest->streamOperator_V1_1);
555     EXPECT_NE(cameraTest->streamOperator_V1_1, nullptr);
556     common_metadata_header_t* data = cameraTest->ability->get();
557     EXPECT_NE(data, nullptr);
558     camera_metadata_item_t entry;
559     int ret = FindCameraMetadataItem(data, OHOS_ABILITY_AVAILABLE_COLOR_SPACES, &entry);
560     printf("OHOS_ABILITY_AVAILABLE_COLOR_SPACES value count %d\n", entry.count);
561     if (ret == HDI::Camera::V1_0::NO_ERROR && entry.data.i32 != nullptr && entry.count > 0) {
562         std::vector<int32_t> captureColorSpaces;
563         std::vector<int32_t> videoColorSpaces;
564         std::vector<int32_t> superStubColorSpaces;
565         int32_t operatorMode = -2;
566         for (size_t i = 0; i < entry.count - 1; i++) {
567             if (operatorMode == -2 && entry.data.i32[i] == HDI::Camera::V1_2::OperationMode_V1_2::CAPTURE) {
568                 operatorMode = HDI::Camera::V1_2::OperationMode_V1_2::CAPTURE;
569             } else if (operatorMode == -2 && entry.data.i32[i] == HDI::Camera::V1_2::OperationMode_V1_2::VIDEO) {
570                 operatorMode = HDI::Camera::V1_2::OperationMode_V1_2::VIDEO;
571             } else if (operatorMode == -2 && entry.data.i32[i] == HDI::Camera::V1_2::OperationMode_V1_2::SUPER_STAB) {
572                 operatorMode = HDI::Camera::V1_2::OperationMode_V1_2::SUPER_STAB;
573             } else if (entry.data.i32[i] == -1 && operatorMode != -2 && entry.data.i32[i + 1] == -1) {
574                 operatorMode = -2;
575             } else if (entry.data.i32[i] == -1 && operatorMode != -2 && entry.data.i32[i + 1] != -1) {
576                 operatorMode = -1;
577             } else if (operatorMode == HDI::Camera::V1_2::OperationMode_V1_2::CAPTURE) {
578                 captureColorSpaces.push_back(entry.data.i32[i]);
579             } else if (operatorMode == HDI::Camera::V1_2::OperationMode_V1_2::VIDEO) {
580                 videoColorSpaces.push_back(entry.data.i32[i]);
581             } else if (operatorMode == HDI::Camera::V1_2::OperationMode_V1_2::SUPER_STAB) {
582                 superStubColorSpaces.push_back(entry.data.i32[i]);
583             } else if (operatorMode == -2 && entry.data.i32[i] > 0) {
584                 operatorMode = -1;
585             }
586         }
587         CaptureByColorSpaces(captureColorSpaces, cameraTest);
588         VideoByColorSpaces(videoColorSpaces, cameraTest);
589         SuperStubByColorSpaces(superStubColorSpaces, cameraTest);
590     }
591 }
592 
593 /**
594  * @tc.name: SUB_Driver_Camera_APERTURE_0500
595  * @tc.desc: OHOS_CONTROL_CAMERA_PHYSICAL_APERTURE_RANGE
596  * @tc.size: MediumTest
597  * @tc.type: Function
598  */
599 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_APERTURE_0500, TestSize.Level1)
600 {
601     // Get Stream Operator
602     cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
603     cameraTest->rc = cameraTest->cameraDeviceV1_1->GetStreamOperator_V1_1(cameraTest->streamOperatorCallback,
604         cameraTest->streamOperator_V1_1);
605     EXPECT_NE(cameraTest->streamOperator_V1_1, nullptr);
606     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
607 
608     // preview streamInfo
609     cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
610     cameraTest->DefaultInfosPreview(cameraTest->streamInfoV1_1);
611     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
612 
613     // capture streamInfo
614     cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
615     cameraTest->DefaultInfosCapture(cameraTest->streamInfoV1_1);
616     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
617 
618     // create and commitstreams
619     cameraTest->rc = cameraTest->streamOperator_V1_1->CreateStreams_V1_1(cameraTest->streamInfosV1_1);
620     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
621     cameraTest->rc = cameraTest->streamOperator_V1_1->CommitStreams_V1_1(
622         static_cast<OHOS::HDI::Camera::V1_1::OperationMode_V1_1>(OHOS::HDI::Camera::V1_2::PORTRAIT),
623         cameraTest->abilityVec);
624     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
625 
626     //update settings
627     std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY, DATA_CAPACITY);
628     float physicalApertureValue = 2;
629     meta->addEntry(OHOS_CONTROL_CAMERA_PHYSICAL_APERTURE_VALUE, &physicalApertureValue, DATA_COUNT);
630     std::vector<uint8_t> setting;
631     MetadataUtils::ConvertMetadataToVec(meta, setting);
632     cameraTest->rc = (CamRetCode)cameraTest->cameraDevice->UpdateSettings(setting);
633     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
634 
635     // start capture
636     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
637     cameraTest->StartCapture(cameraTest->streamIdCapture, cameraTest->captureIdCapture, false, true);
638     cameraTest->captureIds = {cameraTest->captureIdPreview, cameraTest->captureIdCapture};
639     cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdCapture};
640     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
641 }
642 
643 /**
644  * @tc.name: SUB_Driver_Camera_APERTURE_0600
645  * @tc.desc: OHOS_CONTROL_CAMERA_PHYSICAL_APERTURE_RANGE, all value
646  * @tc.size: MediumTest
647  * @tc.type: Function
648  */
649 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_APERTURE_0600, TestSize.Level1)
650 {
651     EXPECT_NE(cameraTest->ability, nullptr);
652     common_metadata_header_t* data = cameraTest->ability->get();
653     EXPECT_NE(data, nullptr);
654     camera_metadata_item_t entry;
655     cameraTest->rc = FindCameraMetadataItem(data, OHOS_ABILITY_CAMERA_PHYSICAL_APERTURE_RANGE, &entry);
656     if (cameraTest->rc == HDI::Camera::V1_0::NO_ERROR && entry.data.f != nullptr && entry.count > 0) {
657         float entryValues[] = { entry.data.f[3], entry.data.f[7], entry.data.f[8], entry.data.f[9], entry.data.f[10],
658             entry.data.f[14], entry.data.f[18] };
659         for (size_t i = 0; i < sizeof(entryValues) / sizeof(float); i++) {
660             // Get Stream Operator
661             cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
662             cameraTest->rc = cameraTest->cameraDeviceV1_1->GetStreamOperator_V1_1(cameraTest->streamOperatorCallback,
663                 cameraTest->streamOperator_V1_1);
664             EXPECT_NE(cameraTest->streamOperator_V1_1, nullptr);
665             EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
666 
667             // preview streamInfo
668             cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
669             cameraTest->DefaultInfosPreview(cameraTest->streamInfoV1_1);
670             cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
671 
672             // capture streamInfo
673             cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
674             cameraTest->DefaultInfosCapture(cameraTest->streamInfoV1_1);
675             cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
676 
677             // create and commitstreams
678             cameraTest->rc = cameraTest->streamOperator_V1_1->CreateStreams_V1_1(cameraTest->streamInfosV1_1);
679             EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
680             cameraTest->rc = cameraTest->streamOperator_V1_1->CommitStreams_V1_1(
681                 static_cast<OHOS::HDI::Camera::V1_1::OperationMode_V1_1>(OHOS::HDI::Camera::V1_2::PORTRAIT),
682                 cameraTest->abilityVec);
683             EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
684 
685             //update settings
686             std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY, DATA_CAPACITY);
687             float physicalApertureValue = entryValues[i];
688             meta->addEntry(OHOS_CONTROL_CAMERA_PHYSICAL_APERTURE_VALUE, &physicalApertureValue, DATA_COUNT);
689             std::vector<uint8_t> setting;
690             MetadataUtils::ConvertMetadataToVec(meta, setting);
691             cameraTest->rc = (CamRetCode)cameraTest->cameraDevice->UpdateSettings(setting);
692             EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
693 
694             // start capture
695             cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
696             cameraTest->StartCapture(cameraTest->streamIdCapture, cameraTest->captureIdCapture, false, true);
697 
698             cameraTest->captureIds = {cameraTest->captureIdPreview, cameraTest->captureIdCapture};
699             cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdCapture};
700             cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
701             sleep(1);
702             cameraTest->streamInfosV1_1.clear();
703         }
704     }
705 }
706 
707 /**
708  * @tc.name:SUB_Driver_Camera_Macro_0200
709  * @tc.desc: Update macro ability setting and check the callback
710  * @tc.size:MediumTest
711  * @tc.type:Function
712 */
713 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_Macro_0200, TestSize.Level1)
714 {
715     int32_t rc;
716     // step 2: set callback object
717     cameraTest->hostCallbackV1_2 = new OHOS::Camera::Test::TestCameraHostCallbackV1_2();
718     rc = cameraTest->serviceV1_2->SetCallback_V1_2(cameraTest->hostCallbackV1_2);
719     EXPECT_EQ(rc, 0);
720     // Start OHOS_ABILITY_CAMERA_MACRO_SUPPORTED ability query
721     common_metadata_header_t* data = cameraTest->ability->get();
722     EXPECT_NE(data, nullptr);
723     camera_metadata_item_t entry;
724     int ret = FindCameraMetadataItem(data, OHOS_ABILITY_CAMERA_MACRO_SUPPORTED, &entry);
725 
726     if (ret == HDI::Camera::V1_0::NO_ERROR && entry.data.u8 != nullptr && entry.count > 0) {
727         cameraTest->intents = {PREVIEW, STILL_CAPTURE, VIDEO};
728         cameraTest->StartStream(cameraTest->intents);
729         EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
730         cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
731         cameraTest->StartCapture(cameraTest->streamIdCapture, cameraTest->captureIdCapture, false, true);
732         cameraTest->StartCapture(cameraTest->streamIdVideo, cameraTest->captureIdVideo, false, true);
733         sleep(1);
734         cameraTest->captureIds = {cameraTest->captureIdPreview, cameraTest->captureIdCapture,
735             cameraTest->captureIdVideo};
736         cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdCapture,
737             cameraTest->streamIdVideo};
738         cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
739         sleep(UT_SECOND_TIMES);
740         common_metadata_header_t* data = cameraTest->deviceCallback->resultMeta->get();
741         EXPECT_NE(data, nullptr);
742         camera_metadata_item_t entry;
743         int ret = FindCameraMetadataItem(data, OHOS_CAMERA_MACRO_STATUS, &entry);
744         if (ret == HDI::Camera::V1_0::NO_ERROR && entry.data.u8 != nullptr && entry.count > 0) {
745             uint8_t value = entry.data.u8[0];
746             // 查询到状态, 检测状态到 微距模式可开启
747             if (OHOS_CAMERA_MACRO_ENABLE == value) {
748                 printf("Macro mode is set enabled.");
749             } else {
750                 printf("Macro mode is not enabled.");
751             }
752         } else {
753             printf("Macro mode is not enabled.");
754         }
755     }
756 }
757 
758 /**
759  * @tc.name: SUB_Driver_Camera_Macro_0300
760  * @tc.desc: macro mode CAPTURE_MACRO
761  * @tc.size: MediumTest
762  * @tc.type: Function
763  */
764 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_Macro_0300, TestSize.Level1)
765 {
766     CAMERA_LOGI("test SUB_Driver_Camera_Macro_0300 start ...");
767     // Get Stream Operator
768     cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
769     cameraTest->rc = cameraTest->cameraDeviceV1_1->GetStreamOperator_V1_1(cameraTest->streamOperatorCallback,
770         cameraTest->streamOperator_V1_1);
771     EXPECT_NE(cameraTest->streamOperator_V1_1, nullptr);
772     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
773 
774     // preview streamInfo
775     cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
776     cameraTest->DefaultInfosPreview(cameraTest->streamInfoV1_1);
777     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
778 
779     // capture streamInfo
780     cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
781     cameraTest->DefaultInfosCapture(cameraTest->streamInfoV1_1);
782     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
783 
784     std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY, DATA_CAPACITY);
785     float zoomRatio = 15;
786     uint8_t macroControl = OHOS_CAMERA_MACRO_ENABLE;
787     meta->addEntry(OHOS_CONTROL_ZOOM_RATIO, &zoomRatio, DATA_COUNT);
788     meta->addEntry(OHOS_CONTROL_CAMERA_MACRO, &macroControl, DATA_COUNT);
789     std::vector<uint8_t> setting;
790     MetadataUtils::ConvertMetadataToVec(meta, setting);
791     cameraTest->rc = (CamRetCode)cameraTest->cameraDevice->UpdateSettings(setting);
792     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
793     // is streams supported V1_1
794     StreamSupportType pType;
795     cameraTest->rc = cameraTest->streamOperator_V1_1->IsStreamsSupported_V1_1(
796         static_cast<OHOS::HDI::Camera::V1_1::OperationMode_V1_1>(OHOS::HDI::Camera::V1_2::CAPTURE_MACRO),
797         setting, cameraTest->streamInfosV1_1, pType);
798     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
799 
800     cameraTest->rc = cameraTest->streamOperator_V1_1->CreateStreams_V1_1(cameraTest->streamInfosV1_1);
801     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
802     cameraTest->rc = cameraTest->streamOperator_V1_1->CommitStreams_V1_1(
803         static_cast<OHOS::HDI::Camera::V1_1::OperationMode_V1_1>(OHOS::HDI::Camera::V1_2::CAPTURE_MACRO),
804         cameraTest->abilityVec);
805     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
806 
807     sleep(UT_SECOND_TIMES);
808     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
809     cameraTest->StartCapture(cameraTest->streamIdCapture, cameraTest->captureIdCapture, false, false);
810     cameraTest->captureIds = {cameraTest->captureIdPreview};
811     cameraTest->streamIds = {cameraTest->streamIdPreview};
812     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
813 }
814 
815 /**
816  * @tc.name: SUB_Driver_Camera_Macro_0400
817  * @tc.desc: macro mode VIDEO_MACRO
818  * @tc.size: MediumTest
819  * @tc.type: Function
820  */
821 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_Macro_0400, TestSize.Level1)
822 {
823     CAMERA_LOGI("test SUB_Driver_Camera_Macro_0400 start ...");
824     // Get Stream Operator
825     cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
826     cameraTest->rc = cameraTest->cameraDeviceV1_1->GetStreamOperator_V1_1(cameraTest->streamOperatorCallback,
827         cameraTest->streamOperator_V1_1);
828     EXPECT_NE(cameraTest->streamOperator_V1_1, nullptr);
829     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
830     // preview streamInfo
831     cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
832     cameraTest->DefaultInfosPreview(cameraTest->streamInfoV1_1);
833     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
834     // video streamInfo
835     cameraTest->streamInfoVideo = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
836     cameraTest->DefaultInfosVideo(cameraTest->streamInfoVideo);
837     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoVideo);
838     std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY, DATA_CAPACITY);
839     float zoomRatio = 15;
840     uint8_t macroControl = OHOS_CAMERA_MACRO_ENABLE;
841     meta->addEntry(OHOS_CONTROL_ZOOM_RATIO, &zoomRatio, DATA_COUNT);
842     meta->addEntry(OHOS_CONTROL_CAMERA_MACRO, &macroControl, DATA_COUNT);
843     std::vector<uint8_t> setting;
844     MetadataUtils::ConvertMetadataToVec(meta, setting);
845     cameraTest->rc = (CamRetCode)cameraTest->cameraDevice->UpdateSettings(setting);
846     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
847     // is streams supported V1_1
848     StreamSupportType tType;
849     cameraTest->rc = cameraTest->streamOperator_V1_1->IsStreamsSupported_V1_1(
850     static_cast<OHOS::HDI::Camera::V1_1::OperationMode_V1_1>(OHOS::HDI::Camera::V1_2::VIDEO_MACRO),
851     setting, cameraTest->streamInfosV1_1, tType);
852     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
853     cameraTest->rc = cameraTest->streamOperator_V1_1->CreateStreams_V1_1(cameraTest->streamInfosV1_1);
854     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
855     cameraTest->rc = cameraTest->streamOperator_V1_1->CommitStreams_V1_1(
856     static_cast<OHOS::HDI::Camera::V1_1::OperationMode_V1_1>(OHOS::HDI::Camera::V1_2::VIDEO_MACRO),
857     cameraTest->abilityVec);
858     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
859     sleep(UT_SECOND_TIMES);
860     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
861     cameraTest->StartCapture(cameraTest->streamIdVideo, cameraTest->captureIdVideo, false, true);
862     cameraTest->captureIds = {cameraTest->captureIdPreview, cameraTest->captureIdVideo};
863     cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdVideo};
864     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
865 }
866 
867 /**
868  * @tc.name: NotifyDeviceStateChangeInfo
869  * @tc.desc: notifyType fallingState deviceState fallingState
870  * @tc.size: MediumTest
871  * @tc.type: Function
872  */
873 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_NotifyDevice_0100, TestSize.Level1)
874 {
875     int32_t notifyType = 1;
876     int32_t deviceState = 1008;
877     cameraTest->rc = cameraTest->serviceV1_2->NotifyDeviceStateChangeInfo(notifyType, deviceState);
878     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
879 }
880 
881 /**
882  * @tc.name: NotifyDeviceStateChangeInfo
883  * @tc.desc: notifyType foldState deviceState unknown
884  * @tc.size: MediumTest
885  * @tc.type: Function
886  */
887 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_NotifyDevice_0200, TestSize.Level1)
888 {
889     int32_t notifyType = 2;
890     int32_t deviceState = 0;
891     cameraTest->rc = cameraTest->serviceV1_2->NotifyDeviceStateChangeInfo(notifyType, deviceState);
892     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
893 }
894 
895 /**
896  * @tc.name: NotifyDeviceStateChangeInfo
897  * @tc.desc: notifyType foldState deviceState expand
898  * @tc.size: MediumTest
899  * @tc.type: Function
900  */
901 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_NotifyDevice_0300, TestSize.Level1)
902 {
903     int32_t notifyType = 2;
904     int32_t deviceState = 1;
905     cameraTest->rc = cameraTest->serviceV1_2->NotifyDeviceStateChangeInfo(notifyType, deviceState);
906     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
907 }
908 
909 /**
910  * @tc.name: NotifyDeviceStateChangeInfo
911  * @tc.desc: notifyType foldState deviceState folded
912  * @tc.size: MediumTest
913  * @tc.type: Function
914  */
915 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_NotifyDevice_0400, TestSize.Level1)
916 {
917     int32_t notifyType = 2;
918     int32_t deviceState = 2;
919     cameraTest->rc = cameraTest->serviceV1_2->NotifyDeviceStateChangeInfo(notifyType, deviceState);
920     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
921 }
922 
923 /**
924  * @tc.name: NotifyDeviceStateChangeInfo
925  * @tc.desc: notifyType foldState deviceState halfFolded
926  * @tc.size: MediumTest
927  * @tc.type: Function
928  */
929 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_NotifyDevice_0500, TestSize.Level1)
930 {
931     int32_t notifyType = 2;
932     int32_t deviceState = 3;
933     cameraTest->rc = cameraTest->serviceV1_2->NotifyDeviceStateChangeInfo(notifyType, deviceState);
934     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::INVALID_ARGUMENT);
935 }
936 
937 /**
938  * @tc.name: NotifyDeviceStateChangeInfo
939  * @tc.desc: notifyType foldState deviceState error
940  * @tc.size: MediumTest
941  * @tc.type: Function
942  */
943 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_NotifyDevice_0600, TestSize.Level1)
944 {
945     int32_t notifyType = 2;
946     int32_t deviceState = 10;
947     cameraTest->rc = cameraTest->serviceV1_2->NotifyDeviceStateChangeInfo(notifyType, deviceState);
948     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::INVALID_ARGUMENT);
949 }
950 
951 /**
952  * @tc.name: CommitStreams_V1_1_SUPER_STAB
953  * @tc.desc: CommitStreams_V1_1 for super stabilization mode, preview and video
954  * @tc.size: MediumTest
955  * @tc.type: Function
956  */
UpdateSettingsForSuperStabMode(std::shared_ptr<OHOS::Camera::Test> cameraTest)957 static void UpdateSettingsForSuperStabMode(std::shared_ptr<OHOS::Camera::Test> cameraTest)
958 {
959     bool isTagExitst = cameraTest->IsTagValueExistsU8(cameraTest->ability,
960         OHOS_ABILITY_VIDEO_STABILIZATION_MODES,
961         OHOS_CAMERA_VIDEO_STABILIZATION_HIGH);
962     EXPECT_EQ(isTagExitst, true);
963     std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY, DATA_CAPACITY);
964     uint8_t stabControl = OHOS_CAMERA_VIDEO_STABILIZATION_HIGH;
965     meta->addEntry(OHOS_CONTROL_VIDEO_STABILIZATION_MODE, &stabControl, DATA_COUNT);
966     // ability meta data serialization for updating
967     std::vector<uint8_t> setting;
968     MetadataUtils::ConvertMetadataToVec(meta, setting);
969     cameraTest->rc = (CamRetCode)cameraTest->cameraDevice->UpdateSettings(setting);
970     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
971     CAMERA_LOGD("Macro mode is set enabled.");
972 }
973 
974 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_SteadyShot_0300, TestSize.Level1)
975 {
976     // Get Stream Operator
977     cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
978     cameraTest->rc = cameraTest->cameraDeviceV1_1->GetStreamOperator_V1_1(cameraTest->streamOperatorCallback,
979         cameraTest->streamOperator_V1_1);
980     EXPECT_NE(cameraTest->streamOperator_V1_1, nullptr);
981     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
982     // preview streamInfo
983     cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
984     cameraTest->DefaultInfosPreview(cameraTest->streamInfoV1_1);
985     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
986     // video streamInfo
987     cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
988     cameraTest->DefaultInfosVideo(cameraTest->streamInfoV1_1);
989     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
990     // Capture streamInfo
991     cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
992     cameraTest->DefaultInfosCapture(cameraTest->streamInfoV1_1);
993     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
994     // create and commitstreams
995     UpdateSettingsForSuperStabMode(cameraTest);
996     cameraTest->imageDataSaveSwitch = SWITCH_ON;
997     cameraTest->rc = cameraTest->streamOperator_V1_1->CreateStreams_V1_1(cameraTest->streamInfosV1_1);
998     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
999     cameraTest->rc = cameraTest->streamOperator_V1_1->CommitStreams_V1_1(
1000         static_cast<OHOS::HDI::Camera::V1_1::OperationMode_V1_1>(OHOS::HDI::Camera::V1_2::NORMAL),
1001         cameraTest->abilityVec);
1002     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
1003     // start preview, video and capture
1004     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
1005     cameraTest->StartCapture(cameraTest->streamIdVideo, cameraTest->captureIdVideo, false, true);
1006     // wait to stop
1007     uint32_t waitTime = 0;
1008     auto envStr = getenv("UT_SUPER_STAB_KEEP_SECOND");
1009     if (envStr != nullptr) {
1010         waitTime = atoi(envStr);
1011     }
1012     waitTime = (waitTime > 0 && waitTime < UT_SECOND_TIMES_MAX) ? waitTime : UT_SECOND_TIMES;
1013     sleep(waitTime);
1014     // stop stream
1015     cameraTest->captureIds = {cameraTest->captureIdPreview, cameraTest->captureIdVideo};
1016     cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdVideo};
1017     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
1018 }
1019 
1020 /**
1021  * @tc.name: SUB_Driver_Camera_Sketch_0300
1022  * @tc.desc: sketch
1023  * @tc.size: MediumTest
1024  * @tc.type: Function
1025  */
1026 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_Sketch_0300, TestSize.Level1)
1027 {
1028     CAMERA_LOGI("test Camera_Device_Hdi_V1_2_003 start");
1029     cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
1030     cameraTest->rc = cameraTest->cameraDeviceV1_1->GetStreamOperator_V1_1(
1031         cameraTest->streamOperatorCallback, cameraTest->streamOperator_V1_1);
1032     EXPECT_NE(cameraTest->streamOperator_V1_1, nullptr);
1033     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
1034 
1035     // preview streamInfo
1036     cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
1037     cameraTest->DefaultInfosPreviewV1_2(cameraTest->streamInfoV1_1);
1038     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
1039 
1040     // sketch streamInfo
1041     cameraTest->streamInfoSketch = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
1042     // sketch extended streamInfo
1043     OHOS::HDI::Camera::V1_1::ExtendedStreamInfo extendedStreamInfo {
1044         .type = static_cast<OHOS::HDI::Camera::V1_1::ExtendedStreamInfoType>(
1045             OHOS::HDI::Camera::V1_2::EXTENDED_STREAM_INFO_SKETCH),
1046 	    .width = 0,
1047    	    .height = 0,
1048    	    .format = 0,
1049 	    .dataspace = 0,
1050 	    .bufferQueue = nullptr
1051     };
1052     cameraTest->streamInfoSketch->extendedStreamInfos = {extendedStreamInfo};
1053     cameraTest->DefaultInfosSketch(cameraTest->streamInfoSketch);
1054     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoSketch);
1055 
1056     std::shared_ptr<CameraSetting> modeSetting = std::make_shared<CameraSetting>(100, 200);
1057     float zoomRatio = 20;
1058     modeSetting->addEntry(OHOS_CONTROL_ZOOM_RATIO, &zoomRatio, 1);
1059     std::vector<uint8_t> metaVec;
1060     MetadataUtils::ConvertMetadataToVec(modeSetting, metaVec);
1061     cameraTest->cameraDeviceV1_1->UpdateSettings(metaVec);
1062 
1063     // capture streamInfo
1064     cameraTest->streamInfoCapture = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
1065     cameraTest->DefaultInfosCapture(cameraTest->streamInfoCapture);
1066     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoCapture);
1067 
1068     cameraTest->rc = cameraTest->streamOperator_V1_1->CreateStreams_V1_1(cameraTest->streamInfosV1_1);
1069     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
1070     cameraTest->rc = cameraTest->streamOperator_V1_1->CommitStreams(
1071 		    OperationMode::NORMAL, cameraTest->abilityVec);
1072     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
1073     sleep(UT_SECOND_TIMES);
1074     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
1075     cameraTest->StartCapture(cameraTest->streamIdSketch, cameraTest->captureIdSketch, false, true);
1076     cameraTest->StartCapture(cameraTest->streamIdCapture, cameraTest->captureIdCapture, false, false);
1077     cameraTest->captureIds = {cameraTest->captureIdPreview, cameraTest->captureIdSketch};
1078     cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdSketch};
1079     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
1080 }
1081 
1082 /**
1083  * @tc.name: SUB_Driver_Camera_Sketch_0400
1084  * @tc.desc: sketch
1085  * @tc.size: MediumTest
1086  * @tc.type: Function
1087  */
1088 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_Sketch_0400, TestSize.Level1)
1089 {
1090     CAMERA_LOGI("test Camera_Device_Hdi_V1_2_003 start");
1091     cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
1092     cameraTest->rc = cameraTest->cameraDeviceV1_1->GetStreamOperator_V1_1(
1093         cameraTest->streamOperatorCallback, cameraTest->streamOperator_V1_1);
1094     EXPECT_NE(cameraTest->streamOperator_V1_1, nullptr);
1095     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
1096     // preview streamInfo
1097     cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
1098     cameraTest->DefaultInfosPreviewV1_2(cameraTest->streamInfoV1_1);
1099     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
1100     // sketch streamInfo
1101     cameraTest->streamInfoSketch = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
1102     // sketch extended streamInfo
1103     OHOS::HDI::Camera::V1_1::ExtendedStreamInfo extendedStreamInfo {
1104         .type = static_cast<OHOS::HDI::Camera::V1_1::ExtendedStreamInfoType>(
1105             OHOS::HDI::Camera::V1_2::EXTENDED_STREAM_INFO_SKETCH),
1106 	    .width = 0,
1107    	    .height = 0,
1108    	    .format = 0,
1109 	    .dataspace = 0,
1110 	    .bufferQueue = nullptr
1111     };
1112     cameraTest->streamInfoSketch->extendedStreamInfos = {extendedStreamInfo};
1113     cameraTest->DefaultInfosSketch(cameraTest->streamInfoSketch);
1114     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoSketch);
1115     std::shared_ptr<CameraSetting> modeSetting = std::make_shared<CameraSetting>(100, 200);
1116     float zoomRatio = 3;
1117     modeSetting->addEntry(OHOS_CONTROL_ZOOM_RATIO, &zoomRatio, 1);
1118     std::vector<uint8_t> metaVec;
1119     MetadataUtils::ConvertMetadataToVec(modeSetting, metaVec);
1120     cameraTest->cameraDeviceV1_1->UpdateSettings(metaVec);
1121     // capture streamInfo
1122     cameraTest->streamInfoCapture = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
1123     cameraTest->DefaultInfosCapture(cameraTest->streamInfoCapture);
1124     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoCapture);
1125 
1126     cameraTest->rc = cameraTest->streamOperator_V1_1->CreateStreams_V1_1(cameraTest->streamInfosV1_1);
1127     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
1128     cameraTest->rc = cameraTest->streamOperator_V1_1->CommitStreams(
1129 		    OperationMode::NORMAL, cameraTest->abilityVec);
1130     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
1131     sleep(UT_SECOND_TIMES);
1132     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
1133     cameraTest->StartCapture(cameraTest->streamIdSketch, cameraTest->captureIdSketch, false, true);
1134     cameraTest->StartCapture(cameraTest->streamIdCapture, cameraTest->captureIdCapture, false, false);
1135     cameraTest->captureIds = {cameraTest->captureIdPreview, cameraTest->captureIdSketch};
1136     cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdSketch};
1137     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
1138 }