• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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