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
16 #include "camera_3a_test.h"
17
18 constexpr int ITEM_CAPACITY_SIZE = 100;
19 constexpr int DATA_CAPACITY_SIZE = 2000;
20
SetUpTestCase(void)21 void UtestCamera3ATest::SetUpTestCase(void)
22 {}
TearDownTestCase(void)23 void UtestCamera3ATest::TearDownTestCase(void)
24 {}
SetUp(void)25 void UtestCamera3ATest::SetUp(void)
26 {
27 if (cameraBase == nullptr)
28 cameraBase = std::make_shared<TestCameraBase>();
29 cameraBase->FBInit();
30 cameraBase->Init();
31 }
TearDown(void)32 void UtestCamera3ATest::TearDown(void)
33 {
34 cameraBase->Close();
35 }
36
37 /**
38 * @tc.name: updateSettings AE
39 * @tc.desc: Preview,updateSettings OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, success.
40 * @tc.level: Level0
41 * @tc.size: MediumTest
42 * @tc.type: Function
43 */
TEST_F(UtestCamera3ATest,camera_3a_0001)44 TEST_F(UtestCamera3ATest, camera_3a_0001)
45 {
46 std::cout << "==========[test log] Preview,";
47 std::cout << "then UpdateSettings OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, success." << std::endl;
48 EXPECT_EQ(true, cameraBase->cameraDevice != nullptr);
49 // Get the stream manager
50 cameraBase->AchieveStreamOperator();
51 // Configure preview stream information
52 cameraBase->intents = {PREVIEW};
53 cameraBase->StartStream(cameraBase->intents);
54 // Start capture
55 cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
56 // Issue 3A parameters
57 std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY_SIZE, DATA_CAPACITY_SIZE);
58 int32_t expo = 0xa0;
59 meta->addEntry(OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, &expo, 1);
60 cameraBase->rc = cameraBase->cameraDevice->UpdateSettings(meta);
61 EXPECT_EQ(cameraBase->rc, Camera::NO_ERROR);
62 std::cout << "==========[test log] UpdateSettings, exposure for 10s." << std::endl;
63 sleep(3); // update settings, exposure for 3s
64
65 // Post action of stream operation
66 cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW};
67 cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW};
68 cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds);
69 }
70
71 /**
72 * @tc.name: updateSettings AWB
73 * @tc.desc: Preview,updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_AUTO, success.
74 * @tc.level: Level1
75 * @tc.size: MediumTest
76 * @tc.type: Function
77 */
TEST_F(UtestCamera3ATest,camera_3a_0002)78 TEST_F(UtestCamera3ATest, camera_3a_0002)
79 {
80 std::cout << "==========[test log] Preview,";
81 std::cout << "updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_AUTO, success." << std::endl;
82 EXPECT_EQ(true, cameraBase->cameraDevice != nullptr);
83 // Get the stream manager
84 cameraBase->AchieveStreamOperator();
85 // Configure stream information
86 // start stream
87 cameraBase->intents = {PREVIEW, STILL_CAPTURE};
88 cameraBase->StartStream(cameraBase->intents);
89 // Get preview
90 cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
91 cameraBase->StartCapture(cameraBase->STREAM_ID_CAPTURE, cameraBase->CAPTURE_ID_CAPTURE, false, true);
92
93 // Issue 3A parameters
94 std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY_SIZE, DATA_CAPACITY_SIZE);
95 uint8_t awbMode = OHOS_CAMERA_AWB_MODE_AUTO;
96 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
97 std::cout << "==========[test log] UpdateSettings, awb mode: OHOS_CAMERA_AWB_MODE_AUTO." << std::endl;
98 cameraBase->rc = cameraBase->cameraDevice->UpdateSettings(meta);
99 EXPECT_EQ(cameraBase->rc, Camera::NO_ERROR);
100 sleep(2); // update settings, AWB mode auto for 2s.
101
102 // release stream
103 cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW, cameraBase->CAPTURE_ID_CAPTURE};
104 cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW, cameraBase->STREAM_ID_CAPTURE};
105 cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds);
106 }
107
108 /**
109 * @tc.name: updateSettings AWB
110 * @tc.desc: Preview,updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_INCANDESCENT, success.
111 * @tc.level: Level1
112 * @tc.size: MediumTest
113 * @tc.type: Function
114 */
TEST_F(UtestCamera3ATest,camera_3a_0003)115 TEST_F(UtestCamera3ATest, camera_3a_0003)
116 {
117 std::cout << "==========[test log] Preview,";
118 std::cout << "updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_INCANDESCENT, success." << std::endl;
119 // Create and get streamOperator information
120 cameraBase->AchieveStreamOperator();
121 // start stream
122 cameraBase->intents = {PREVIEW};
123 cameraBase->StartStream(cameraBase->intents);
124 // Start capture
125 cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
126
127 // Issue 3A parameters
128 std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY_SIZE, DATA_CAPACITY_SIZE);
129 uint8_t awbMode = OHOS_CAMERA_AWB_MODE_INCANDESCENT;
130 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
131 std::cout << "==========[test log] UpdateSettings,";
132 std::cout << "awb mode: OHOS_CAMERA_AWB_MODE_INCANDESCENT" << std::endl;
133 cameraBase->rc = cameraBase->cameraDevice->UpdateSettings(meta);
134 EXPECT_EQ(cameraBase->rc, Camera::NO_ERROR);
135
136 // Post action of stream operation
137 cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW};
138 cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW};
139 cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds);
140 }
141
142 /**
143 * @tc.name: updateSettings AWB
144 * @tc.desc: Preview,updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_FLUORESCENT, success.
145 * @tc.level: Level1
146 * @tc.size: MediumTest
147 * @tc.type: Function
148 */
TEST_F(UtestCamera3ATest,camera_3a_0004)149 TEST_F(UtestCamera3ATest, camera_3a_0004) // 3A mode white balance blue scene
150 {
151 std::cout << "==========[test log] Preview,";
152 std::cout << "updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_FLUORESCENT, success." << std::endl;
153 EXPECT_EQ(true, cameraBase->cameraDevice != nullptr);
154 // Get the stream manager
155 cameraBase->AchieveStreamOperator();
156 // Configure stream information
157 cameraBase->intents = {PREVIEW, STILL_CAPTURE};
158 cameraBase->StartStream(cameraBase->intents);
159 // Get preview
160 cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
161 cameraBase->StartCapture(cameraBase->STREAM_ID_CAPTURE, cameraBase->CAPTURE_ID_CAPTURE, false, true);
162
163 // Issue 3A parameters
164 std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY_SIZE, DATA_CAPACITY_SIZE);
165 uint8_t awbMode = AWB_MODE_WARM_FLUORESCENT;
166 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
167 std::cout << "==========[test log] UpdateSettings, awb mode: OHOS_CAMERA_AWB_MODE_AUTO." << std::endl;
168 cameraBase->rc = cameraBase->cameraDevice->UpdateSettings(meta);
169 EXPECT_EQ(cameraBase->rc, Camera::NO_ERROR);
170 sleep(2); // update settings, AWB mode auto for 2s.
171
172 // release stream
173 cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW, cameraBase->CAPTURE_ID_CAPTURE};
174 cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW, cameraBase->STREAM_ID_CAPTURE};
175 cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds);
176 }
177
178 /**
179 * @tc.name: updateSettings AWB
180 * @tc.desc: Preview,updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_WARM_FLUORESCENT, success.
181 * @tc.level: Level1
182 * @tc.size: MediumTest
183 * @tc.type: Function
184 */
TEST_F(UtestCamera3ATest,camera_3a_0005)185 TEST_F(UtestCamera3ATest, camera_3a_0005)
186 {
187 std::cout << "==========[test log] Preview,";
188 std::cout << "updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_WARM_FLUORESCENT, ";
189 std::cout << "success." << std::endl;
190 // Create and get streamOperator information
191 cameraBase->AchieveStreamOperator();
192 // Create data stream
193 cameraBase->intents = {PREVIEW};
194 cameraBase->StartStream(cameraBase->intents);
195 // Start capture
196 cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
197
198 // Issue 3A parameters
199 std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY_SIZE, DATA_CAPACITY_SIZE);
200 uint8_t awbMode = OHOS_CAMERA_AWB_MODE_WARM_FLUORESCENT;
201 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
202 std::cout << "==========[test log] UpdateSettings, ";
203 std::cout << "awb mode: OHOS_CAMERA_AWB_MODE_WARM_FLUORESCENT" << std::endl;
204 cameraBase->rc = cameraBase->cameraDevice->UpdateSettings(meta);
205 EXPECT_EQ(cameraBase->rc, Camera::NO_ERROR);
206
207 // Post action of stream operation
208 cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW};
209 cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW};
210 cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds);
211 }
212
213 /**
214 * @tc.name: updateSettings AWB
215 * @tc.desc: Preview,updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_DAYLIGHT, success.
216 * @tc.level: Level1
217 * @tc.size: MediumTest
218 * @tc.type: Function
219 */
TEST_F(UtestCamera3ATest,camera_3a_0006)220 TEST_F(UtestCamera3ATest, camera_3a_0006)
221 {
222 std::cout << "==========[test log] Preview, ";
223 std::cout << "updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_DAYLIGHT, success." << std::endl;
224 // Create and get streamOperator information
225 cameraBase->AchieveStreamOperator();
226 // Create data stream
227 cameraBase->intents = {PREVIEW};
228 cameraBase->StartStream(cameraBase->intents);
229 // Start capture
230 cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
231
232 // Issue 3A parameters
233 std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY_SIZE, DATA_CAPACITY_SIZE);
234 uint8_t awbMode = OHOS_CAMERA_AWB_MODE_DAYLIGHT;
235 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
236 std::cout << "==========[test log] UpdateSettings, awb mode: OHOS_CAMERA_AWB_MODE_DAYLIGHT" << std::endl;
237 cameraBase->rc = cameraBase->cameraDevice->UpdateSettings(meta);
238 EXPECT_EQ(cameraBase->rc, Camera::NO_ERROR);
239 sleep(3); // update settings, AWB mode daylight for 3s.
240
241 // Post action of stream operation
242 cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW};
243 cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW};
244 cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds);
245 }
246
247 /**
248 * @tc.name: updateSettings AWB
249 * @tc.desc: Preview,updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_CLOUDY_DAYLIGHT, success.
250 * @tc.level: Level1
251 * @tc.size: MediumTest
252 * @tc.type: Function
253 */
TEST_F(UtestCamera3ATest,camera_3a_0007)254 TEST_F(UtestCamera3ATest, camera_3a_0007) // 3A mode reset
255 {
256 std::cout << "==========[test log] Preview,";
257 std::cout << "updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_CLOUDY_DAYLIGHT,";
258 std::cout << "success." << std::endl;
259 // Create and get streamOperator information
260 cameraBase->AchieveStreamOperator();
261 // Create data stream
262 cameraBase->intents = {PREVIEW};
263 cameraBase->StartStream(cameraBase->intents);
264 // Start capture
265 cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
266
267 // Issue 3A parameters
268 std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY_SIZE, DATA_CAPACITY_SIZE);
269 uint8_t awbMode = OHOS_CAMERA_AWB_MODE_CLOUDY_DAYLIGHT;
270 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
271 std::cout << "==========[test log] UpdateSettings, ";
272 std::cout << "awb mode: OHOS_CAMERA_AWB_MODE_CLOUDY_DAYLIGHT" << std::endl;
273 cameraBase->rc = cameraBase->cameraDevice->UpdateSettings(meta);
274 EXPECT_EQ(cameraBase->rc, Camera::NO_ERROR);
275
276 // Post action of stream operation
277 cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW};
278 cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW};
279 cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds);
280 }
281
282 /**
283 * @tc.name: updateSettings AWB
284 * @tc.desc: Preview,updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_WARM_FLUORESCENT, success.
285 * @tc.level: Level1
286 * @tc.size: MediumTest
287 * @tc.type: Function
288 */
TEST_F(UtestCamera3ATest,camera_3a_0008)289 TEST_F(UtestCamera3ATest, camera_3a_0008)
290 {
291 std::cout << "==========[test log] Preview,";
292 std::cout << "updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_TWILIGHT, ";
293 std::cout << "success." << std::endl;
294 EXPECT_EQ(true, cameraBase->cameraDevice != nullptr);
295 // Get the stream manager
296 cameraBase->AchieveStreamOperator();
297 // Configure stream information
298 // start stream
299 cameraBase->intents = {PREVIEW, STILL_CAPTURE};
300 cameraBase->StartStream(cameraBase->intents);
301 // Get preview
302 cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
303 cameraBase->StartCapture(cameraBase->STREAM_ID_CAPTURE, cameraBase->CAPTURE_ID_CAPTURE, false, true);
304
305 // Issue 3A parameters
306 std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY_SIZE, DATA_CAPACITY_SIZE);
307 uint8_t awbMode = OHOS_CAMERA_AWB_MODE_TWILIGHT;
308 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
309 std::cout << "==========[test log] UpdateSettings, awb mode: OHOS_CAMERA_AWB_MODE_TWILIGHT" << std::endl;
310 cameraBase->rc = cameraBase->cameraDevice->UpdateSettings(meta);
311 EXPECT_EQ(cameraBase->rc, Camera::NO_ERROR);
312
313 // release stream
314 cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW, cameraBase->CAPTURE_ID_CAPTURE};
315 cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW, cameraBase->STREAM_ID_CAPTURE};
316 cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds);
317 }
318
319 /**
320 * @tc.name: updateSettings AWB
321 * @tc.desc: Preview,updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_WARM_FLUORESCENT, success.
322 * @tc.level: Level1
323 * @tc.size: MediumTest
324 * @tc.type: Function
325 */
TEST_F(UtestCamera3ATest,camera_3a_0009)326 TEST_F(UtestCamera3ATest, camera_3a_0009) // 3A mode white balance yellow scene
327 {
328 std::cout << "==========[test log] Preview,";
329 std::cout << "updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_SHADE, success." << std::endl;
330 // Create and get streamOperator information
331 cameraBase->AchieveStreamOperator();
332 // Create data stream
333 cameraBase->intents = {PREVIEW};
334 cameraBase->StartStream(cameraBase->intents);
335 // Start capture
336 cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
337
338 // Issue 3A parameters
339 std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY_SIZE, DATA_CAPACITY_SIZE);
340 uint8_t awbMode = OHOS_CAMERA_AWB_MODE_SHADE;
341 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
342 std::cout << "==========[test log] UpdateSettings, awb mode: OHOS_CAMERA_AWB_MODE_SHADE" << std::endl;
343 cameraBase->rc = cameraBase->cameraDevice->UpdateSettings(meta);
344 EXPECT_EQ(cameraBase->rc, Camera::NO_ERROR);
345
346 // Post action of stream operation
347 cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW};
348 cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW};
349 cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds);
350 }
351
352 /**
353 * @tc.name: updateSettings AWB
354 * @tc.desc: Preview,updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_OFF, success.
355 * @tc.level: Level1
356 * @tc.size: MediumTest
357 * @tc.type: Function
358 */
TEST_F(UtestCamera3ATest,camera_3a_0010)359 TEST_F(UtestCamera3ATest, camera_3a_0010)
360 {
361 std::cout << "==========[test log] Preview,";
362 std::cout << "updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_OFF, success." << std::endl;
363 EXPECT_EQ(true, cameraBase->cameraDevice != nullptr);
364 // Get the stream manager
365 cameraBase->AchieveStreamOperator();
366 // start stream
367 cameraBase->intents = {PREVIEW, STILL_CAPTURE};
368 cameraBase->StartStream(cameraBase->intents);
369 // Get preview
370 cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
371 cameraBase->StartCapture(cameraBase->STREAM_ID_CAPTURE, cameraBase->CAPTURE_ID_CAPTURE, false, true);
372
373 // Issue 3A parameters
374 std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY_SIZE, DATA_CAPACITY_SIZE);
375 uint8_t awbMode = OHOS_CAMERA_AWB_MODE_OFF;
376 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
377 std::cout << "==========[test log] UpdateSettings, awb mode: OHOS_CAMERA_AWB_MODE_OFF" << std::endl;
378 cameraBase->rc = cameraBase->cameraDevice->UpdateSettings(meta);
379 EXPECT_EQ(cameraBase->rc, Camera::NO_ERROR);
380
381 // release stream
382 cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW, cameraBase->CAPTURE_ID_CAPTURE};
383 cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW, cameraBase->STREAM_ID_CAPTURE};
384 cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds);
385 }
386
387 /**
388 * @tc.name: updateSettings reset
389 * @tc.desc: Preview set 3A, then close device, and preview, 3A is reset.
390 * @tc.level: Level1
391 * @tc.size: MediumTest
392 * @tc.type: Function
393 */
TEST_F(UtestCamera3ATest,camera_3a_0030)394 TEST_F(UtestCamera3ATest, camera_3a_0030)
395 {
396 std::cout << "==========[test log] Preview set 3A, then close device, and preview, 3A is reset." << std::endl;
397 std::cout << "==========[test log] The 1st time set 3A." << std::endl;
398 // Create and get streamOperator information
399 cameraBase->AchieveStreamOperator();
400 // Create data stream
401 cameraBase->intents = {PREVIEW};
402 cameraBase->StartStream(cameraBase->intents);
403 // Start capture
404 cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
405 // Issue 3A parameters
406 std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY_SIZE, DATA_CAPACITY_SIZE);
407 int32_t expo = 0xa0;
408 meta->addEntry(OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, &expo, 1);
409 cameraBase->rc = cameraBase->cameraDevice->UpdateSettings(meta);
410 EXPECT_EQ(cameraBase->rc, Camera::NO_ERROR);
411 std::cout << "==========[test log] UpdateSettings, exposure for 3s." << std::endl;
412 sleep(3); // update settings, exposure for 3s
413 // Post action of stream operation
414 cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW};
415 cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW};
416 cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds);
417
418 // Turn off the device
419 cameraBase->Close();
420 std::cout << "cameraDevice->Close" << std::endl;
421 std::cout << "==========[test log] Close device, and preview, 3A is reset." << std::endl;
422 cameraBase->Init();
423 // Get the stream manager
424 cameraBase->AchieveStreamOperator();
425 // start stream
426 cameraBase->intents = {PREVIEW};
427 cameraBase->StartStream(cameraBase->intents);
428 // Get preview
429 cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
430 // release stream
431 cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW};
432 cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW};
433 cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds);
434 }
435
436 /**
437 * @tc.name: updateSettings different 3A params
438 * @tc.desc: Preview, updatesetting different 3A params together.
439 * @tc.level: Level1
440 * @tc.size: MediumTest
441 * @tc.type: Function
442 */
TEST_F(UtestCamera3ATest,camera_3a_0031)443 TEST_F(UtestCamera3ATest, camera_3a_0031) // 3A mode white balance green scene
444 {
445 std::cout << "==========[test log] Preview, updatesetting different 3A params together." << std::endl;
446 EXPECT_EQ(true, cameraBase->cameraDevice != nullptr);
447 // Get the stream manager
448 cameraBase->AchieveStreamOperator();
449 // start stream
450 cameraBase->intents = {PREVIEW, STILL_CAPTURE};
451 cameraBase->StartStream(cameraBase->intents);
452 // Get preview
453 cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
454 cameraBase->StartCapture(cameraBase->STREAM_ID_CAPTURE, cameraBase->CAPTURE_ID_CAPTURE, false, true);
455 // Issue 3A parameters
456 std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY_SIZE, DATA_CAPACITY_SIZE);
457 int32_t expo = 0xa0;
458 meta->addEntry(OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, &expo, 1);
459 uint8_t awbMode = OHOS_CAMERA_AWB_MODE_TWILIGHT;
460 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
461 cameraBase->rc = cameraBase->cameraDevice->UpdateSettings(meta);
462 EXPECT_EQ(cameraBase->rc, Camera::NO_ERROR);
463 std::cout << "==========[test log] UpdateSettings, exposure for 10s." << std::endl;
464 sleep(3); // update settings, exposure for 3s
465 // release stream
466 cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW, cameraBase->CAPTURE_ID_CAPTURE};
467 cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW, cameraBase->STREAM_ID_CAPTURE};
468 cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds);
469 }
470
471 /**
472 * @tc.name: updateSettings AE
473 * @tc.desc: UpdateSettings-OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, success.
474 * @tc.level: Level1
475 * @tc.size: MediumTest
476 * @tc.type: Function
477 */
TEST_F(UtestCamera3ATest,camera_3a_0040)478 TEST_F(UtestCamera3ATest, camera_3a_0040)
479 {
480 std::cout << "UpdateSettings-OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, success." << std::endl;
481 EXPECT_EQ(true, cameraBase->cameraDevice != nullptr);
482 // Get the stream manager
483 cameraBase->AchieveStreamOperator();
484 // start stream
485 cameraBase->intents = {PREVIEW, STILL_CAPTURE};
486 cameraBase->StartStream(cameraBase->intents);
487 // Get preview
488 cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
489 cameraBase->StartCapture(cameraBase->STREAM_ID_CAPTURE, cameraBase->CAPTURE_ID_CAPTURE, false, true);
490
491 // Issue 3A parameters
492 std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY_SIZE, DATA_CAPACITY_SIZE);
493 int32_t expo = 0xa0;
494 meta->addEntry(OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, &expo, 1);
495 cameraBase->rc = cameraBase->cameraDevice->UpdateSettings(meta);
496 EXPECT_EQ(cameraBase->rc, Camera::NO_ERROR);
497 sleep(3); // waiting resource release for 3s.
498 }
499
500 /**
501 * @tc.name: updateSettings AWB without preview
502 * @tc.desc: UpdateSettings-OHOS_CAMERA_AWB_MODE, without preview, success.
503 * @tc.level: Level1
504 * @tc.size: MediumTest
505 * @tc.type: Function
506 */
TEST_F(UtestCamera3ATest,camera_3a_0041)507 TEST_F(UtestCamera3ATest, camera_3a_0041)
508 {
509 std::cout << "UpdateSettings-OHOS_CAMERA_AWB_MODE, success." << std::endl;
510
511 // Issue 3A parameters
512 std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY_SIZE, DATA_CAPACITY_SIZE);
513 uint8_t awbMode = OHOS_CAMERA_AWB_MODE_AUTO;
514 meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
515 EXPECT_EQ(cameraBase->cameraDevice->UpdateSettings(meta), Camera::NO_ERROR);
516 }
517