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
18constexpr int ITEM_CAPACITY_SIZE = 100;
19constexpr int DATA_CAPACITY_SIZE = 2000;
20
21void UtestCamera3ATest::SetUpTestCase(void)
22{}
23void UtestCamera3ATest::TearDownTestCase(void)
24{}
25void UtestCamera3ATest::SetUp(void)
26{
27    if (cameraBase == nullptr)
28    cameraBase = std::make_shared<TestCameraBase>();
29    cameraBase->FBInit();
30    cameraBase->Init();
31}
32void 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  */
44TEST_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  */
77TEST_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  */
113TEST_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  */
146TEST_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  */
181TEST_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  */
215TEST_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  */
248TEST_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  */
282TEST_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  */
318TEST_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  */
350TEST_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  */
384TEST_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  */
432TEST_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  */
466TEST_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  */
494TEST_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}