1 /*
2 * Copyright (c) 2023 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_3a_uttest.h"
16
17 using namespace OHOS;
18 using namespace std;
19 using namespace testing::ext;
20 using namespace OHOS::Camera;
21
SetUpTestCase(void)22 void Camera3AUtTest::SetUpTestCase(void) {}
TearDownTestCase(void)23 void Camera3AUtTest::TearDownTestCase(void) {}
SetUp(void)24 void Camera3AUtTest::SetUp(void)
25 {
26 cameraTest = std::make_shared<OHOS::Camera::HdiCommon>();
27 cameraTest->Init();
28 cameraTest->Open();
29 }
30
TearDown(void)31 void Camera3AUtTest::TearDown(void)
32 {
33 cameraTest->Close();
34 }
35
36 /**
37 * @tc.name: updateSetting AE
38 * @tc.desc: preview, updateSetting OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, success
39 * @tc.size: MediumTest
40 * @tc.type: Function
41 */
42 HWTEST_F(Camera3AUtTest, Camera_3a_001, TestSize.Level1)
43 {
44 cameraTest->intents = {PREVIEW};
45 cameraTest->StartStream(cameraTest->intents);
46 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
47 std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
48 int32_t expo = 0xa0;
49 meta->addEntry(OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, &expo, 1);
50 std::vector<uint8_t> metaVec;
51 MetadataUtils::ConvertMetadataToVec(meta, metaVec);
52 cameraTest->rc = cameraTest->cameraDevice->UpdateSettings(metaVec);
53 EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
54 sleep(1);
55 cameraTest->GetCameraMetadata();
56 cameraTest->captureIds = {cameraTest->captureIdPreview};
57 cameraTest->streamIds = {cameraTest->streamIdPreview};
58 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
59 }
60
61 /**
62 * @tc.name: updateSetting AE
63 * @tc.desc: preview, updateSetting OHOS_CAMERA_AWB_MODE_AUTO, success
64 * @tc.size: MediumTest
65 * @tc.type: Function
66 */
67 HWTEST_F(Camera3AUtTest, Camera_3a_002, TestSize.Level1)
68 {
69 cameraTest->intents = {PREVIEW};
70 cameraTest->StartStream(cameraTest->intents);
71 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
72 std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
73 uint8_t awbMode = OHOS_CAMERA_AWB_MODE_AUTO;
74 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
75 std::vector<uint8_t> metaVec;
76 MetadataUtils::ConvertMetadataToVec(meta, metaVec);
77 cameraTest->rc = cameraTest->cameraDevice->UpdateSettings(metaVec);
78 EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
79 sleep(1);
80 cameraTest->GetCameraMetadata();
81 cameraTest->captureIds = {cameraTest->captureIdPreview};
82 cameraTest->streamIds = {cameraTest->streamIdPreview};
83 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
84 }
85
86 /**
87 * @tc.name: updateSetting AE
88 * @tc.desc: preview, updateSetting OHOS_CAMERA_AWB_MODE_INCANDESCENT, success
89 * @tc.size: MediumTest
90 * @tc.type: Function
91 */
92 HWTEST_F(Camera3AUtTest, Camera_3a_003, TestSize.Level1)
93 {
94 cameraTest->intents = {PREVIEW};
95 cameraTest->StartStream(cameraTest->intents);
96 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
97 std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
98 uint8_t awbMode = OHOS_CAMERA_AWB_MODE_INCANDESCENT;
99 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
100 std::vector<uint8_t> metaVec;
101 MetadataUtils::ConvertMetadataToVec(meta, metaVec);
102 cameraTest->rc = cameraTest->cameraDevice->UpdateSettings(metaVec);
103 EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
104 sleep(1);
105 cameraTest->GetCameraMetadata();
106 cameraTest->captureIds = {cameraTest->captureIdPreview};
107 cameraTest->streamIds = {cameraTest->streamIdPreview};
108 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
109 }
110
111 /**
112 * @tc.name: updateSetting AE
113 * @tc.desc: preview, updateSetting OHOS_CAMERA_AWB_MODE_FLUORESENT, success
114 * @tc.size: MediumTest
115 * @tc.type: Function
116 */
117 HWTEST_F(Camera3AUtTest, Camera_3a_004, TestSize.Level1)
118 {
119 cameraTest->intents = {PREVIEW};
120 cameraTest->StartStream(cameraTest->intents);
121 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
122 std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
123 uint8_t awbMode = OHOS_CAMERA_AWB_MODE_FLUORESCENT;
124 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
125 std::vector<uint8_t> metaVec;
126 MetadataUtils::ConvertMetadataToVec(meta, metaVec);
127 cameraTest->rc = cameraTest->cameraDevice->UpdateSettings(metaVec);
128 EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
129 sleep(1);
130 cameraTest->GetCameraMetadata();
131 cameraTest->captureIds = {cameraTest->captureIdPreview};
132 cameraTest->streamIds = {cameraTest->streamIdPreview};
133 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
134 }
135
136 /**
137 * @tc.name: updateSetting AE
138 * @tc.desc: preview, updateSetting OHOS_CAMERA_AWB_MODE_DAYLIGHT, success
139 * @tc.size: MediumTest
140 * @tc.type: Function
141 */
142 HWTEST_F(Camera3AUtTest, Camera_3a_005, TestSize.Level1)
143 {
144 cameraTest->intents = {PREVIEW};
145 cameraTest->StartStream(cameraTest->intents);
146 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
147 std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
148 uint8_t awbMode = OHOS_CAMERA_AWB_MODE_DAYLIGHT;
149 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
150 std::vector<uint8_t> metaVec;
151 MetadataUtils::ConvertMetadataToVec(meta, metaVec);
152 cameraTest->rc = cameraTest->cameraDevice->UpdateSettings(metaVec);
153 EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
154 sleep(1);
155 cameraTest->GetCameraMetadata();
156 cameraTest->captureIds = {cameraTest->captureIdPreview};
157 cameraTest->streamIds = {cameraTest->streamIdPreview};
158 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
159 }
160
161 /**
162 * @tc.name: updateSetting AE
163 * @tc.desc: preview, updateSetting OHOS_CAMERA_AWB_MODE_CLOUDY_DAYLIGHT, success
164 * @tc.size: MediumTest
165 * @tc.type: Function
166 */
167 HWTEST_F(Camera3AUtTest, Camera_3a_006, TestSize.Level1)
168 {
169 cameraTest->intents = {PREVIEW};
170 cameraTest->StartStream(cameraTest->intents);
171 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
172 std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
173 uint8_t awbMode = OHOS_CAMERA_AWB_MODE_CLOUDY_DAYLIGHT;
174 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
175 std::vector<uint8_t> metaVec;
176 MetadataUtils::ConvertMetadataToVec(meta, metaVec);
177 cameraTest->rc = cameraTest->cameraDevice->UpdateSettings(metaVec);
178 EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
179 sleep(1);
180 cameraTest->GetCameraMetadata();
181 cameraTest->captureIds = {cameraTest->captureIdPreview};
182 cameraTest->streamIds = {cameraTest->streamIdPreview};
183 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
184 }
185
186 /**
187 * @tc.name: updateSetting AE
188 * @tc.desc: preview, updateSetting OHOS_CAMERA_AWB_MODE_TWILIGHT, success
189 * @tc.size: MediumTest
190 * @tc.type: Function
191 */
192 HWTEST_F(Camera3AUtTest, Camera_3a_007, TestSize.Level1)
193 {
194 cameraTest->intents = {PREVIEW};
195 cameraTest->StartStream(cameraTest->intents);
196 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
197 std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
198 uint8_t awbMode = OHOS_CAMERA_AWB_MODE_TWILIGHT;
199 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
200 std::vector<uint8_t> metaVec;
201 MetadataUtils::ConvertMetadataToVec(meta, metaVec);
202 cameraTest->rc = cameraTest->cameraDevice->UpdateSettings(metaVec);
203 EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
204 sleep(1);
205 cameraTest->GetCameraMetadata();
206 cameraTest->captureIds = {cameraTest->captureIdPreview};
207 cameraTest->streamIds = {cameraTest->streamIdPreview};
208 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
209 }
210
211 /**
212 * @tc.name: updateSetting AE
213 * @tc.desc: preview, updateSetting OHOS_CAMERA_AWB_MODE_SHADE, success
214 * @tc.size: MediumTest
215 * @tc.type: Function
216 */
217 HWTEST_F(Camera3AUtTest, Camera_3a_008, TestSize.Level1)
218 {
219 cameraTest->intents = {PREVIEW};
220 cameraTest->StartStream(cameraTest->intents);
221 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
222 std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
223 uint8_t awbMode = OHOS_CAMERA_AWB_MODE_SHADE;
224 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
225 std::vector<uint8_t> metaVec;
226 MetadataUtils::ConvertMetadataToVec(meta, metaVec);
227 cameraTest->rc = cameraTest->cameraDevice->UpdateSettings(metaVec);
228 EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
229 sleep(1);
230 cameraTest->GetCameraMetadata();
231 cameraTest->captureIds = {cameraTest->captureIdPreview};
232 cameraTest->streamIds = {cameraTest->streamIdPreview};
233 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
234 }
235
236 /**
237 * @tc.name: updateSetting AE
238 * @tc.desc: preview, updateSetting OHOS_CAMERA_AWB_MODE_OFF, success
239 * @tc.size: MediumTest
240 * @tc.type: Function
241 */
242 HWTEST_F(Camera3AUtTest, Camera_3a_009, TestSize.Level1)
243 {
244 cameraTest->intents = {PREVIEW};
245 cameraTest->StartStream(cameraTest->intents);
246 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
247 std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
248 uint8_t awbMode = OHOS_CAMERA_AWB_MODE_OFF;
249 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
250 std::vector<uint8_t> metaVec;
251 MetadataUtils::ConvertMetadataToVec(meta, metaVec);
252 cameraTest->rc = cameraTest->cameraDevice->UpdateSettings(metaVec);
253 EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
254 sleep(1);
255 cameraTest->GetCameraMetadata();
256 cameraTest->captureIds = {cameraTest->captureIdPreview};
257 cameraTest->streamIds = {cameraTest->streamIdPreview};
258 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
259 }
260
261 /**
262 * @tc.name: updateSetting AE
263 * @tc.desc: preview, updateSetting OHOS_CAMERA_AWB_MODE_OFF, success
264 * @tc.size: MediumTest
265 * @tc.type: Function
266 */
267 HWTEST_F(Camera3AUtTest, Camera_3a_010, TestSize.Level1)
268 {
269 cameraTest->intents = {PREVIEW};
270 cameraTest->StartStream(cameraTest->intents);
271 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
272 std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
273 uint8_t awbMode = OHOS_CAMERA_AE_MODE_ON_ALWAYS_FLASH;
274 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
275 std::vector<uint8_t> metaVec;
276 MetadataUtils::ConvertMetadataToVec(meta, metaVec);
277 cameraTest->rc = cameraTest->cameraDevice->UpdateSettings(metaVec);
278 EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
279 sleep(1);
280 cameraTest->GetCameraMetadata();
281 cameraTest->captureIds = {cameraTest->captureIdPreview};
282 cameraTest->streamIds = {cameraTest->streamIdPreview};
283 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
284 }
285
286 /**
287 * @tc.name: updateSetting AE
288 * @tc.desc: preview set 3A, then close device, and preview, 3A is reset
289 * @tc.size: MediumTest
290 * @tc.type: Function
291 */
292 HWTEST_F(Camera3AUtTest, Camera_3a_011, TestSize.Level1)
293 {
294 cameraTest->intents = {PREVIEW};
295 cameraTest->StartStream(cameraTest->intents);
296 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
297 std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
298 int32_t expo = 0xa0;
299 meta->addEntry(OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, &expo, 1);
300 std::vector<uint8_t> metaVec;
301 MetadataUtils::ConvertMetadataToVec(meta, metaVec);
302 cameraTest->rc = cameraTest->cameraDevice->UpdateSettings(metaVec);
303 EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
304 cameraTest->captureIds = {cameraTest->captureIdPreview};
305 cameraTest->streamIds = {cameraTest->streamIdPreview};
306 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
307 cameraTest->cameraDevice->Close();
308 cameraTest->consumerMap_.clear();
309 cameraTest = std::make_shared<OHOS::Camera::HdiCommon>();
310 cameraTest->Init();
311 cameraTest->Open();
312 cameraTest->intents = {PREVIEW};
313 cameraTest->StartStream(cameraTest->intents);
314 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
315 cameraTest->captureIds = {cameraTest->captureIdPreview};
316 cameraTest->streamIds = {cameraTest->streamIdPreview};
317 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
318 }
319
320
321 /**
322 * @tc.name: updateSetting AE
323 * @tc.desc: preview , updatesetting different 3A params together
324 * @tc.size: MediumTest
325 * @tc.type: Function
326 */
327 HWTEST_F(Camera3AUtTest, Camera_3a_012, TestSize.Level1)
328 {
329 cameraTest->intents = {PREVIEW};
330 cameraTest->StartStream(cameraTest->intents);
331 cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
332 std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
333 int32_t expo = 0xa0;
334 meta->addEntry(OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, &expo, 1);
335 uint8_t awbMode = OHOS_CAMERA_AWB_MODE_TWILIGHT;
336 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
337 std::vector<uint8_t> metaVec;
338 MetadataUtils::ConvertMetadataToVec(meta, metaVec);
339 cameraTest->rc = cameraTest->cameraDevice->UpdateSettings(metaVec);
340 EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
341 sleep(3); // sleep for 3 seconds
342 cameraTest->captureIds = {cameraTest->captureIdPreview};
343 cameraTest->streamIds = {cameraTest->streamIdPreview};
344 cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
345 }
346
347 /**
348 * @tc.name: updateSetting AE without preview
349 * @tc.desc: updatesetting OHOS_CAMERA_AE_EXMPENSATION, without preview, success
350 * @tc.size: MediumTest
351 * @tc.type: Function
352 */
353 HWTEST_F(Camera3AUtTest, Camera_3a_013, TestSize.Level1)
354 {
355 std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(100, 2000);
356 int32_t expo = 0xa0;
357 meta->addEntry(OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, &expo, 1);
358 std::vector<uint8_t> metaVec;
359 MetadataUtils::ConvertMetadataToVec(meta, metaVec);
360 cameraTest->rc = cameraTest->cameraDevice->UpdateSettings(metaVec);
361 EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
362 }
363
364 /**
365 * @tc.name: updateSetting AE without preview
366 * @tc.desc: updatesetting OHOS_CAMERA_AE_EXMPENSATION, without preview, success
367 * @tc.size: MediumTest
368 * @tc.type: Function
369 */
370 HWTEST_F(Camera3AUtTest, Camera_3a_014, TestSize.Level1)
371 {
372 std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(100, 2000);
373 int32_t awbMode = OHOS_CAMERA_AWB_MODE_AUTO;
374 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
375 std::vector<uint8_t> metaVec;
376 MetadataUtils::ConvertMetadataToVec(meta, metaVec);
377 cameraTest->rc = cameraTest->cameraDevice->UpdateSettings(metaVec);
378 EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
379 }