1094332d3Sopenharmony_ci/*
2094332d3Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd.
3094332d3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4094332d3Sopenharmony_ci * you may not use this file expected in compliance with the License.
5094332d3Sopenharmony_ci * You may obtain a copy of the License at
6094332d3Sopenharmony_ci *
7094332d3Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8094332d3Sopenharmony_ci *
9094332d3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10094332d3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11094332d3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12094332d3Sopenharmony_ci * See the License for the specific language governing permissions and
13094332d3Sopenharmony_ci * limitations under the License.
14094332d3Sopenharmony_ci */
15094332d3Sopenharmony_ci
16094332d3Sopenharmony_ci#include "camera_3a_test.h"
17094332d3Sopenharmony_ci
18094332d3Sopenharmony_ciconstexpr int ITEM_CAPACITY_SIZE = 100;
19094332d3Sopenharmony_ciconstexpr int DATA_CAPACITY_SIZE = 2000;
20094332d3Sopenharmony_ci
21094332d3Sopenharmony_civoid UtestCamera3ATest::SetUpTestCase(void)
22094332d3Sopenharmony_ci{}
23094332d3Sopenharmony_civoid UtestCamera3ATest::TearDownTestCase(void)
24094332d3Sopenharmony_ci{}
25094332d3Sopenharmony_civoid UtestCamera3ATest::SetUp(void)
26094332d3Sopenharmony_ci{
27094332d3Sopenharmony_ci    if (cameraBase == nullptr)
28094332d3Sopenharmony_ci    cameraBase = std::make_shared<TestCameraBase>();
29094332d3Sopenharmony_ci    cameraBase->FBInit();
30094332d3Sopenharmony_ci    cameraBase->Init();
31094332d3Sopenharmony_ci}
32094332d3Sopenharmony_civoid UtestCamera3ATest::TearDown(void)
33094332d3Sopenharmony_ci{
34094332d3Sopenharmony_ci    cameraBase->Close();
35094332d3Sopenharmony_ci}
36094332d3Sopenharmony_ci
37094332d3Sopenharmony_ci/**
38094332d3Sopenharmony_ci  * @tc.name: updateSettings AE
39094332d3Sopenharmony_ci  * @tc.desc: Preview,updateSettings OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, success.
40094332d3Sopenharmony_ci  * @tc.level: Level0
41094332d3Sopenharmony_ci  * @tc.size: MediumTest
42094332d3Sopenharmony_ci  * @tc.type: Function
43094332d3Sopenharmony_ci  */
44094332d3Sopenharmony_ciTEST_F(UtestCamera3ATest, camera_3a_0001)
45094332d3Sopenharmony_ci{
46094332d3Sopenharmony_ci    std::cout << "==========[test log] Preview,";
47094332d3Sopenharmony_ci    std::cout << "then UpdateSettings OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, success." << std::endl;
48094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase->cameraDevice != nullptr);
49094332d3Sopenharmony_ci    // Get the stream manager
50094332d3Sopenharmony_ci    cameraBase->AchieveStreamOperator();
51094332d3Sopenharmony_ci    // Configure preview stream information
52094332d3Sopenharmony_ci    cameraBase->intents = {PREVIEW};
53094332d3Sopenharmony_ci    cameraBase->StartStream(cameraBase->intents);
54094332d3Sopenharmony_ci    // Start capture
55094332d3Sopenharmony_ci    cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
56094332d3Sopenharmony_ci    // Issue 3A parameters
57094332d3Sopenharmony_ci    std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY_SIZE, DATA_CAPACITY_SIZE);
58094332d3Sopenharmony_ci    int32_t expo = 0xa0;
59094332d3Sopenharmony_ci    meta->addEntry(OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, &expo, 1);
60094332d3Sopenharmony_ci    cameraBase->cameraDevice->UpdateSettings(meta);
61094332d3Sopenharmony_ci    std::cout << "==========[test log] UpdateSettings, exposure for 10s." << std::endl;
62094332d3Sopenharmony_ci    sleep(3); // update settings, exposure for 3s
63094332d3Sopenharmony_ci
64094332d3Sopenharmony_ci    // Post action of stream operation
65094332d3Sopenharmony_ci    cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW};
66094332d3Sopenharmony_ci    cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW};
67094332d3Sopenharmony_ci    cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds);
68094332d3Sopenharmony_ci}
69094332d3Sopenharmony_ci
70094332d3Sopenharmony_ci/**
71094332d3Sopenharmony_ci  * @tc.name: updateSettings AWB
72094332d3Sopenharmony_ci  * @tc.desc: Preview,updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_AUTO, success.
73094332d3Sopenharmony_ci  * @tc.level: Level1
74094332d3Sopenharmony_ci  * @tc.size: MediumTest
75094332d3Sopenharmony_ci  * @tc.type: Function
76094332d3Sopenharmony_ci  */
77094332d3Sopenharmony_ciTEST_F(UtestCamera3ATest, camera_3a_0002)
78094332d3Sopenharmony_ci{
79094332d3Sopenharmony_ci    std::cout << "==========[test log] Preview,";
80094332d3Sopenharmony_ci    std::cout << "updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_AUTO, success." << std::endl;
81094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase->cameraDevice != nullptr);
82094332d3Sopenharmony_ci    // Get the stream manager
83094332d3Sopenharmony_ci    cameraBase->AchieveStreamOperator();
84094332d3Sopenharmony_ci    // Configure stream information
85094332d3Sopenharmony_ci    // start stream
86094332d3Sopenharmony_ci    cameraBase->intents = {PREVIEW, STILL_CAPTURE};
87094332d3Sopenharmony_ci    cameraBase->StartStream(cameraBase->intents);
88094332d3Sopenharmony_ci    // Get preview
89094332d3Sopenharmony_ci    cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
90094332d3Sopenharmony_ci    cameraBase->StartCapture(cameraBase->STREAM_ID_CAPTURE, cameraBase->CAPTURE_ID_CAPTURE, false, true);
91094332d3Sopenharmony_ci
92094332d3Sopenharmony_ci    // Issue 3A parameters
93094332d3Sopenharmony_ci    std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY_SIZE, DATA_CAPACITY_SIZE);
94094332d3Sopenharmony_ci    uint8_t awbMode = OHOS_CAMERA_AWB_MODE_AUTO;
95094332d3Sopenharmony_ci    meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
96094332d3Sopenharmony_ci    std::cout << "==========[test log] UpdateSettings, awb mode: OHOS_CAMERA_AWB_MODE_AUTO." << std::endl;
97094332d3Sopenharmony_ci    cameraBase->cameraDevice->UpdateSettings(meta);
98094332d3Sopenharmony_ci    sleep(2); // update settings, AWB mode auto for 2s.
99094332d3Sopenharmony_ci
100094332d3Sopenharmony_ci    // release stream
101094332d3Sopenharmony_ci    cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW, cameraBase->CAPTURE_ID_CAPTURE};
102094332d3Sopenharmony_ci    cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW, cameraBase->STREAM_ID_CAPTURE};
103094332d3Sopenharmony_ci    cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds);
104094332d3Sopenharmony_ci}
105094332d3Sopenharmony_ci
106094332d3Sopenharmony_ci/**
107094332d3Sopenharmony_ci  * @tc.name: updateSettings AWB
108094332d3Sopenharmony_ci  * @tc.desc: Preview,updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_INCANDESCENT, success.
109094332d3Sopenharmony_ci  * @tc.level: Level1
110094332d3Sopenharmony_ci  * @tc.size: MediumTest
111094332d3Sopenharmony_ci  * @tc.type: Function
112094332d3Sopenharmony_ci  */
113094332d3Sopenharmony_ciTEST_F(UtestCamera3ATest, camera_3a_0003)
114094332d3Sopenharmony_ci{
115094332d3Sopenharmony_ci    std::cout << "==========[test log] Preview,";
116094332d3Sopenharmony_ci    std::cout << "updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_INCANDESCENT, success." << std::endl;
117094332d3Sopenharmony_ci    // Create and get streamOperator information
118094332d3Sopenharmony_ci    cameraBase->AchieveStreamOperator();
119094332d3Sopenharmony_ci    // start stream
120094332d3Sopenharmony_ci    cameraBase->intents = {PREVIEW};
121094332d3Sopenharmony_ci    cameraBase->StartStream(cameraBase->intents);
122094332d3Sopenharmony_ci    // Start capture
123094332d3Sopenharmony_ci    cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
124094332d3Sopenharmony_ci
125094332d3Sopenharmony_ci    // Issue 3A parameters
126094332d3Sopenharmony_ci    std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY_SIZE, DATA_CAPACITY_SIZE);
127094332d3Sopenharmony_ci    uint8_t awbMode = OHOS_CAMERA_AWB_MODE_INCANDESCENT;
128094332d3Sopenharmony_ci    meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
129094332d3Sopenharmony_ci    std::cout << "==========[test log] UpdateSettings,";
130094332d3Sopenharmony_ci    std::cout << "awb mode: OHOS_CAMERA_AWB_MODE_INCANDESCENT" << std::endl;
131094332d3Sopenharmony_ci    cameraBase->cameraDevice->UpdateSettings(meta);
132094332d3Sopenharmony_ci
133094332d3Sopenharmony_ci    // Post action of stream operation
134094332d3Sopenharmony_ci    cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW};
135094332d3Sopenharmony_ci    cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW};
136094332d3Sopenharmony_ci    cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds);
137094332d3Sopenharmony_ci}
138094332d3Sopenharmony_ci
139094332d3Sopenharmony_ci/**
140094332d3Sopenharmony_ci  * @tc.name: updateSettings AWB
141094332d3Sopenharmony_ci  * @tc.desc: Preview,updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_FLUORESCENT, success.
142094332d3Sopenharmony_ci  * @tc.level: Level1
143094332d3Sopenharmony_ci  * @tc.size: MediumTest
144094332d3Sopenharmony_ci  * @tc.type: Function
145094332d3Sopenharmony_ci  */
146094332d3Sopenharmony_ciTEST_F(UtestCamera3ATest, camera_3a_0004) // 3A mode white balance blue scene
147094332d3Sopenharmony_ci{
148094332d3Sopenharmony_ci    std::cout << "==========[test log] Preview,";
149094332d3Sopenharmony_ci    std::cout << "updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_FLUORESCENT, success." << std::endl;
150094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase->cameraDevice != nullptr);
151094332d3Sopenharmony_ci    // Get the stream manager
152094332d3Sopenharmony_ci    cameraBase->AchieveStreamOperator();
153094332d3Sopenharmony_ci    // Configure stream information
154094332d3Sopenharmony_ci    cameraBase->intents = {PREVIEW, STILL_CAPTURE};
155094332d3Sopenharmony_ci    cameraBase->StartStream(cameraBase->intents);
156094332d3Sopenharmony_ci    // Get preview
157094332d3Sopenharmony_ci    cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
158094332d3Sopenharmony_ci    cameraBase->StartCapture(cameraBase->STREAM_ID_CAPTURE, cameraBase->CAPTURE_ID_CAPTURE, false, true);
159094332d3Sopenharmony_ci
160094332d3Sopenharmony_ci    // Issue 3A parameters
161094332d3Sopenharmony_ci    std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY_SIZE, DATA_CAPACITY_SIZE);
162094332d3Sopenharmony_ci    uint8_t awbMode =  AWB_MODE_WARM_FLUORESCENT;
163094332d3Sopenharmony_ci    meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
164094332d3Sopenharmony_ci    std::cout << "==========[test log] UpdateSettings, awb mode: OHOS_CAMERA_AWB_MODE_AUTO." << std::endl;
165094332d3Sopenharmony_ci    cameraBase->cameraDevice->UpdateSettings(meta);
166094332d3Sopenharmony_ci    sleep(2); // update settings, AWB mode auto for 2s.
167094332d3Sopenharmony_ci
168094332d3Sopenharmony_ci    // release stream
169094332d3Sopenharmony_ci    cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW, cameraBase->CAPTURE_ID_CAPTURE};
170094332d3Sopenharmony_ci    cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW, cameraBase->STREAM_ID_CAPTURE};
171094332d3Sopenharmony_ci    cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds);
172094332d3Sopenharmony_ci}
173094332d3Sopenharmony_ci
174094332d3Sopenharmony_ci/**
175094332d3Sopenharmony_ci  * @tc.name: updateSettings AWB
176094332d3Sopenharmony_ci  * @tc.desc: Preview,updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_WARM_FLUORESCENT, success.
177094332d3Sopenharmony_ci  * @tc.level: Level1
178094332d3Sopenharmony_ci  * @tc.size: MediumTest
179094332d3Sopenharmony_ci  * @tc.type: Function
180094332d3Sopenharmony_ci  */
181094332d3Sopenharmony_ciTEST_F(UtestCamera3ATest, camera_3a_0005)
182094332d3Sopenharmony_ci{
183094332d3Sopenharmony_ci    std::cout << "==========[test log] Preview,";
184094332d3Sopenharmony_ci    std::cout << "updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_WARM_FLUORESCENT, ";
185094332d3Sopenharmony_ci    std::cout << "success." << std::endl;
186094332d3Sopenharmony_ci    // Create and get streamOperator information
187094332d3Sopenharmony_ci    cameraBase->AchieveStreamOperator();
188094332d3Sopenharmony_ci    // Create data stream
189094332d3Sopenharmony_ci    cameraBase->intents = {PREVIEW};
190094332d3Sopenharmony_ci    cameraBase->StartStream(cameraBase->intents);
191094332d3Sopenharmony_ci    // Start capture
192094332d3Sopenharmony_ci    cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
193094332d3Sopenharmony_ci
194094332d3Sopenharmony_ci    // Issue 3A parameters
195094332d3Sopenharmony_ci    std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY_SIZE, DATA_CAPACITY_SIZE);
196094332d3Sopenharmony_ci    uint8_t awbMode = OHOS_CAMERA_AWB_MODE_WARM_FLUORESCENT;
197094332d3Sopenharmony_ci    meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
198094332d3Sopenharmony_ci    std::cout << "==========[test log] UpdateSettings, ";
199094332d3Sopenharmony_ci    std::cout << "awb mode: OHOS_CAMERA_AWB_MODE_WARM_FLUORESCENT" << std::endl;
200094332d3Sopenharmony_ci    cameraBase->cameraDevice->UpdateSettings(meta);
201094332d3Sopenharmony_ci
202094332d3Sopenharmony_ci    // Post action of stream operation
203094332d3Sopenharmony_ci    cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW};
204094332d3Sopenharmony_ci    cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW};
205094332d3Sopenharmony_ci    cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds);
206094332d3Sopenharmony_ci}
207094332d3Sopenharmony_ci
208094332d3Sopenharmony_ci/**
209094332d3Sopenharmony_ci  * @tc.name: updateSettings AWB
210094332d3Sopenharmony_ci  * @tc.desc: Preview,updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_DAYLIGHT, success.
211094332d3Sopenharmony_ci  * @tc.level: Level1
212094332d3Sopenharmony_ci  * @tc.size: MediumTest
213094332d3Sopenharmony_ci  * @tc.type: Function
214094332d3Sopenharmony_ci  */
215094332d3Sopenharmony_ciTEST_F(UtestCamera3ATest, camera_3a_0006)
216094332d3Sopenharmony_ci{
217094332d3Sopenharmony_ci    std::cout << "==========[test log] Preview, ";
218094332d3Sopenharmony_ci    std::cout << "updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_DAYLIGHT, success." << std::endl;
219094332d3Sopenharmony_ci    // Create and get streamOperator information
220094332d3Sopenharmony_ci    cameraBase->AchieveStreamOperator();
221094332d3Sopenharmony_ci    // Create data stream
222094332d3Sopenharmony_ci    cameraBase->intents = {PREVIEW};
223094332d3Sopenharmony_ci    cameraBase->StartStream(cameraBase->intents);
224094332d3Sopenharmony_ci    // Start capture
225094332d3Sopenharmony_ci    cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
226094332d3Sopenharmony_ci
227094332d3Sopenharmony_ci    // Issue 3A parameters
228094332d3Sopenharmony_ci    std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY_SIZE, DATA_CAPACITY_SIZE);
229094332d3Sopenharmony_ci    uint8_t awbMode = OHOS_CAMERA_AWB_MODE_DAYLIGHT;
230094332d3Sopenharmony_ci    meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
231094332d3Sopenharmony_ci    std::cout << "==========[test log] UpdateSettings, awb mode: OHOS_CAMERA_AWB_MODE_DAYLIGHT" << std::endl;
232094332d3Sopenharmony_ci    cameraBase->cameraDevice->UpdateSettings(meta);
233094332d3Sopenharmony_ci    sleep(3); // update settings, AWB mode daylight for 3s.
234094332d3Sopenharmony_ci
235094332d3Sopenharmony_ci    // Post action of stream operation
236094332d3Sopenharmony_ci    cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW};
237094332d3Sopenharmony_ci    cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW};
238094332d3Sopenharmony_ci    cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds);
239094332d3Sopenharmony_ci}
240094332d3Sopenharmony_ci
241094332d3Sopenharmony_ci/**
242094332d3Sopenharmony_ci  * @tc.name: updateSettings AWB
243094332d3Sopenharmony_ci  * @tc.desc: Preview,updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_CLOUDY_DAYLIGHT, success.
244094332d3Sopenharmony_ci  * @tc.level: Level1
245094332d3Sopenharmony_ci  * @tc.size: MediumTest
246094332d3Sopenharmony_ci  * @tc.type: Function
247094332d3Sopenharmony_ci  */
248094332d3Sopenharmony_ciTEST_F(UtestCamera3ATest, camera_3a_0007) // 3A mode reset
249094332d3Sopenharmony_ci{
250094332d3Sopenharmony_ci    std::cout << "==========[test log] Preview,";
251094332d3Sopenharmony_ci    std::cout << "updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_CLOUDY_DAYLIGHT,";
252094332d3Sopenharmony_ci    std::cout << "success." << std::endl;
253094332d3Sopenharmony_ci    // Create and get streamOperator information
254094332d3Sopenharmony_ci    cameraBase->AchieveStreamOperator();
255094332d3Sopenharmony_ci    // Create data stream
256094332d3Sopenharmony_ci    cameraBase->intents = {PREVIEW};
257094332d3Sopenharmony_ci    cameraBase->StartStream(cameraBase->intents);
258094332d3Sopenharmony_ci    // Start capture
259094332d3Sopenharmony_ci    cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
260094332d3Sopenharmony_ci
261094332d3Sopenharmony_ci    // Issue 3A parameters
262094332d3Sopenharmony_ci    std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY_SIZE, DATA_CAPACITY_SIZE);
263094332d3Sopenharmony_ci    uint8_t awbMode = OHOS_CAMERA_AWB_MODE_CLOUDY_DAYLIGHT;
264094332d3Sopenharmony_ci    meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
265094332d3Sopenharmony_ci    std::cout << "==========[test log] UpdateSettings, ";
266094332d3Sopenharmony_ci    std::cout << "awb mode: OHOS_CAMERA_AWB_MODE_CLOUDY_DAYLIGHT" << std::endl;
267094332d3Sopenharmony_ci    cameraBase->cameraDevice->UpdateSettings(meta);
268094332d3Sopenharmony_ci
269094332d3Sopenharmony_ci    // Post action of stream operation
270094332d3Sopenharmony_ci    cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW};
271094332d3Sopenharmony_ci    cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW};
272094332d3Sopenharmony_ci    cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds);
273094332d3Sopenharmony_ci}
274094332d3Sopenharmony_ci
275094332d3Sopenharmony_ci/**
276094332d3Sopenharmony_ci  * @tc.name: updateSettings AWB
277094332d3Sopenharmony_ci  * @tc.desc: Preview,updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_WARM_FLUORESCENT, success.
278094332d3Sopenharmony_ci  * @tc.level: Level1
279094332d3Sopenharmony_ci  * @tc.size: MediumTest
280094332d3Sopenharmony_ci  * @tc.type: Function
281094332d3Sopenharmony_ci  */
282094332d3Sopenharmony_ciTEST_F(UtestCamera3ATest, camera_3a_0008)
283094332d3Sopenharmony_ci{
284094332d3Sopenharmony_ci    std::cout << "==========[test log] Preview,";
285094332d3Sopenharmony_ci    std::cout << "updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_TWILIGHT, ";
286094332d3Sopenharmony_ci    std::cout << "success." << std::endl;
287094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase->cameraDevice != nullptr);
288094332d3Sopenharmony_ci    // Get the stream manager
289094332d3Sopenharmony_ci    cameraBase->AchieveStreamOperator();
290094332d3Sopenharmony_ci    // Configure stream information
291094332d3Sopenharmony_ci    // start stream
292094332d3Sopenharmony_ci    cameraBase->intents = {PREVIEW, STILL_CAPTURE};
293094332d3Sopenharmony_ci    cameraBase->StartStream(cameraBase->intents);
294094332d3Sopenharmony_ci    // Get preview
295094332d3Sopenharmony_ci    cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
296094332d3Sopenharmony_ci    cameraBase->StartCapture(cameraBase->STREAM_ID_CAPTURE, cameraBase->CAPTURE_ID_CAPTURE, false, true);
297094332d3Sopenharmony_ci
298094332d3Sopenharmony_ci    // Issue 3A parameters
299094332d3Sopenharmony_ci    std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY_SIZE, DATA_CAPACITY_SIZE);
300094332d3Sopenharmony_ci    uint8_t awbMode = OHOS_CAMERA_AWB_MODE_TWILIGHT;
301094332d3Sopenharmony_ci    meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
302094332d3Sopenharmony_ci    std::cout << "==========[test log] UpdateSettings, awb mode: OHOS_CAMERA_AWB_MODE_TWILIGHT" << std::endl;
303094332d3Sopenharmony_ci    cameraBase->cameraDevice->UpdateSettings(meta);
304094332d3Sopenharmony_ci
305094332d3Sopenharmony_ci    // release stream
306094332d3Sopenharmony_ci    cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW, cameraBase->CAPTURE_ID_CAPTURE};
307094332d3Sopenharmony_ci    cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW, cameraBase->STREAM_ID_CAPTURE};
308094332d3Sopenharmony_ci    cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds);
309094332d3Sopenharmony_ci}
310094332d3Sopenharmony_ci
311094332d3Sopenharmony_ci/**
312094332d3Sopenharmony_ci  * @tc.name: updateSettings AWB
313094332d3Sopenharmony_ci  * @tc.desc: Preview,updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_WARM_FLUORESCENT, success.
314094332d3Sopenharmony_ci  * @tc.level: Level1
315094332d3Sopenharmony_ci  * @tc.size: MediumTest
316094332d3Sopenharmony_ci  * @tc.type: Function
317094332d3Sopenharmony_ci  */
318094332d3Sopenharmony_ciTEST_F(UtestCamera3ATest, camera_3a_0009) // 3A mode white balance yellow scene
319094332d3Sopenharmony_ci{
320094332d3Sopenharmony_ci    std::cout << "==========[test log] Preview,";
321094332d3Sopenharmony_ci    std::cout << "updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_SHADE, success." << std::endl;
322094332d3Sopenharmony_ci    // Create and get streamOperator information
323094332d3Sopenharmony_ci    cameraBase->AchieveStreamOperator();
324094332d3Sopenharmony_ci    // Create data stream
325094332d3Sopenharmony_ci    cameraBase->intents = {PREVIEW};
326094332d3Sopenharmony_ci    cameraBase->StartStream(cameraBase->intents);
327094332d3Sopenharmony_ci    // Start capture
328094332d3Sopenharmony_ci    cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
329094332d3Sopenharmony_ci
330094332d3Sopenharmony_ci    // Issue 3A parameters
331094332d3Sopenharmony_ci    std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY_SIZE, DATA_CAPACITY_SIZE);
332094332d3Sopenharmony_ci    uint8_t awbMode = OHOS_CAMERA_AWB_MODE_SHADE;
333094332d3Sopenharmony_ci    meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
334094332d3Sopenharmony_ci    std::cout << "==========[test log] UpdateSettings, awb mode: OHOS_CAMERA_AWB_MODE_SHADE" << std::endl;
335094332d3Sopenharmony_ci    cameraBase->cameraDevice->UpdateSettings(meta);
336094332d3Sopenharmony_ci
337094332d3Sopenharmony_ci    // Post action of stream operation
338094332d3Sopenharmony_ci    cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW};
339094332d3Sopenharmony_ci    cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW};
340094332d3Sopenharmony_ci    cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds);
341094332d3Sopenharmony_ci}
342094332d3Sopenharmony_ci
343094332d3Sopenharmony_ci/**
344094332d3Sopenharmony_ci  * @tc.name: updateSettings AWB
345094332d3Sopenharmony_ci  * @tc.desc: Preview,updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_OFF, success.
346094332d3Sopenharmony_ci  * @tc.level: Level1
347094332d3Sopenharmony_ci  * @tc.size: MediumTest
348094332d3Sopenharmony_ci  * @tc.type: Function
349094332d3Sopenharmony_ci  */
350094332d3Sopenharmony_ciTEST_F(UtestCamera3ATest, camera_3a_0010)
351094332d3Sopenharmony_ci{
352094332d3Sopenharmony_ci    std::cout << "==========[test log] Preview,";
353094332d3Sopenharmony_ci    std::cout << "updateSettings OHOS_CAMERA_AWB_MODE-OHOS_CAMERA_AWB_MODE_OFF, success." << std::endl;
354094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase->cameraDevice != nullptr);
355094332d3Sopenharmony_ci    // Get the stream manager
356094332d3Sopenharmony_ci    cameraBase->AchieveStreamOperator();
357094332d3Sopenharmony_ci    // start stream
358094332d3Sopenharmony_ci    cameraBase->intents = {PREVIEW, STILL_CAPTURE};
359094332d3Sopenharmony_ci    cameraBase->StartStream(cameraBase->intents);
360094332d3Sopenharmony_ci    // Get preview
361094332d3Sopenharmony_ci    cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
362094332d3Sopenharmony_ci    cameraBase->StartCapture(cameraBase->STREAM_ID_CAPTURE, cameraBase->CAPTURE_ID_CAPTURE, false, true);
363094332d3Sopenharmony_ci
364094332d3Sopenharmony_ci    // Issue 3A parameters
365094332d3Sopenharmony_ci    std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY_SIZE, DATA_CAPACITY_SIZE);
366094332d3Sopenharmony_ci    uint8_t awbMode = OHOS_CAMERA_AWB_MODE_OFF;
367094332d3Sopenharmony_ci    meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
368094332d3Sopenharmony_ci    std::cout << "==========[test log] UpdateSettings, awb mode: OHOS_CAMERA_AWB_MODE_OFF" << std::endl;
369094332d3Sopenharmony_ci    cameraBase->cameraDevice->UpdateSettings(meta);
370094332d3Sopenharmony_ci
371094332d3Sopenharmony_ci    // release stream
372094332d3Sopenharmony_ci    cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW, cameraBase->CAPTURE_ID_CAPTURE};
373094332d3Sopenharmony_ci    cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW, cameraBase->STREAM_ID_CAPTURE};
374094332d3Sopenharmony_ci    cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds);
375094332d3Sopenharmony_ci}
376094332d3Sopenharmony_ci
377094332d3Sopenharmony_ci/**
378094332d3Sopenharmony_ci  * @tc.name: updateSettings reset
379094332d3Sopenharmony_ci  * @tc.desc: Preview set 3A, then close device, and preview, 3A is reset.
380094332d3Sopenharmony_ci  * @tc.level: Level1
381094332d3Sopenharmony_ci  * @tc.size: MediumTest
382094332d3Sopenharmony_ci  * @tc.type: Function
383094332d3Sopenharmony_ci  */
384094332d3Sopenharmony_ciTEST_F(UtestCamera3ATest, camera_3a_0030)
385094332d3Sopenharmony_ci{
386094332d3Sopenharmony_ci    std::cout << "==========[test log] Preview set 3A, then close device, and preview, 3A is reset." << std::endl;
387094332d3Sopenharmony_ci    std::cout << "==========[test log] The 1st time set 3A." << std::endl;
388094332d3Sopenharmony_ci    // Create and get streamOperator information
389094332d3Sopenharmony_ci    cameraBase->AchieveStreamOperator();
390094332d3Sopenharmony_ci    // Create data stream
391094332d3Sopenharmony_ci    cameraBase->intents = {PREVIEW};
392094332d3Sopenharmony_ci    cameraBase->StartStream(cameraBase->intents);
393094332d3Sopenharmony_ci    // Start capture
394094332d3Sopenharmony_ci    cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
395094332d3Sopenharmony_ci    // Issue 3A parameters
396094332d3Sopenharmony_ci    std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY_SIZE, DATA_CAPACITY_SIZE);
397094332d3Sopenharmony_ci    int32_t expo = 0xa0;
398094332d3Sopenharmony_ci    meta->addEntry(OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, &expo, 1);
399094332d3Sopenharmony_ci    cameraBase->cameraDevice->UpdateSettings(meta);
400094332d3Sopenharmony_ci    std::cout << "==========[test log] UpdateSettings, exposure for 3s." << std::endl;
401094332d3Sopenharmony_ci    sleep(3);  // update settings, exposure for 3s
402094332d3Sopenharmony_ci    // Post action of stream operation
403094332d3Sopenharmony_ci    cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW};
404094332d3Sopenharmony_ci    cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW};
405094332d3Sopenharmony_ci    cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds);
406094332d3Sopenharmony_ci
407094332d3Sopenharmony_ci    // Turn off the device
408094332d3Sopenharmony_ci    cameraBase->Close();
409094332d3Sopenharmony_ci    std::cout << "cameraDevice->Close" << std::endl;
410094332d3Sopenharmony_ci    std::cout << "==========[test log] Close device, and preview, 3A is reset." << std::endl;
411094332d3Sopenharmony_ci    cameraBase->Init();
412094332d3Sopenharmony_ci    // Get the stream manager
413094332d3Sopenharmony_ci    cameraBase->AchieveStreamOperator();
414094332d3Sopenharmony_ci    // start stream
415094332d3Sopenharmony_ci    cameraBase->intents = {PREVIEW};
416094332d3Sopenharmony_ci    cameraBase->StartStream(cameraBase->intents);
417094332d3Sopenharmony_ci    // Get preview
418094332d3Sopenharmony_ci    cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
419094332d3Sopenharmony_ci    // release stream
420094332d3Sopenharmony_ci    cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW};
421094332d3Sopenharmony_ci    cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW};
422094332d3Sopenharmony_ci    cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds);
423094332d3Sopenharmony_ci}
424094332d3Sopenharmony_ci
425094332d3Sopenharmony_ci/**
426094332d3Sopenharmony_ci  * @tc.name: updateSettings different 3A params
427094332d3Sopenharmony_ci  * @tc.desc: Preview, updatesetting different 3A params together.
428094332d3Sopenharmony_ci  * @tc.level: Level1
429094332d3Sopenharmony_ci  * @tc.size: MediumTest
430094332d3Sopenharmony_ci  * @tc.type: Function
431094332d3Sopenharmony_ci  */
432094332d3Sopenharmony_ciTEST_F(UtestCamera3ATest, camera_3a_0031) // 3A mode white balance green scene
433094332d3Sopenharmony_ci{
434094332d3Sopenharmony_ci    std::cout << "==========[test log] Preview, updatesetting different 3A params together." << std::endl;
435094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase->cameraDevice != nullptr);
436094332d3Sopenharmony_ci    // Get the stream manager
437094332d3Sopenharmony_ci    cameraBase->AchieveStreamOperator();
438094332d3Sopenharmony_ci    // start stream
439094332d3Sopenharmony_ci    cameraBase->intents = {PREVIEW, STILL_CAPTURE};
440094332d3Sopenharmony_ci    cameraBase->StartStream(cameraBase->intents);
441094332d3Sopenharmony_ci    // Get preview
442094332d3Sopenharmony_ci    cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
443094332d3Sopenharmony_ci    cameraBase->StartCapture(cameraBase->STREAM_ID_CAPTURE, cameraBase->CAPTURE_ID_CAPTURE, false, true);
444094332d3Sopenharmony_ci    // Issue 3A parameters
445094332d3Sopenharmony_ci    std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY_SIZE, DATA_CAPACITY_SIZE);
446094332d3Sopenharmony_ci    int32_t expo = 0xa0;
447094332d3Sopenharmony_ci    meta->addEntry(OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, &expo, 1);
448094332d3Sopenharmony_ci    uint8_t awbMode = OHOS_CAMERA_AWB_MODE_TWILIGHT;
449094332d3Sopenharmony_ci    meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
450094332d3Sopenharmony_ci    cameraBase->cameraDevice->UpdateSettings(meta);
451094332d3Sopenharmony_ci    std::cout << "==========[test log] UpdateSettings, exposure for 10s." << std::endl;
452094332d3Sopenharmony_ci    sleep(3); // update settings, exposure for 3s
453094332d3Sopenharmony_ci    // release stream
454094332d3Sopenharmony_ci    cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW, cameraBase->CAPTURE_ID_CAPTURE};
455094332d3Sopenharmony_ci    cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW, cameraBase->STREAM_ID_CAPTURE};
456094332d3Sopenharmony_ci    cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds);
457094332d3Sopenharmony_ci}
458094332d3Sopenharmony_ci
459094332d3Sopenharmony_ci/**
460094332d3Sopenharmony_ci  * @tc.name: updateSettings AE
461094332d3Sopenharmony_ci  * @tc.desc: UpdateSettings-OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, success.
462094332d3Sopenharmony_ci  * @tc.level: Level1
463094332d3Sopenharmony_ci  * @tc.size: MediumTest
464094332d3Sopenharmony_ci  * @tc.type: Function
465094332d3Sopenharmony_ci  */
466094332d3Sopenharmony_ciTEST_F(UtestCamera3ATest, camera_3a_0040)
467094332d3Sopenharmony_ci{
468094332d3Sopenharmony_ci    std::cout << "UpdateSettings-OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, success." << std::endl;
469094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase->cameraDevice != nullptr);
470094332d3Sopenharmony_ci    // Get the stream manager
471094332d3Sopenharmony_ci    cameraBase->AchieveStreamOperator();
472094332d3Sopenharmony_ci    // start stream
473094332d3Sopenharmony_ci    cameraBase->intents = {PREVIEW, STILL_CAPTURE};
474094332d3Sopenharmony_ci    cameraBase->StartStream(cameraBase->intents);
475094332d3Sopenharmony_ci    // Get preview
476094332d3Sopenharmony_ci    cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
477094332d3Sopenharmony_ci    cameraBase->StartCapture(cameraBase->STREAM_ID_CAPTURE, cameraBase->CAPTURE_ID_CAPTURE, false, true);
478094332d3Sopenharmony_ci
479094332d3Sopenharmony_ci    // Issue 3A parameters
480094332d3Sopenharmony_ci    std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY_SIZE, DATA_CAPACITY_SIZE);
481094332d3Sopenharmony_ci    int32_t expo = 0xa0;
482094332d3Sopenharmony_ci    meta->addEntry(OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, &expo, 1);
483094332d3Sopenharmony_ci    cameraBase->cameraDevice->UpdateSettings(meta);
484094332d3Sopenharmony_ci    sleep(3); // waiting resource release for 3s.
485094332d3Sopenharmony_ci}
486094332d3Sopenharmony_ci
487094332d3Sopenharmony_ci/**
488094332d3Sopenharmony_ci  * @tc.name: updateSettings AWB without preview
489094332d3Sopenharmony_ci  * @tc.desc: UpdateSettings-OHOS_CAMERA_AWB_MODE, without preview, success.
490094332d3Sopenharmony_ci  * @tc.level: Level1
491094332d3Sopenharmony_ci  * @tc.size: MediumTest
492094332d3Sopenharmony_ci  * @tc.type: Function
493094332d3Sopenharmony_ci  */
494094332d3Sopenharmony_ciTEST_F(UtestCamera3ATest, camera_3a_0041)
495094332d3Sopenharmony_ci{
496094332d3Sopenharmony_ci    std::cout << "UpdateSettings-OHOS_CAMERA_AWB_MODE, success." << std::endl;
497094332d3Sopenharmony_ci
498094332d3Sopenharmony_ci    // Issue 3A parameters
499094332d3Sopenharmony_ci    std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY_SIZE, DATA_CAPACITY_SIZE);
500094332d3Sopenharmony_ci    uint8_t awbMode = OHOS_CAMERA_AWB_MODE_AUTO;
501094332d3Sopenharmony_ci    meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
502094332d3Sopenharmony_ci    cameraBase->cameraDevice->UpdateSettings(meta);
503094332d3Sopenharmony_ci}