• 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_stream_test_v1_2.h"
16 
17 using namespace OHOS;
18 using namespace std;
19 using namespace testing::ext;
20 using namespace OHOS::Camera;
21 
22 constexpr uint32_t ITEM_CAPACITY = 100;
23 constexpr uint32_t DATA_CAPACITY = 2000;
24 constexpr uint32_t DATA_COUNT = 1;
SetUpTestCase(void)25 void CameraStreamTestV1_2::SetUpTestCase(void) {}
TearDownTestCase(void)26 void CameraStreamTestV1_2::TearDownTestCase(void) {}
SetUp(void)27 void CameraStreamTestV1_2::SetUp(void)
28 {
29     cameraTest = std::make_shared<OHOS::Camera::Test>();
30     cameraTest->Init(); // assert inside
31     cameraTest->OpenCameraV1_2(DEVICE_0); // assert inside
32 }
33 
TearDown(void)34 void CameraStreamTestV1_2::TearDown(void)
35 {
36     cameraTest->Close();
37 }
38 
39 /**
40  * @tc.name:SUB_Driver_Camera_Colorspace_0300
41  * @tc.desc: updateColorSpace by updateStreams
42  * @tc.size:MediumTest
43  * @tc.type:Function
44 */
45 HWTEST_F(CameraStreamTestV1_2, SUB_Driver_Camera_Colorspace_0300, TestSize.Level1)
46 {
47     cameraTest->streamOperatorCallbackV1_2 = new OHOS::Camera::Test::TestStreamOperatorCallbackV1_2();
48     cameraTest->rc = cameraTest->cameraDeviceV1_2->GetStreamOperator_V1_2(cameraTest->streamOperatorCallbackV1_2,
49         cameraTest->streamOperator_V1_2);
50     EXPECT_NE(cameraTest->streamOperator_V1_2, nullptr);
51     cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
52     cameraTest->DefaultInfosPreview(cameraTest->streamInfoV1_1);
53     cameraTest->streamInfoV1_1->v1_0.dataspace_ = OHOS_CAMERA_SRGB_FULL;
54     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
55     // capture streamInfo
56     cameraTest->streamInfoCapture = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
57     cameraTest->DefaultInfosCapture(cameraTest->streamInfoCapture);
58     cameraTest->streamInfoCapture->v1_0.dataspace_ = OHOS_CAMERA_SRGB_FULL;
59     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoCapture);
60     cameraTest->rc = cameraTest->streamOperator_V1_2->CreateStreams_V1_1(cameraTest->streamInfosV1_1);
61     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
62     cameraTest->rc = cameraTest->streamOperator_V1_2->CommitStreams(
63         OperationMode::NORMAL, cameraTest->abilityVec);
64     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
65     sleep(UT_SECOND_TIMES);
66     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
67     cameraTest->StartCapture(cameraTest->streamIdCapture, cameraTest->captureIdCapture, false, false);
68     cameraTest->streamOperator_V1_2->CancelCapture(cameraTest->captureIdPreview);
69     cameraTest->streamInfoV1_1->v1_0.dataspace_ = OHOS_CAMERA_P3_FULL;
70     cameraTest->streamInfoCapture->v1_0.dataspace_ = OHOS_CAMERA_P3_FULL;
71     cameraTest->rc = cameraTest->streamOperator_V1_2->UpdateStreams(cameraTest->streamInfosV1_1);
72     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
73     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
74     cameraTest->StartCapture(cameraTest->streamIdCapture, 2001, false, false);
75     cameraTest->captureIds = {cameraTest->captureIdPreview};
76     cameraTest->streamIds = {cameraTest->streamIdPreview};
77     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
78 }
79 
80 /**
81  * @tc.name:SUB_Driver_Camera_HDRvivid_0100
82  * @tc.desc: updateColorSpace by updateStreams
83  * @tc.size:MediumTest
84  * @tc.type:Function
85 */
86 HWTEST_F(CameraStreamTestV1_2, SUB_Driver_Camera_HDRvivid_0100, TestSize.Level1)
87 {
88     cameraTest->streamOperatorCallbackV1_2 = new OHOS::Camera::Test::TestStreamOperatorCallbackV1_2();
89     cameraTest->rc = cameraTest->cameraDeviceV1_2->GetStreamOperator_V1_2(cameraTest->streamOperatorCallbackV1_2,
90         cameraTest->streamOperator_V1_2);
91     EXPECT_NE(cameraTest->streamOperator_V1_2, nullptr);
92 
93     cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
94     cameraTest->DefaultInfosPreview(cameraTest->streamInfoV1_1);
95     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
96     // video streamInfo
97     cameraTest->streamInfoVideo = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
98     cameraTest->DefaultInfosVideo(cameraTest->streamInfoVideo);
99     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoVideo);
100     cameraTest->rc = cameraTest->streamOperator_V1_2->CreateStreams_V1_1(cameraTest->streamInfosV1_1);
101     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
102     cameraTest->rc = cameraTest->streamOperator_V1_2->CommitStreams(
103         OperationMode::NORMAL, cameraTest->abilityVec);
104     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
105     sleep(UT_SECOND_TIMES);
106     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
107     cameraTest->StartCapture(cameraTest->streamIdVideo, cameraTest->captureIdVideo, false, true);
108     cameraTest->streamOperator_V1_2->CancelCapture(cameraTest->captureIdPreview);
109     cameraTest->streamOperator_V1_2->CancelCapture(cameraTest->captureIdVideo);
110     cameraTest->streamInfoV1_1->v1_0.dataspace_ = OHOS_CAMERA_BT2020_HLG_FULL;
111     cameraTest->streamInfoV1_1->v1_0.format_ = OHOS_CAMERA_FORMAT_YCBCR_P010;
112     cameraTest->streamInfoVideo->v1_0.dataspace_ = OHOS_CAMERA_BT2020_HLG_FULL;
113     cameraTest->streamInfoVideo->v1_0.format_ = OHOS_CAMERA_FORMAT_YCBCR_P010;
114     cameraTest->rc = cameraTest->streamOperator_V1_2->UpdateStreams(cameraTest->streamInfosV1_1);
115     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
116     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
117     cameraTest->StartCapture(cameraTest->streamIdVideo, cameraTest->captureIdVideo, false, true);
118     cameraTest->captureIds = {cameraTest->captureIdPreview, cameraTest->captureIdVideo};
119     cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdVideo};
120     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
121 }
122 
123 /**
124  * @tc.name:SUB_Driver_Camera_HDRvivid_0200
125  * @tc.desc: updateColorSpace by updateStreams
126  * @tc.size:MediumTest
127  * @tc.type:Function
128 */
129 HWTEST_F(CameraStreamTestV1_2, SUB_Driver_Camera_HDRvivid_0200, TestSize.Level1)
130 {
131     cameraTest->streamOperatorCallbackV1_2 = new OHOS::Camera::Test::TestStreamOperatorCallbackV1_2();
132     cameraTest->rc = cameraTest->cameraDeviceV1_2->GetStreamOperator_V1_2(cameraTest->streamOperatorCallbackV1_2,
133         cameraTest->streamOperator_V1_2);
134     EXPECT_NE(cameraTest->streamOperator_V1_2, nullptr);
135 
136     cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
137     cameraTest->DefaultInfosPreview(cameraTest->streamInfoV1_1);
138     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
139     // video streamInfo
140     cameraTest->streamInfoVideo = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
141     cameraTest->DefaultInfosVideo(cameraTest->streamInfoVideo);
142     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoVideo);
143     cameraTest->rc = cameraTest->streamOperator_V1_2->CreateStreams_V1_1(cameraTest->streamInfosV1_1);
144     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
145     cameraTest->rc = cameraTest->streamOperator_V1_2->CommitStreams(
146         OperationMode::NORMAL, cameraTest->abilityVec);
147     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
148     sleep(UT_SECOND_TIMES);
149     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
150     cameraTest->StartCapture(cameraTest->streamIdVideo, cameraTest->captureIdVideo, false, true);
151     cameraTest->streamOperator_V1_2->CancelCapture(cameraTest->captureIdPreview);
152     cameraTest->streamOperator_V1_2->CancelCapture(cameraTest->captureIdVideo);
153     cameraTest->streamInfoV1_1->v1_0.dataspace_ = OHOS_CAMERA_BT709_FULL;
154     cameraTest->streamInfoV1_1->v1_0.format_ = PIXEL_FMT_YCRCB_420_SP;
155     cameraTest->streamInfoVideo->v1_0.dataspace_ = OHOS_CAMERA_BT709_FULL;
156     cameraTest->streamInfoVideo->v1_0.format_ = PIXEL_FMT_YCRCB_420_SP;
157     cameraTest->rc = cameraTest->streamOperator_V1_2->UpdateStreams(cameraTest->streamInfosV1_1);
158     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
159     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
160     cameraTest->StartCapture(cameraTest->streamIdVideo, cameraTest->captureIdVideo, false, true);
161     cameraTest->captureIds = {cameraTest->captureIdPreview, cameraTest->captureIdVideo};
162     cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdVideo};
163     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
164 }
165 
166 /**
167  * @tc.name:SUB_Driver_Camera_NightMode_0200
168  * @tc.desc:auto exposure
169  * @tc.size:MediumTest
170  * @tc.type:Function
171 */
172 HWTEST_F(CameraStreamTestV1_2, SUB_Driver_Camera_NightMode_0200, TestSize.Level1)
173 {
174     //Get Stream Operator
175     cameraTest->streamOperatorCallbackV1_2 = new OHOS::Camera::Test::TestStreamOperatorCallbackV1_2();
176     cameraTest->rc = cameraTest->cameraDeviceV1_2->GetStreamOperator_V1_2(cameraTest->streamOperatorCallbackV1_2,
177         cameraTest->streamOperator_V1_2);
178     EXPECT_NE(cameraTest->streamOperator_V1_2, nullptr);
179     //preview streamInfo
180     cameraTest->streamInfoPre = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
181     cameraTest->DefaultInfosPreview(cameraTest->streamInfoPre);
182     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoPre);
183     //capture streamInfo
184     cameraTest->streamInfoCapture = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
185     cameraTest->DefaultInfosCapture(cameraTest->streamInfoCapture);
186     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoCapture);
187     //create and commit stream
188     cameraTest->rc = cameraTest->streamOperator_V1_2->CreateStreams_V1_1(cameraTest->streamInfosV1_1);
189     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
190     cameraTest->rc = cameraTest->streamOperator_V1_2->CommitStreams_V1_1(
191         static_cast<OHOS::HDI::Camera::V1_1::OperationMode_V1_1>(OHOS::HDI::Camera::V1_2::NIGHT),
192         cameraTest->abilityVec);
193     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
194     //start capture
195     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
196     cameraTest->StartCapture(cameraTest->streamIdCapture, cameraTest->captureIdCapture, false, false);
197     //wait for auto exposuring end
198     sleep(10);
199     //stop stream
200     cameraTest->captureIds = {cameraTest->captureIdPreview};
201     cameraTest->streamIds = {cameraTest->streamIdPreview};
202     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
203 }
204 
205 /**
206  * @tc.name:SUB_Driver_Camera_NightMode_0300
207  * @tc.desc:manual exposure
208  * @tc.size:MediumTest
209  * @tc.type:Function
210 */
211 HWTEST_F(CameraStreamTestV1_2, SUB_Driver_Camera_NightMode_0300, TestSize.Level1)
212 {
213     //update settings
214     std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY, DATA_CAPACITY);
215     int32_t manualExposureTime = 8000;
216     meta->addEntry(OHOS_CONTROL_MANUAL_EXPOSURE_TIME, &manualExposureTime, DATA_COUNT);
217     std::vector<uint8_t> setting;
218     MetadataUtils::ConvertMetadataToVec(meta, setting);
219     cameraTest->rc = (CamRetCode)cameraTest->cameraDevice->UpdateSettings(setting);
220     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
221     //Get Stream Operator
222     cameraTest->streamOperatorCallbackV1_2 = new OHOS::Camera::Test::TestStreamOperatorCallbackV1_2();
223     cameraTest->rc = cameraTest->cameraDeviceV1_2->GetStreamOperator_V1_2(cameraTest->streamOperatorCallbackV1_2,
224         cameraTest->streamOperator_V1_2);
225     EXPECT_NE(cameraTest->streamOperator_V1_2, nullptr);
226     //preview streamInfo
227     cameraTest->streamInfoPre = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
228     cameraTest->DefaultInfosPreview(cameraTest->streamInfoPre);
229     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoPre);
230     //capture streamInfo
231     cameraTest->streamInfoCapture = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
232     cameraTest->DefaultInfosCapture(cameraTest->streamInfoCapture);
233     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoCapture);
234     //create and commit stream
235     cameraTest->rc = cameraTest->streamOperator_V1_2->CreateStreams_V1_1(cameraTest->streamInfosV1_1);
236     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
237     cameraTest->rc = cameraTest->streamOperator_V1_2->CommitStreams_V1_1(
238         static_cast<OHOS::HDI::Camera::V1_1::OperationMode_V1_1>(OHOS::HDI::Camera::V1_2::NIGHT),
239         cameraTest->abilityVec);
240     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
241     //start capture
242     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
243     cameraTest->StartCapture(cameraTest->streamIdCapture, cameraTest->captureIdCapture, false, false);
244     //wait for manual exposuring end
245     sleep(10);
246     //stop stream
247     cameraTest->captureIds = {cameraTest->captureIdPreview};
248     cameraTest->streamIds = {cameraTest->streamIdPreview};
249     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
250 }
251 
252 /**
253  * @tc.name:SUB_Driver_Camera_NightMode_0400
254  * @tc.desc:manual exposure and then confirmCapture
255  * @tc.size:MediumTest
256  * @tc.type:Function
257 */
258 HWTEST_F(CameraStreamTestV1_2, SUB_Driver_Camera_NightMode_0400, TestSize.Level1)
259 {
260     //update settings
261     std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY, DATA_CAPACITY);
262     int32_t manualExposureTime = 8000;
263     meta->addEntry(OHOS_CONTROL_MANUAL_EXPOSURE_TIME, &manualExposureTime, DATA_COUNT);
264     std::vector<uint8_t> setting;
265     MetadataUtils::ConvertMetadataToVec(meta, setting);
266     cameraTest->rc = (CamRetCode)cameraTest->cameraDevice->UpdateSettings(setting);
267     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
268     //Get Stream Operator
269     cameraTest->streamOperatorCallbackV1_2 = new OHOS::Camera::Test::TestStreamOperatorCallbackV1_2();
270     cameraTest->rc = cameraTest->cameraDeviceV1_2->GetStreamOperator_V1_2(cameraTest->streamOperatorCallbackV1_2,
271         cameraTest->streamOperator_V1_2);
272     EXPECT_NE(cameraTest->streamOperator_V1_2, nullptr);
273     //preview streamInfo
274     cameraTest->streamInfoPre = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
275     cameraTest->DefaultInfosPreview(cameraTest->streamInfoPre);
276     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoPre);
277     //capture streamInfo
278     cameraTest->streamInfoCapture = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
279     cameraTest->DefaultInfosCapture(cameraTest->streamInfoCapture);
280     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoCapture);
281     //create and commit stream
282     cameraTest->rc = cameraTest->streamOperator_V1_2->CreateStreams_V1_1(cameraTest->streamInfosV1_1);
283     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
284     cameraTest->rc = cameraTest->streamOperator_V1_2->CommitStreams_V1_1(
285         static_cast<OHOS::HDI::Camera::V1_1::OperationMode_V1_1>(OHOS::HDI::Camera::V1_2::NIGHT),
286         cameraTest->abilityVec);
287     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
288     //start capture
289     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
290     cameraTest->StartCapture(cameraTest->streamIdCapture, cameraTest->captureIdCapture, false, false);
291     //wait for manual exposuring end confirmCapture
292     sleep(UT_SLEEP_TIME);
293     EXPECT_NE(cameraTest->streamOperator_V1_2, nullptr);
294     cameraTest->streamOperator_V1_2->ConfirmCapture(cameraTest->streamIdCapture);
295     sleep(UT_SLEEP_TIME);
296     //stop stream
297     cameraTest->captureIds = {cameraTest->captureIdPreview};
298     cameraTest->streamIds = {cameraTest->streamIdPreview};
299     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
300 }
301 
302 /**
303  * @tc.name: SUB_Driver_Camera_SmoothZoom_0200
304  * @tc.desc: SMOOTH ZOOM
305  * @tc.size: MediumTest
306  * @tc.type: Function
307  */
308 HWTEST_F(CameraStreamTestV1_2, SUB_Driver_Camera_SmoothZoom_0200, TestSize.Level1)
309 {
310     cameraTest->streamOperatorCallbackV1_2 = new OHOS::Camera::Test::TestStreamOperatorCallbackV1_2();
311     cameraTest->rc = cameraTest->cameraDeviceV1_2->GetStreamOperator_V1_2(cameraTest->streamOperatorCallbackV1_2,
312         cameraTest->streamOperator_V1_2);
313     EXPECT_NE(cameraTest->streamOperator_V1_2, nullptr);
314     cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
315     cameraTest->DefaultInfosPreview(cameraTest->streamInfoV1_1);
316     cameraTest->streamInfoV1_1->v1_0.dataspace_ = OHOS_CAMERA_SRGB_FULL;
317     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
318     // capture streamInfo
319     cameraTest->streamInfoCapture = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
320     cameraTest->DefaultInfosCapture(cameraTest->streamInfoCapture);
321     cameraTest->streamInfoCapture->v1_0.dataspace_ = OHOS_CAMERA_SRGB_FULL;
322     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoCapture);
323     // video streamInfo
324     cameraTest->streamInfoVideo = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
325     cameraTest->DefaultInfosVideo(cameraTest->streamInfoVideo);
326     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoVideo);
327     // start stream
328     cameraTest->rc = cameraTest->streamOperator_V1_2->CreateStreams_V1_1(cameraTest->streamInfosV1_1);
329     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
330     cameraTest->rc = cameraTest->streamOperator_V1_2->CommitStreams(
331         OperationMode::NORMAL, cameraTest->abilityVec);
332     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
333     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
334     cameraTest->StartCapture(cameraTest->streamIdCapture, cameraTest->captureIdCapture, false, true);
335     cameraTest->StartCapture(cameraTest->streamIdVideo, cameraTest->captureIdVideo, false, true);
336     EXPECT_NE(cameraTest->ability, nullptr);
337     common_metadata_header_t* data = cameraTest->ability->get();
338     EXPECT_NE(data, nullptr);
339     camera_metadata_item_t entry;
340     // cover tag OHOS_ABILITY_CAMERA_ZOOM_PERFORMANCE
341     cameraTest->rc = FindCameraMetadataItem(data, OHOS_ABILITY_CAMERA_ZOOM_PERFORMANCE, &entry);
342     if (cameraTest->rc != 0) {
343         GTEST_SKIP() << "skip this test, because OHOS_ABILITY_CAMERA_ZOOM_PERFORMANCE not supported now" << std::endl;
344         return;
345     }
346     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
347     // cover OHOS_CONTROL_PREPARE_ZOOM and its values
348     std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY, DATA_CAPACITY);
349     // cover OHOS_CAMERA_ZOOMSMOOTH_PREPARE_ENABLE
350     uint8_t pre_zoom_value = OHOS_CAMERA_ZOOMSMOOTH_PREPARE_ENABLE;
351     meta->addEntry(OHOS_CONTROL_PREPARE_ZOOM, &pre_zoom_value, DATA_COUNT);
352     std::vector<uint8_t> setting;
353     MetadataUtils::ConvertMetadataToVec(meta, setting);
354     cameraTest->rc = (CamRetCode)cameraTest->cameraDevice->UpdateSettings(setting);
355     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
356     // cover OHOS_CONTROL_SMOOTH_ZOOM_RATIOS,  values type: uint32_t array
357     uint32_t values[] = { 10, 300, 20, 400, 30, 500 };
358     meta = std::make_shared<CameraSetting>(ITEM_CAPACITY, DATA_CAPACITY);
359     meta->addEntry(OHOS_CONTROL_SMOOTH_ZOOM_RATIOS, values, sizeof(values) / sizeof(uint32_t));
360     setting.clear();
361     MetadataUtils::ConvertMetadataToVec(meta, setting);
362     cameraTest->rc = (CamRetCode)cameraTest->cameraDevice->UpdateSettings(setting);
363     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
364     // cover GetStatus(), OHOS_STATUS_CAMERA_CURRENT_FPS and  OHOS_STATUS_CAMERA_CURRENT_ZOOM_RATIO
365     std::shared_ptr<CameraSetting> metaIn = std::make_shared<CameraSetting>(ITEM_CAPACITY, DATA_CAPACITY);
366     // no sense
367     uint32_t current_fps = 0;
368     uint32_t current_zoom_ratio = 0;
369     metaIn->addEntry(OHOS_STATUS_CAMERA_CURRENT_FPS, &current_fps, DATA_COUNT);
370     metaIn->addEntry(OHOS_STATUS_CAMERA_CURRENT_ZOOM_RATIO, &current_zoom_ratio, DATA_COUNT);
371     std::vector<uint8_t> settingIn, settingOut;
372     MetadataUtils::ConvertMetadataToVec(metaIn, settingIn);
373     cameraTest->rc = cameraTest->cameraDeviceV1_2->GetStatus(settingIn, settingOut);
374     if (HDI::Camera::V1_0::NO_ERROR == cameraTest->rc) {
375         std::cout << "GetStatus execute success." << std::endl;
376     }
377     meta = std::make_shared<CameraSetting>(ITEM_CAPACITY, DATA_CAPACITY);
378     // cover OHOS_CAMERA_ZOOMSMOOTH_PREPARE_DISABLE
379     pre_zoom_value = OHOS_CAMERA_ZOOMSMOOTH_PREPARE_DISABLE ;
380     meta->addEntry(OHOS_CONTROL_PREPARE_ZOOM, &pre_zoom_value, DATA_COUNT);
381     setting.clear();
382     MetadataUtils::ConvertMetadataToVec(meta, setting);
383     cameraTest->rc = (CamRetCode)cameraTest->cameraDevice->UpdateSettings(setting);
384     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
385     cameraTest->captureIds = {cameraTest->captureIdPreview, cameraTest->captureIdCapture, cameraTest->captureIdVideo};
386     cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdCapture, cameraTest->streamIdVideo};
387     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
388 }
389 
390 /**
391  * @tc.name: SUB_Driver_Camera_SmoothZoom_0300
392  * @tc.desc: SMOOTH ZOOM
393  * @tc.size: MediumTest
394  * @tc.type: Function
395  */
396 HWTEST_F(CameraStreamTestV1_2, SUB_Driver_Camera_SmoothZoom_0300, TestSize.Level1)
397 {
398     cameraTest->streamOperatorCallbackV1_2 = new OHOS::Camera::Test::TestStreamOperatorCallbackV1_2();
399     cameraTest->rc = cameraTest->cameraDeviceV1_2->GetStreamOperator_V1_2(cameraTest->streamOperatorCallbackV1_2,
400         cameraTest->streamOperator_V1_2);
401     EXPECT_NE(cameraTest->streamOperator_V1_2, nullptr);
402     cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
403     cameraTest->DefaultInfosPreview(cameraTest->streamInfoV1_1);
404     cameraTest->streamInfoV1_1->v1_0.dataspace_ = OHOS_CAMERA_SRGB_FULL;
405     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
406     // capture streamInfo
407     cameraTest->streamInfoCapture = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
408     cameraTest->DefaultInfosCapture(cameraTest->streamInfoCapture);
409     cameraTest->streamInfoCapture->v1_0.dataspace_ = OHOS_CAMERA_SRGB_FULL;
410     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoCapture);
411     // video streamInfo
412     cameraTest->streamInfoVideo = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
413     cameraTest->DefaultInfosVideo(cameraTest->streamInfoVideo);
414     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoVideo);
415     // start stream
416     cameraTest->rc = cameraTest->streamOperator_V1_2->CreateStreams_V1_1(cameraTest->streamInfosV1_1);
417     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
418     cameraTest->rc = cameraTest->streamOperator_V1_2->CommitStreams(
419         OperationMode::NORMAL, cameraTest->abilityVec);
420     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
421     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
422     cameraTest->StartCapture(cameraTest->streamIdCapture, cameraTest->captureIdCapture, false, true);
423     cameraTest->StartCapture(cameraTest->streamIdVideo, cameraTest->captureIdVideo, false, true);
424     std::shared_ptr<CameraSetting> metaIn = std::make_shared<CameraSetting>(ITEM_CAPACITY, DATA_CAPACITY);
425     std::shared_ptr<CameraSetting> metaOut = std::make_shared<CameraSetting>(ITEM_CAPACITY, DATA_CAPACITY);
426     uint8_t aperture_range = 1;
427     metaIn->addEntry(OHOS_ABILITY_CAMERA_VIRTUAL_APERTURE_RANGE, &aperture_range, DATA_COUNT);
428     std::vector<uint8_t> settingIn, settingOut;
429     MetadataUtils::ConvertMetadataToVec(metaIn, settingIn);
430     cameraTest->rc = cameraTest->cameraDeviceV1_2->GetStatus(settingIn, settingOut);
431     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::INVALID_ARGUMENT);
432     cameraTest->captureIds = {cameraTest->captureIdPreview, cameraTest->captureIdCapture, cameraTest->captureIdVideo};
433     cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdCapture, cameraTest->streamIdVideo};
434     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
435 }
436