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