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