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 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_1->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 cameraTest->streamInfoV1_1->v1_0.dataspace_ = colorSpaces;
453 cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
454 // capture streamInfo
455 cameraTest->streamInfoCapture = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
456 cameraTest->DefaultInfosCapture(cameraTest->streamInfoCapture);
457 cameraTest->streamInfoCapture->v1_0.dataspace_ = colorSpaces;
458 cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoCapture);
459 cameraTest->rc = cameraTest->streamOperator_V1_1->CreateStreams_V1_1(cameraTest->streamInfosV1_1);
460 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
461 cameraTest->rc = cameraTest->streamOperator_V1_1->CommitStreams(
462 OperationMode::NORMAL, cameraTest->abilityVec);
463 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
464 sleep(UT_SECOND_TIMES);
465 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
466 cameraTest->StartCapture(cameraTest->streamIdCapture, cameraTest->captureIdCapture, false, false);
467 cameraTest->captureIds = {cameraTest->captureIdPreview};
468 cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdCapture};
469 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
470 cameraTest->streamInfosV1_1.clear();
471 }
472 }
473 }
474
VideoByColorSpaces(std::vector<int32_t> videoColorSpaces,std::vector<int32_t> previewColorSpaces,std::shared_ptr<OHOS::Camera::Test> cameraTest)475 void VideoByColorSpaces(std::vector<int32_t> videoColorSpaces, std::vector<int32_t> previewColorSpaces,
476 std::shared_ptr<OHOS::Camera::Test> cameraTest)
477 {
478 cameraTest->imageDataSaveSwitch = SWITCH_ON;
479
480 if (videoColorSpaces.empty() || previewColorSpaces.empty()) {
481 printf("ColorSpaces empty is null\n");
482 return;
483 }
484 for (int32_t colorSpaces : previewColorSpaces) {
485 printf("preview colorSpaces value %d\n", colorSpaces);
486
487 // preview streamInfo
488 cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
489 cameraTest->DefaultInfosPreview(cameraTest->streamInfoV1_1);
490 cameraTest->streamInfoV1_1->v1_0.dataspace_ = colorSpaces;
491 if (colorSpaces == OHOS_CAMERA_BT2020_HLG_FULL) {
492 cameraTest->streamInfoV1_1->v1_0.format_ = OHOS_CAMERA_FORMAT_YCBCR_P010;
493 }
494
495 // video streamInfo
496 for (int32_t colorSpaces_ : videoColorSpaces) {
497 printf("video colorSpaces_ value %d\n", colorSpaces_);
498 cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
499
500 cameraTest->streamInfoVideo = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
501 cameraTest->DefaultInfosVideo(cameraTest->streamInfoVideo);
502 cameraTest->streamInfoVideo->v1_0.dataspace_ = colorSpaces_;
503 cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoVideo);
504 cameraTest->rc = cameraTest->streamOperator_V1_1->CreateStreams_V1_1(cameraTest->streamInfosV1_1);
505 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
506 cameraTest->rc = cameraTest->streamOperator_V1_1->CommitStreams(
507 static_cast<OHOS::HDI::Camera::V1_0::OperationMode>(OHOS::HDI::Camera::V1_1::OperationMode_V1_1::VIDEO),
508 cameraTest->abilityVec);
509 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
510
511 //updateSettings
512 std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY, DATA_CAPACITY);
513 uint8_t videoStabiliMode = OHOS_CAMERA_VIDEO_STABILIZATION_AUTO;
514 meta->addEntry(OHOS_CONTROL_VIDEO_STABILIZATION_MODE, &videoStabiliMode, DATA_COUNT);
515 const int32_t deviceStreamId = cameraTest->streamIdPreview;
516 meta->addEntry(OHOS_CAMERA_STREAM_ID, &deviceStreamId, DATA_COUNT);
517 std::vector<uint8_t> setting;
518 MetadataUtils::ConvertMetadataToVec(meta, setting);
519 cameraTest->rc = (CamRetCode)cameraTest->cameraDevice->UpdateSettings(setting);
520 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
521 sleep(UT_SECOND_TIMES);
522
523 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
524 cameraTest->StartCapture(cameraTest->streamIdVideo, cameraTest->captureIdVideo, false, true);
525 cameraTest->captureIds = {cameraTest->captureIdPreview, cameraTest->captureIdVideo};
526 cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdVideo};
527 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
528 cameraTest->streamInfosV1_1.clear();
529 sleep(1);
530 }
531 }
532 cameraTest->imageDataSaveSwitch = SWITCH_OFF;
533 }
534
SuperStubByColorSpaces(std::vector<int32_t> superStubColorSpaces,std::shared_ptr<OHOS::Camera::Test> cameraTest)535 void SuperStubByColorSpaces(std::vector<int32_t> superStubColorSpaces, std::shared_ptr<OHOS::Camera::Test> cameraTest)
536 {
537 if (!superStubColorSpaces.empty()) {
538 for (int32_t colorSpaces : superStubColorSpaces) {
539 printf("superStubColorSpaces colorSpaces value %d\n", colorSpaces);
540 // preview streamInfo
541 cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
542 cameraTest->DefaultInfosPreview(cameraTest->streamInfoV1_1);
543 cameraTest->streamInfoV1_1->v1_0.dataspace_ = colorSpaces;
544 if (colorSpaces == OHOS_CAMERA_BT2020_HLG_FULL) {
545 cameraTest->streamInfoV1_1->v1_0.format_ = OHOS_CAMERA_FORMAT_YCBCR_P010;
546 }
547 cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
548 // video streamInfo
549 cameraTest->streamInfoVideo = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
550 cameraTest->DefaultInfosVideo(cameraTest->streamInfoVideo);
551 cameraTest->streamInfoVideo->v1_0.dataspace_ = colorSpaces;
552 if (colorSpaces == OHOS_CAMERA_BT2020_HLG_FULL) {
553 cameraTest->streamInfoVideo->v1_0.format_ = OHOS_CAMERA_FORMAT_YCBCR_P010;
554 }
555 cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoVideo);
556 cameraTest->rc = cameraTest->streamOperator_V1_1->CreateStreams_V1_1(cameraTest->streamInfosV1_1);
557 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
558 cameraTest->rc = cameraTest->streamOperator_V1_1->CommitStreams_V1_1(
559 static_cast<OHOS::HDI::Camera::V1_1::OperationMode_V1_1>(OHOS::HDI::Camera::V1_2::SUPER_STAB),
560 cameraTest->abilityVec);
561 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
562 sleep(UT_SECOND_TIMES);
563 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
564 cameraTest->StartCapture(cameraTest->streamIdVideo, cameraTest->captureIdVideo, false, true);
565 cameraTest->captureIds = {cameraTest->captureIdPreview, cameraTest->captureIdVideo};
566 cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdVideo};
567 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
568 cameraTest->streamInfosV1_1.clear();
569 }
570 }
571 }
572
573 /**
574 * @tc.name:SUB_Driver_Camera_Colorspace_0200
575 * @tc.desc: Update macro ability setting and check the callback
576 * @tc.size:MediumTest
577 * @tc.type:Function
578 */
579 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_Colorspace_0200, TestSize.Level1)
580 {
581 cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
582 cameraTest->rc = cameraTest->cameraDeviceV1_1->GetStreamOperator_V1_1(
583 cameraTest->streamOperatorCallback, cameraTest->streamOperator_V1_1);
584 EXPECT_NE(cameraTest->streamOperator_V1_1, nullptr);
585 common_metadata_header_t* data = cameraTest->ability->get();
586 EXPECT_NE(data, nullptr);
587 camera_metadata_item_t entry;
588 int ret = FindCameraMetadataItem(data, OHOS_ABILITY_AVAILABLE_COLOR_SPACES, &entry);
589 printf("OHOS_ABILITY_AVAILABLE_COLOR_SPACES value count %d\n", entry.count);
590 if (ret == HDI::Camera::V1_0::NO_ERROR && entry.data.i32 != nullptr && entry.count > 0) {
591 std::vector<int32_t> captureColorSpaces;
592 std::vector<int32_t> videoColorSpaces;
593 std::vector<int32_t> superStubColorSpaces;
594 std::vector<int32_t> previewColorSpaces;
595 int32_t operatorMode = -2;
596 for (size_t i = 0; i < entry.count - 1; i++) {
597 if (operatorMode == -2 && entry.data.i32[i] == HDI::Camera::V1_2::OperationMode_V1_2::CAPTURE) {
598 operatorMode = HDI::Camera::V1_2::OperationMode_V1_2::CAPTURE;
599 } else if (operatorMode == -2 && entry.data.i32[i] == HDI::Camera::V1_2::OperationMode_V1_2::VIDEO) {
600 operatorMode = HDI::Camera::V1_2::OperationMode_V1_2::VIDEO;
601 } else if (operatorMode == -2 && entry.data.i32[i] == HDI::Camera::V1_2::OperationMode_V1_2::SUPER_STAB) {
602 operatorMode = HDI::Camera::V1_2::OperationMode_V1_2::SUPER_STAB;
603 } else if (entry.data.i32[i] == -1 && operatorMode != -2 && entry.data.i32[i + 1] == -1) {
604 operatorMode = -2;
605 } else if (entry.data.i32[i] == -1 && operatorMode != -2 && entry.data.i32[i + 1] != -1) {
606 operatorMode = -1;
607 } else if (operatorMode == HDI::Camera::V1_2::OperationMode_V1_2::CAPTURE) {
608 captureColorSpaces.push_back(entry.data.i32[i]);
609 } else if (operatorMode == HDI::Camera::V1_2::OperationMode_V1_2::VIDEO) {
610 if (std::find(cameraTest->previewColorSpaces_.begin(), cameraTest->previewColorSpaces_.end(),
611 entry.data.i32[i]) != cameraTest->previewColorSpaces_.end()) {
612 previewColorSpaces.push_back(entry.data.i32[i]);
613 } else {
614 videoColorSpaces.push_back(entry.data.i32[i]);
615 }
616 } else if (operatorMode == HDI::Camera::V1_2::OperationMode_V1_2::SUPER_STAB) {
617 superStubColorSpaces.push_back(entry.data.i32[i]);
618 } else if (operatorMode == -2 && entry.data.i32[i] > 0) {
619 operatorMode = -1;
620 }
621 }
622 CaptureByColorSpaces(captureColorSpaces, cameraTest);
623 VideoByColorSpaces(videoColorSpaces, previewColorSpaces, cameraTest);
624 SuperStubByColorSpaces(superStubColorSpaces, cameraTest);
625 }
626 }
627
628 /**
629 * @tc.name: SUB_Driver_Camera_APERTURE_0500
630 * @tc.desc: OHOS_CONTROL_CAMERA_PHYSICAL_APERTURE_RANGE
631 * @tc.size: MediumTest
632 * @tc.type: Function
633 */
634 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_APERTURE_0500, TestSize.Level1)
635 {
636 // Get Stream Operator
637 cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
638 cameraTest->rc = cameraTest->cameraDeviceV1_1->GetStreamOperator_V1_1(cameraTest->streamOperatorCallback,
639 cameraTest->streamOperator_V1_1);
640 EXPECT_NE(cameraTest->streamOperator_V1_1, nullptr);
641 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
642
643 // preview streamInfo
644 cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
645 cameraTest->DefaultInfosPreview(cameraTest->streamInfoV1_1);
646 cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
647
648 // capture streamInfo
649 cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
650 cameraTest->DefaultInfosCapture(cameraTest->streamInfoV1_1);
651 cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
652
653 // create and commitstreams
654 cameraTest->rc = cameraTest->streamOperator_V1_1->CreateStreams_V1_1(cameraTest->streamInfosV1_1);
655 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
656 cameraTest->rc = cameraTest->streamOperator_V1_1->CommitStreams_V1_1(
657 static_cast<OHOS::HDI::Camera::V1_1::OperationMode_V1_1>(OHOS::HDI::Camera::V1_2::PORTRAIT),
658 cameraTest->abilityVec);
659 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
660
661 //update settings
662 std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY, DATA_CAPACITY);
663 float physicalApertureValue = 2;
664 meta->addEntry(OHOS_CONTROL_CAMERA_PHYSICAL_APERTURE_VALUE, &physicalApertureValue, DATA_COUNT);
665 std::vector<uint8_t> setting;
666 MetadataUtils::ConvertMetadataToVec(meta, setting);
667 cameraTest->rc = (CamRetCode)cameraTest->cameraDevice->UpdateSettings(setting);
668 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
669
670 // start capture
671 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
672 cameraTest->StartCapture(cameraTest->streamIdCapture, cameraTest->captureIdCapture, false, true);
673 cameraTest->captureIds = {cameraTest->captureIdPreview, cameraTest->captureIdCapture};
674 cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdCapture};
675 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
676 }
677
678 /**
679 * @tc.name: SUB_Driver_Camera_APERTURE_0600
680 * @tc.desc: OHOS_CONTROL_CAMERA_PHYSICAL_APERTURE_RANGE, all value
681 * @tc.size: MediumTest
682 * @tc.type: Function
683 */
684 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_APERTURE_0600, TestSize.Level1)
685 {
686 EXPECT_NE(cameraTest->ability, nullptr);
687 common_metadata_header_t* data = cameraTest->ability->get();
688 EXPECT_NE(data, nullptr);
689 camera_metadata_item_t entry;
690 cameraTest->rc = FindCameraMetadataItem(data, OHOS_ABILITY_CAMERA_PHYSICAL_APERTURE_RANGE, &entry);
691 if (cameraTest->rc == HDI::Camera::V1_0::NO_ERROR && entry.data.f != nullptr && entry.count > 0) {
692 float entryValues[] = { entry.data.f[3], entry.data.f[7], entry.data.f[8], entry.data.f[9], entry.data.f[10],
693 entry.data.f[14], entry.data.f[18] };
694 for (size_t i = 0; i < sizeof(entryValues) / sizeof(float); i++) {
695 // Get Stream Operator
696 cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
697 cameraTest->rc = cameraTest->cameraDeviceV1_1->GetStreamOperator_V1_1(cameraTest->streamOperatorCallback,
698 cameraTest->streamOperator_V1_1);
699 EXPECT_NE(cameraTest->streamOperator_V1_1, nullptr);
700 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
701
702 // preview streamInfo
703 cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
704 cameraTest->DefaultInfosPreview(cameraTest->streamInfoV1_1);
705 cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
706
707 // capture streamInfo
708 cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
709 cameraTest->DefaultInfosCapture(cameraTest->streamInfoV1_1);
710 cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
711
712 // create and commitstreams
713 cameraTest->rc = cameraTest->streamOperator_V1_1->CreateStreams_V1_1(cameraTest->streamInfosV1_1);
714 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
715 cameraTest->rc = cameraTest->streamOperator_V1_1->CommitStreams_V1_1(
716 static_cast<OHOS::HDI::Camera::V1_1::OperationMode_V1_1>(OHOS::HDI::Camera::V1_2::PORTRAIT),
717 cameraTest->abilityVec);
718 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
719
720 //update settings
721 std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY, DATA_CAPACITY);
722 float physicalApertureValue = entryValues[i];
723 meta->addEntry(OHOS_CONTROL_CAMERA_PHYSICAL_APERTURE_VALUE, &physicalApertureValue, DATA_COUNT);
724 std::vector<uint8_t> setting;
725 MetadataUtils::ConvertMetadataToVec(meta, setting);
726 cameraTest->rc = (CamRetCode)cameraTest->cameraDevice->UpdateSettings(setting);
727 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
728
729 // start capture
730 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
731 cameraTest->StartCapture(cameraTest->streamIdCapture, cameraTest->captureIdCapture, false, true);
732
733 cameraTest->captureIds = {cameraTest->captureIdPreview, cameraTest->captureIdCapture};
734 cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdCapture};
735 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
736 sleep(1);
737 cameraTest->streamInfosV1_1.clear();
738 }
739 }
740 }
741
742 /**
743 * @tc.name:SUB_Driver_Camera_Macro_0200
744 * @tc.desc: Update macro ability setting and check the callback
745 * @tc.size:MediumTest
746 * @tc.type:Function
747 */
748 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_Macro_0200, TestSize.Level1)
749 {
750 int32_t rc;
751 // step 2: set callback object
752 cameraTest->hostCallbackV1_2 = new OHOS::Camera::Test::TestCameraHostCallbackV1_2();
753 rc = cameraTest->serviceV1_2->SetCallback_V1_2(cameraTest->hostCallbackV1_2);
754 EXPECT_EQ(rc, 0);
755 // Start OHOS_ABILITY_CAMERA_MACRO_SUPPORTED ability query
756 common_metadata_header_t* data = cameraTest->ability->get();
757 EXPECT_NE(data, nullptr);
758 camera_metadata_item_t entry;
759 int ret = FindCameraMetadataItem(data, OHOS_ABILITY_CAMERA_MACRO_SUPPORTED, &entry);
760
761 if (ret == HDI::Camera::V1_0::NO_ERROR && entry.data.u8 != nullptr && entry.count > 0) {
762 cameraTest->intents = {PREVIEW, STILL_CAPTURE, VIDEO};
763 cameraTest->StartStream(cameraTest->intents);
764 EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
765 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
766 cameraTest->StartCapture(cameraTest->streamIdCapture, cameraTest->captureIdCapture, false, true);
767 cameraTest->StartCapture(cameraTest->streamIdVideo, cameraTest->captureIdVideo, false, true);
768 sleep(1);
769 cameraTest->captureIds = {cameraTest->captureIdPreview, cameraTest->captureIdCapture,
770 cameraTest->captureIdVideo};
771 cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdCapture,
772 cameraTest->streamIdVideo};
773 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
774 sleep(UT_SECOND_TIMES);
775 common_metadata_header_t* data = cameraTest->deviceCallback->resultMeta->get();
776 EXPECT_NE(data, nullptr);
777 camera_metadata_item_t entry;
778 int ret = FindCameraMetadataItem(data, OHOS_CAMERA_MACRO_STATUS, &entry);
779 if (ret == HDI::Camera::V1_0::NO_ERROR && entry.data.u8 != nullptr && entry.count > 0) {
780 uint8_t value = entry.data.u8[0];
781 // 查询到状态, 检测状态到 微距模式可开启
782 if (OHOS_CAMERA_MACRO_ENABLE == value) {
783 printf("Macro mode is set enabled.");
784 } else {
785 printf("Macro mode is not enabled.");
786 }
787 } else {
788 printf("Macro mode is not enabled.");
789 }
790 }
791 }
792
793 /**
794 * @tc.name: SUB_Driver_Camera_Macro_0300
795 * @tc.desc: macro mode CAPTURE_MACRO
796 * @tc.size: MediumTest
797 * @tc.type: Function
798 */
799 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_Macro_0300, TestSize.Level1)
800 {
801 CAMERA_LOGI("test SUB_Driver_Camera_Macro_0300 start ...");
802 // Get Stream Operator
803 cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
804 cameraTest->rc = cameraTest->cameraDeviceV1_1->GetStreamOperator_V1_1(cameraTest->streamOperatorCallback,
805 cameraTest->streamOperator_V1_1);
806 EXPECT_NE(cameraTest->streamOperator_V1_1, nullptr);
807 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
808
809 // preview streamInfo
810 cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
811 cameraTest->DefaultInfosPreview(cameraTest->streamInfoV1_1);
812 cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
813
814 // capture streamInfo
815 cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
816 cameraTest->DefaultInfosCapture(cameraTest->streamInfoV1_1);
817 cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
818
819 std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY, DATA_CAPACITY);
820 float zoomRatio = 15;
821 uint8_t macroControl = OHOS_CAMERA_MACRO_ENABLE;
822 meta->addEntry(OHOS_CONTROL_ZOOM_RATIO, &zoomRatio, DATA_COUNT);
823 meta->addEntry(OHOS_CONTROL_CAMERA_MACRO, ¯oControl, DATA_COUNT);
824 std::vector<uint8_t> setting;
825 MetadataUtils::ConvertMetadataToVec(meta, setting);
826 cameraTest->rc = (CamRetCode)cameraTest->cameraDevice->UpdateSettings(setting);
827 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
828 // is streams supported V1_1
829 StreamSupportType pType;
830 cameraTest->rc = cameraTest->streamOperator_V1_1->IsStreamsSupported_V1_1(
831 static_cast<OHOS::HDI::Camera::V1_1::OperationMode_V1_1>(OHOS::HDI::Camera::V1_2::CAPTURE_MACRO),
832 setting, cameraTest->streamInfosV1_1, pType);
833 EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
834
835 cameraTest->rc = cameraTest->streamOperator_V1_1->CreateStreams_V1_1(cameraTest->streamInfosV1_1);
836 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
837 cameraTest->rc = cameraTest->streamOperator_V1_1->CommitStreams_V1_1(
838 static_cast<OHOS::HDI::Camera::V1_1::OperationMode_V1_1>(OHOS::HDI::Camera::V1_2::CAPTURE_MACRO),
839 cameraTest->abilityVec);
840 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
841
842 sleep(UT_SECOND_TIMES);
843 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
844 cameraTest->StartCapture(cameraTest->streamIdCapture, cameraTest->captureIdCapture, false, false);
845 cameraTest->captureIds = {cameraTest->captureIdPreview};
846 cameraTest->streamIds = {cameraTest->streamIdPreview};
847 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
848 }
849
850 /**
851 * @tc.name: SUB_Driver_Camera_Macro_0400
852 * @tc.desc: macro mode VIDEO_MACRO
853 * @tc.size: MediumTest
854 * @tc.type: Function
855 */
856 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_Macro_0400, TestSize.Level1)
857 {
858 CAMERA_LOGI("test SUB_Driver_Camera_Macro_0400 start ...");
859 // Get Stream Operator
860 cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
861 cameraTest->rc = cameraTest->cameraDeviceV1_1->GetStreamOperator_V1_1(cameraTest->streamOperatorCallback,
862 cameraTest->streamOperator_V1_1);
863 EXPECT_NE(cameraTest->streamOperator_V1_1, nullptr);
864 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
865 // preview streamInfo
866 cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
867 cameraTest->DefaultInfosPreview(cameraTest->streamInfoV1_1);
868 cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
869 // video streamInfo
870 cameraTest->streamInfoVideo = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
871 cameraTest->DefaultInfosVideo(cameraTest->streamInfoVideo);
872 cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoVideo);
873 std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY, DATA_CAPACITY);
874 float zoomRatio = 15;
875 uint8_t macroControl = OHOS_CAMERA_MACRO_ENABLE;
876 meta->addEntry(OHOS_CONTROL_ZOOM_RATIO, &zoomRatio, DATA_COUNT);
877 meta->addEntry(OHOS_CONTROL_CAMERA_MACRO, ¯oControl, DATA_COUNT);
878 std::vector<uint8_t> setting;
879 MetadataUtils::ConvertMetadataToVec(meta, setting);
880 cameraTest->rc = (CamRetCode)cameraTest->cameraDevice->UpdateSettings(setting);
881 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
882 // is streams supported V1_1
883 StreamSupportType tType;
884 cameraTest->rc = cameraTest->streamOperator_V1_1->IsStreamsSupported_V1_1(
885 static_cast<OHOS::HDI::Camera::V1_1::OperationMode_V1_1>(OHOS::HDI::Camera::V1_2::VIDEO_MACRO),
886 setting, cameraTest->streamInfosV1_1, tType);
887 EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
888 cameraTest->rc = cameraTest->streamOperator_V1_1->CreateStreams_V1_1(cameraTest->streamInfosV1_1);
889 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
890 cameraTest->rc = cameraTest->streamOperator_V1_1->CommitStreams_V1_1(
891 static_cast<OHOS::HDI::Camera::V1_1::OperationMode_V1_1>(OHOS::HDI::Camera::V1_2::VIDEO_MACRO),
892 cameraTest->abilityVec);
893 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
894 sleep(UT_SECOND_TIMES);
895 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
896 cameraTest->StartCapture(cameraTest->streamIdVideo, cameraTest->captureIdVideo, false, true);
897 cameraTest->captureIds = {cameraTest->captureIdPreview, cameraTest->captureIdVideo};
898 cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdVideo};
899 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
900 }
901
902 /**
903 * @tc.name: NotifyDeviceStateChangeInfo
904 * @tc.desc: notifyType fallingState deviceState fallingState
905 * @tc.size: MediumTest
906 * @tc.type: Function
907 */
908 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_NotifyDevice_0100, TestSize.Level1)
909 {
910 int32_t notifyType = 1;
911 int32_t deviceState = 1008;
912 cameraTest->rc = cameraTest->serviceV1_2->NotifyDeviceStateChangeInfo(notifyType, deviceState);
913 EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
914 }
915
916 /**
917 * @tc.name: NotifyDeviceStateChangeInfo
918 * @tc.desc: notifyType foldState deviceState unknown
919 * @tc.size: MediumTest
920 * @tc.type: Function
921 */
922 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_NotifyDevice_0200, TestSize.Level1)
923 {
924 int32_t notifyType = 2;
925 int32_t deviceState = 0;
926 cameraTest->rc = cameraTest->serviceV1_2->NotifyDeviceStateChangeInfo(notifyType, deviceState);
927 EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
928 }
929
930 /**
931 * @tc.name: NotifyDeviceStateChangeInfo
932 * @tc.desc: notifyType foldState deviceState expand
933 * @tc.size: MediumTest
934 * @tc.type: Function
935 */
936 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_NotifyDevice_0300, TestSize.Level1)
937 {
938 int32_t notifyType = 2;
939 int32_t deviceState = 1;
940 cameraTest->rc = cameraTest->serviceV1_2->NotifyDeviceStateChangeInfo(notifyType, deviceState);
941 EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
942 }
943
944 /**
945 * @tc.name: NotifyDeviceStateChangeInfo
946 * @tc.desc: notifyType foldState deviceState folded
947 * @tc.size: MediumTest
948 * @tc.type: Function
949 */
950 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_NotifyDevice_0400, TestSize.Level1)
951 {
952 int32_t notifyType = 2;
953 int32_t deviceState = 2;
954 cameraTest->rc = cameraTest->serviceV1_2->NotifyDeviceStateChangeInfo(notifyType, deviceState);
955 EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
956 }
957
958 /**
959 * @tc.name: NotifyDeviceStateChangeInfo
960 * @tc.desc: notifyType foldState deviceState halfFolded
961 * @tc.size: MediumTest
962 * @tc.type: Function
963 */
964 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_NotifyDevice_0500, TestSize.Level1)
965 {
966 int32_t notifyType = 2;
967 int32_t deviceState = 3;
968 cameraTest->rc = cameraTest->serviceV1_2->NotifyDeviceStateChangeInfo(notifyType, deviceState);
969 EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::INVALID_ARGUMENT);
970 }
971
972 /**
973 * @tc.name: NotifyDeviceStateChangeInfo
974 * @tc.desc: notifyType foldState deviceState error
975 * @tc.size: MediumTest
976 * @tc.type: Function
977 */
978 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_NotifyDevice_0600, TestSize.Level1)
979 {
980 int32_t notifyType = 2;
981 int32_t deviceState = 10;
982 cameraTest->rc = cameraTest->serviceV1_2->NotifyDeviceStateChangeInfo(notifyType, deviceState);
983 EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::INVALID_ARGUMENT);
984 }
985
986 /**
987 * @tc.name: CommitStreams_V1_1_SUPER_STAB
988 * @tc.desc: CommitStreams_V1_1 for super stabilization mode, preview and video
989 * @tc.size: MediumTest
990 * @tc.type: Function
991 */
UpdateSettingsForSuperStabMode(std::shared_ptr<OHOS::Camera::Test> cameraTest)992 static void UpdateSettingsForSuperStabMode(std::shared_ptr<OHOS::Camera::Test> cameraTest)
993 {
994 bool isTagExitst = cameraTest->IsTagValueExistsU8(cameraTest->ability,
995 OHOS_ABILITY_VIDEO_STABILIZATION_MODES,
996 OHOS_CAMERA_VIDEO_STABILIZATION_HIGH);
997 if (!isTagExitst) {
998 GTEST_SKIP() << "skip this test, because stabilization tag not found" << std::endl;
999 return;
1000 }
1001 std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY, DATA_CAPACITY);
1002 uint8_t stabControl = OHOS_CAMERA_VIDEO_STABILIZATION_HIGH;
1003 meta->addEntry(OHOS_CONTROL_VIDEO_STABILIZATION_MODE, &stabControl, DATA_COUNT);
1004 // ability meta data serialization for updating
1005 std::vector<uint8_t> setting;
1006 MetadataUtils::ConvertMetadataToVec(meta, setting);
1007 cameraTest->rc = (CamRetCode)cameraTest->cameraDevice->UpdateSettings(setting);
1008 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
1009 CAMERA_LOGD("Macro mode is set enabled.");
1010 }
1011
1012 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_SteadyShot_0300, TestSize.Level1)
1013 {
1014 // Get Stream Operator
1015 cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
1016 cameraTest->rc = cameraTest->cameraDeviceV1_1->GetStreamOperator_V1_1(cameraTest->streamOperatorCallback,
1017 cameraTest->streamOperator_V1_1);
1018 EXPECT_NE(cameraTest->streamOperator_V1_1, nullptr);
1019 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
1020 // preview streamInfo
1021 cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
1022 cameraTest->DefaultInfosPreview(cameraTest->streamInfoV1_1);
1023 cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
1024 // video streamInfo
1025 cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
1026 cameraTest->DefaultInfosVideo(cameraTest->streamInfoV1_1);
1027 cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
1028 // Capture streamInfo
1029 cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
1030 cameraTest->DefaultInfosCapture(cameraTest->streamInfoV1_1);
1031 cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
1032 // create and commitstreams
1033 UpdateSettingsForSuperStabMode(cameraTest);
1034 cameraTest->imageDataSaveSwitch = SWITCH_ON;
1035 cameraTest->rc = cameraTest->streamOperator_V1_1->CreateStreams_V1_1(cameraTest->streamInfosV1_1);
1036 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
1037 cameraTest->rc = cameraTest->streamOperator_V1_1->CommitStreams_V1_1(
1038 static_cast<OHOS::HDI::Camera::V1_1::OperationMode_V1_1>(OHOS::HDI::Camera::V1_2::NORMAL),
1039 cameraTest->abilityVec);
1040 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
1041 // start preview, video and capture
1042 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
1043 cameraTest->StartCapture(cameraTest->streamIdVideo, cameraTest->captureIdVideo, false, true);
1044 // wait to stop
1045 uint32_t waitTime = 0;
1046 auto envStr = getenv("UT_SUPER_STAB_KEEP_SECOND");
1047 if (envStr != nullptr) {
1048 waitTime = atoi(envStr);
1049 }
1050 waitTime = (waitTime > 0 && waitTime < UT_SECOND_TIMES_MAX) ? waitTime : UT_SECOND_TIMES;
1051 sleep(waitTime);
1052 // stop stream
1053 cameraTest->captureIds = {cameraTest->captureIdPreview, cameraTest->captureIdVideo};
1054 cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdVideo};
1055 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
1056 }
1057
1058 /**
1059 * @tc.name: SUB_Driver_Camera_Sketch_0300
1060 * @tc.desc: sketch
1061 * @tc.size: MediumTest
1062 * @tc.type: Function
1063 */
1064 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_Sketch_0300, TestSize.Level1)
1065 {
1066 CAMERA_LOGI("test Camera_Device_Hdi_V1_2_003 start");
1067 cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
1068 cameraTest->rc = cameraTest->cameraDeviceV1_1->GetStreamOperator_V1_1(
1069 cameraTest->streamOperatorCallback, cameraTest->streamOperator_V1_1);
1070 EXPECT_NE(cameraTest->streamOperator_V1_1, nullptr);
1071 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
1072
1073 // preview streamInfo
1074 cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
1075 cameraTest->DefaultInfosPreviewV1_2(cameraTest->streamInfoV1_1);
1076 cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
1077
1078 // sketch streamInfo
1079 cameraTest->streamInfoSketch = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
1080 // sketch extended streamInfo
1081 OHOS::HDI::Camera::V1_1::ExtendedStreamInfo extendedStreamInfo {
1082 .type = static_cast<OHOS::HDI::Camera::V1_1::ExtendedStreamInfoType>(
1083 OHOS::HDI::Camera::V1_2::EXTENDED_STREAM_INFO_SKETCH),
1084 .width = 0,
1085 .height = 0,
1086 .format = 0,
1087 .dataspace = 0,
1088 .bufferQueue = nullptr
1089 };
1090 cameraTest->streamInfoSketch->extendedStreamInfos = {extendedStreamInfo};
1091 cameraTest->DefaultInfosSketch(cameraTest->streamInfoSketch);
1092 cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoSketch);
1093
1094 std::shared_ptr<CameraSetting> modeSetting = std::make_shared<CameraSetting>(100, 200);
1095 float zoomRatio = 20;
1096 modeSetting->addEntry(OHOS_CONTROL_ZOOM_RATIO, &zoomRatio, 1);
1097 std::vector<uint8_t> metaVec;
1098 MetadataUtils::ConvertMetadataToVec(modeSetting, metaVec);
1099 cameraTest->cameraDeviceV1_1->UpdateSettings(metaVec);
1100
1101 // capture streamInfo
1102 cameraTest->streamInfoCapture = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
1103 cameraTest->DefaultInfosCapture(cameraTest->streamInfoCapture);
1104 cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoCapture);
1105
1106 cameraTest->rc = cameraTest->streamOperator_V1_1->CreateStreams_V1_1(cameraTest->streamInfosV1_1);
1107 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
1108 cameraTest->rc = cameraTest->streamOperator_V1_1->CommitStreams(
1109 OperationMode::NORMAL, cameraTest->abilityVec);
1110 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
1111 sleep(UT_SECOND_TIMES);
1112 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
1113 cameraTest->StartCapture(cameraTest->streamIdSketch, cameraTest->captureIdSketch, false, true);
1114 cameraTest->StartCapture(cameraTest->streamIdCapture, cameraTest->captureIdCapture, false, false);
1115 cameraTest->captureIds = {cameraTest->captureIdPreview, cameraTest->captureIdSketch};
1116 cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdSketch};
1117 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
1118 }
1119
1120 /**
1121 * @tc.name: SUB_Driver_Camera_Sketch_0400
1122 * @tc.desc: sketch
1123 * @tc.size: MediumTest
1124 * @tc.type: Function
1125 */
1126 HWTEST_F(CameraHdiTestV1_2, SUB_Driver_Camera_Sketch_0400, TestSize.Level1)
1127 {
1128 CAMERA_LOGI("test Camera_Device_Hdi_V1_2_003 start");
1129 cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
1130 cameraTest->rc = cameraTest->cameraDeviceV1_1->GetStreamOperator_V1_1(
1131 cameraTest->streamOperatorCallback, cameraTest->streamOperator_V1_1);
1132 EXPECT_NE(cameraTest->streamOperator_V1_1, nullptr);
1133 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
1134 // preview streamInfo
1135 cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
1136 cameraTest->DefaultInfosPreviewV1_2(cameraTest->streamInfoV1_1);
1137 cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
1138 // sketch streamInfo
1139 cameraTest->streamInfoSketch = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
1140 // sketch extended streamInfo
1141 OHOS::HDI::Camera::V1_1::ExtendedStreamInfo extendedStreamInfo {
1142 .type = static_cast<OHOS::HDI::Camera::V1_1::ExtendedStreamInfoType>(
1143 OHOS::HDI::Camera::V1_2::EXTENDED_STREAM_INFO_SKETCH),
1144 .width = 0,
1145 .height = 0,
1146 .format = 0,
1147 .dataspace = 0,
1148 .bufferQueue = nullptr
1149 };
1150 cameraTest->streamInfoSketch->extendedStreamInfos = {extendedStreamInfo};
1151 cameraTest->DefaultInfosSketch(cameraTest->streamInfoSketch);
1152 cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoSketch);
1153 std::shared_ptr<CameraSetting> modeSetting = std::make_shared<CameraSetting>(100, 200);
1154 float zoomRatio = 3;
1155 modeSetting->addEntry(OHOS_CONTROL_ZOOM_RATIO, &zoomRatio, 1);
1156 std::vector<uint8_t> metaVec;
1157 MetadataUtils::ConvertMetadataToVec(modeSetting, metaVec);
1158 cameraTest->cameraDeviceV1_1->UpdateSettings(metaVec);
1159 // capture streamInfo
1160 cameraTest->streamInfoCapture = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
1161 cameraTest->DefaultInfosCapture(cameraTest->streamInfoCapture);
1162 cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoCapture);
1163
1164 cameraTest->rc = cameraTest->streamOperator_V1_1->CreateStreams_V1_1(cameraTest->streamInfosV1_1);
1165 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
1166 cameraTest->rc = cameraTest->streamOperator_V1_1->CommitStreams(
1167 OperationMode::NORMAL, cameraTest->abilityVec);
1168 EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
1169 sleep(UT_SECOND_TIMES);
1170 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
1171 cameraTest->StartCapture(cameraTest->streamIdSketch, cameraTest->captureIdSketch, false, true);
1172 cameraTest->StartCapture(cameraTest->streamIdCapture, cameraTest->captureIdCapture, false, false);
1173 cameraTest->captureIds = {cameraTest->captureIdPreview, cameraTest->captureIdSketch};
1174 cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdSketch};
1175 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
1176 }