• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023 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 #include "camera_3a_uttest.h"
16 
17 using namespace OHOS;
18 using namespace std;
19 using namespace testing::ext;
20 using namespace OHOS::Camera;
21 
SetUpTestCase(void)22 void Camera3AUtTest::SetUpTestCase(void) {}
TearDownTestCase(void)23 void Camera3AUtTest::TearDownTestCase(void) {}
SetUp(void)24 void Camera3AUtTest::SetUp(void)
25 {
26     cameraTest = std::make_shared<OHOS::Camera::HdiCommon>();
27     cameraTest->Init();
28     cameraTest->Open();
29 }
30 
TearDown(void)31 void Camera3AUtTest::TearDown(void)
32 {
33     cameraTest->Close();
34 }
35 
36 /**
37  * @tc.name: updateSetting AE
38  * @tc.desc: preview, updateSetting OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, success
39  * @tc.size: MediumTest
40  * @tc.type: Function
41  */
42 HWTEST_F(Camera3AUtTest, Camera_3a_001, TestSize.Level1)
43 {
44     cameraTest->intents = {PREVIEW};
45     cameraTest->StartStream(cameraTest->intents);
46     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
47     std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
48     int32_t expo = 0xa0;
49     meta->addEntry(OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, &expo, 1);
50     std::vector<uint8_t> metaVec;
51     MetadataUtils::ConvertMetadataToVec(meta, metaVec);
52     cameraTest->rc = cameraTest->cameraDevice->UpdateSettings(metaVec);
53     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
54     sleep(1);
55     cameraTest->GetCameraMetadata();
56     cameraTest->captureIds = {cameraTest->captureIdPreview};
57     cameraTest->streamIds = {cameraTest->streamIdPreview};
58     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
59 }
60 
61 /**
62  * @tc.name: updateSetting AE
63  * @tc.desc: preview, updateSetting OHOS_CAMERA_AWB_MODE_AUTO, success
64  * @tc.size: MediumTest
65  * @tc.type: Function
66  */
67 HWTEST_F(Camera3AUtTest, Camera_3a_002, TestSize.Level1)
68 {
69     cameraTest->intents = {PREVIEW};
70     cameraTest->StartStream(cameraTest->intents);
71     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
72     std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
73     uint8_t awbMode = OHOS_CAMERA_AWB_MODE_AUTO;
74     meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
75     std::vector<uint8_t> metaVec;
76     MetadataUtils::ConvertMetadataToVec(meta, metaVec);
77     cameraTest->rc = cameraTest->cameraDevice->UpdateSettings(metaVec);
78     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
79     sleep(1);
80     cameraTest->GetCameraMetadata();
81     cameraTest->captureIds = {cameraTest->captureIdPreview};
82     cameraTest->streamIds = {cameraTest->streamIdPreview};
83     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
84 }
85 
86 /**
87  * @tc.name: updateSetting AE
88  * @tc.desc: preview, updateSetting OHOS_CAMERA_AWB_MODE_INCANDESCENT, success
89  * @tc.size: MediumTest
90  * @tc.type: Function
91  */
92 HWTEST_F(Camera3AUtTest, Camera_3a_003, TestSize.Level1)
93 {
94     cameraTest->intents = {PREVIEW};
95     cameraTest->StartStream(cameraTest->intents);
96     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
97     std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
98     uint8_t awbMode = OHOS_CAMERA_AWB_MODE_INCANDESCENT;
99     meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
100     std::vector<uint8_t> metaVec;
101     MetadataUtils::ConvertMetadataToVec(meta, metaVec);
102     cameraTest->rc = cameraTest->cameraDevice->UpdateSettings(metaVec);
103     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
104     sleep(1);
105     cameraTest->GetCameraMetadata();
106     cameraTest->captureIds = {cameraTest->captureIdPreview};
107     cameraTest->streamIds = {cameraTest->streamIdPreview};
108     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
109 }
110 
111 /**
112  * @tc.name: updateSetting AE
113  * @tc.desc: preview, updateSetting OHOS_CAMERA_AWB_MODE_FLUORESENT, success
114  * @tc.size: MediumTest
115  * @tc.type: Function
116  */
117 HWTEST_F(Camera3AUtTest, Camera_3a_004, TestSize.Level1)
118 {
119     cameraTest->intents = {PREVIEW};
120     cameraTest->StartStream(cameraTest->intents);
121     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
122     std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
123     uint8_t awbMode = OHOS_CAMERA_AWB_MODE_FLUORESCENT;
124     meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
125     std::vector<uint8_t> metaVec;
126     MetadataUtils::ConvertMetadataToVec(meta, metaVec);
127     cameraTest->rc = cameraTest->cameraDevice->UpdateSettings(metaVec);
128     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
129     sleep(1);
130     cameraTest->GetCameraMetadata();
131     cameraTest->captureIds = {cameraTest->captureIdPreview};
132     cameraTest->streamIds = {cameraTest->streamIdPreview};
133     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
134 }
135 
136 /**
137  * @tc.name: updateSetting AE
138  * @tc.desc: preview, updateSetting OHOS_CAMERA_AWB_MODE_DAYLIGHT, success
139  * @tc.size: MediumTest
140  * @tc.type: Function
141  */
142 HWTEST_F(Camera3AUtTest, Camera_3a_005, TestSize.Level1)
143 {
144     cameraTest->intents = {PREVIEW};
145     cameraTest->StartStream(cameraTest->intents);
146     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
147     std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
148     uint8_t awbMode = OHOS_CAMERA_AWB_MODE_DAYLIGHT;
149     meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
150     std::vector<uint8_t> metaVec;
151     MetadataUtils::ConvertMetadataToVec(meta, metaVec);
152     cameraTest->rc = cameraTest->cameraDevice->UpdateSettings(metaVec);
153     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
154     sleep(1);
155     cameraTest->GetCameraMetadata();
156     cameraTest->captureIds = {cameraTest->captureIdPreview};
157     cameraTest->streamIds = {cameraTest->streamIdPreview};
158     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
159 }
160 
161 /**
162  * @tc.name: updateSetting AE
163  * @tc.desc: preview, updateSetting OHOS_CAMERA_AWB_MODE_CLOUDY_DAYLIGHT, success
164  * @tc.size: MediumTest
165  * @tc.type: Function
166  */
167 HWTEST_F(Camera3AUtTest, Camera_3a_006, TestSize.Level1)
168 {
169     cameraTest->intents = {PREVIEW};
170     cameraTest->StartStream(cameraTest->intents);
171     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
172     std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
173     uint8_t awbMode = OHOS_CAMERA_AWB_MODE_CLOUDY_DAYLIGHT;
174     meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
175     std::vector<uint8_t> metaVec;
176     MetadataUtils::ConvertMetadataToVec(meta, metaVec);
177     cameraTest->rc = cameraTest->cameraDevice->UpdateSettings(metaVec);
178     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
179     sleep(1);
180     cameraTest->GetCameraMetadata();
181     cameraTest->captureIds = {cameraTest->captureIdPreview};
182     cameraTest->streamIds = {cameraTest->streamIdPreview};
183     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
184 }
185 
186 /**
187  * @tc.name: updateSetting AE
188  * @tc.desc: preview, updateSetting OHOS_CAMERA_AWB_MODE_TWILIGHT, success
189  * @tc.size: MediumTest
190  * @tc.type: Function
191  */
192 HWTEST_F(Camera3AUtTest, Camera_3a_007, TestSize.Level1)
193 {
194     cameraTest->intents = {PREVIEW};
195     cameraTest->StartStream(cameraTest->intents);
196     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
197     std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
198     uint8_t awbMode = OHOS_CAMERA_AWB_MODE_TWILIGHT;
199     meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
200     std::vector<uint8_t> metaVec;
201     MetadataUtils::ConvertMetadataToVec(meta, metaVec);
202     cameraTest->rc = cameraTest->cameraDevice->UpdateSettings(metaVec);
203     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
204     sleep(1);
205     cameraTest->GetCameraMetadata();
206     cameraTest->captureIds = {cameraTest->captureIdPreview};
207     cameraTest->streamIds = {cameraTest->streamIdPreview};
208     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
209 }
210 
211 /**
212  * @tc.name: updateSetting AE
213  * @tc.desc: preview, updateSetting OHOS_CAMERA_AWB_MODE_SHADE, success
214  * @tc.size: MediumTest
215  * @tc.type: Function
216  */
217 HWTEST_F(Camera3AUtTest, Camera_3a_008, TestSize.Level1)
218 {
219     cameraTest->intents = {PREVIEW};
220     cameraTest->StartStream(cameraTest->intents);
221     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
222     std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
223     uint8_t awbMode = OHOS_CAMERA_AWB_MODE_SHADE;
224     meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
225     std::vector<uint8_t> metaVec;
226     MetadataUtils::ConvertMetadataToVec(meta, metaVec);
227     cameraTest->rc = cameraTest->cameraDevice->UpdateSettings(metaVec);
228     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
229     sleep(1);
230     cameraTest->GetCameraMetadata();
231     cameraTest->captureIds = {cameraTest->captureIdPreview};
232     cameraTest->streamIds = {cameraTest->streamIdPreview};
233     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
234 }
235 
236 /**
237  * @tc.name: updateSetting AE
238  * @tc.desc: preview, updateSetting OHOS_CAMERA_AWB_MODE_OFF, success
239  * @tc.size: MediumTest
240  * @tc.type: Function
241  */
242 HWTEST_F(Camera3AUtTest, Camera_3a_009, TestSize.Level1)
243 {
244     cameraTest->intents = {PREVIEW};
245     cameraTest->StartStream(cameraTest->intents);
246     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
247     std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
248     uint8_t awbMode = OHOS_CAMERA_AWB_MODE_OFF;
249     meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
250     std::vector<uint8_t> metaVec;
251     MetadataUtils::ConvertMetadataToVec(meta, metaVec);
252     cameraTest->rc = cameraTest->cameraDevice->UpdateSettings(metaVec);
253     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
254     sleep(1);
255     cameraTest->GetCameraMetadata();
256     cameraTest->captureIds = {cameraTest->captureIdPreview};
257     cameraTest->streamIds = {cameraTest->streamIdPreview};
258     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
259 }
260 
261 /**
262  * @tc.name: updateSetting AE
263  * @tc.desc: preview, updateSetting OHOS_CAMERA_AWB_MODE_OFF, success
264  * @tc.size: MediumTest
265  * @tc.type: Function
266  */
267 HWTEST_F(Camera3AUtTest, Camera_3a_010, TestSize.Level1)
268 {
269     cameraTest->intents = {PREVIEW};
270     cameraTest->StartStream(cameraTest->intents);
271     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
272     std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
273     uint8_t awbMode = OHOS_CAMERA_AE_MODE_ON_ALWAYS_FLASH;
274     meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
275     std::vector<uint8_t> metaVec;
276     MetadataUtils::ConvertMetadataToVec(meta, metaVec);
277     cameraTest->rc = cameraTest->cameraDevice->UpdateSettings(metaVec);
278     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
279     sleep(1);
280     cameraTest->GetCameraMetadata();
281     cameraTest->captureIds = {cameraTest->captureIdPreview};
282     cameraTest->streamIds = {cameraTest->streamIdPreview};
283     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
284 }
285 
286 /**
287  * @tc.name: updateSetting AE
288  * @tc.desc: preview set 3A, then close device, and preview, 3A is reset
289  * @tc.size: MediumTest
290  * @tc.type: Function
291  */
292 HWTEST_F(Camera3AUtTest, Camera_3a_011, TestSize.Level1)
293 {
294     cameraTest->intents = {PREVIEW};
295     cameraTest->StartStream(cameraTest->intents);
296     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
297     std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
298     int32_t expo = 0xa0;
299     meta->addEntry(OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, &expo, 1);
300     std::vector<uint8_t> metaVec;
301     MetadataUtils::ConvertMetadataToVec(meta, metaVec);
302     cameraTest->rc = cameraTest->cameraDevice->UpdateSettings(metaVec);
303     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
304     cameraTest->captureIds = {cameraTest->captureIdPreview};
305     cameraTest->streamIds = {cameraTest->streamIdPreview};
306     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
307     cameraTest->cameraDevice->Close();
308     cameraTest->consumerMap_.clear();
309     cameraTest = std::make_shared<OHOS::Camera::HdiCommon>();
310     cameraTest->Init();
311     cameraTest->Open();
312     cameraTest->intents = {PREVIEW};
313     cameraTest->StartStream(cameraTest->intents);
314     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
315     cameraTest->captureIds = {cameraTest->captureIdPreview};
316     cameraTest->streamIds = {cameraTest->streamIdPreview};
317     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
318 }
319 
320 
321 /**
322  * @tc.name: updateSetting AE
323  * @tc.desc: preview , updatesetting different 3A params together
324  * @tc.size: MediumTest
325  * @tc.type: Function
326  */
327 HWTEST_F(Camera3AUtTest, Camera_3a_012, TestSize.Level1)
328 {
329     cameraTest->intents = {PREVIEW};
330     cameraTest->StartStream(cameraTest->intents);
331     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
332     std::shared_ptr<CameraMetadata> meta = std::make_shared<CameraSetting>(100, 200);
333     int32_t expo = 0xa0;
334     meta->addEntry(OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, &expo, 1);
335     uint8_t awbMode = OHOS_CAMERA_AWB_MODE_TWILIGHT;
336     meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
337     std::vector<uint8_t> metaVec;
338     MetadataUtils::ConvertMetadataToVec(meta, metaVec);
339     cameraTest->rc = cameraTest->cameraDevice->UpdateSettings(metaVec);
340     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
341     sleep(3); // sleep for 3 seconds
342     cameraTest->captureIds = {cameraTest->captureIdPreview};
343     cameraTest->streamIds = {cameraTest->streamIdPreview};
344     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
345 }
346 
347 /**
348  * @tc.name: updateSetting AE without preview
349  * @tc.desc: updatesetting OHOS_CAMERA_AE_EXMPENSATION, without preview, success
350  * @tc.size: MediumTest
351  * @tc.type: Function
352  */
353 HWTEST_F(Camera3AUtTest, Camera_3a_013, TestSize.Level1)
354 {
355     std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(100, 2000);
356     int32_t expo = 0xa0;
357     meta->addEntry(OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, &expo, 1);
358     std::vector<uint8_t> metaVec;
359     MetadataUtils::ConvertMetadataToVec(meta, metaVec);
360     cameraTest->rc = cameraTest->cameraDevice->UpdateSettings(metaVec);
361     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
362 }
363 
364 /**
365  * @tc.name: updateSetting AE without preview
366  * @tc.desc: updatesetting OHOS_CAMERA_AE_EXMPENSATION, without preview, success
367  * @tc.size: MediumTest
368  * @tc.type: Function
369  */
370 HWTEST_F(Camera3AUtTest, Camera_3a_014, TestSize.Level1)
371 {
372     std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(100, 2000);
373     int32_t awbMode = OHOS_CAMERA_AWB_MODE_AUTO;
374     meta->addEntry(OHOS_CONTROL_AWB_MODE, &awbMode, 1);
375     std::vector<uint8_t> metaVec;
376     MetadataUtils::ConvertMetadataToVec(meta, metaVec);
377     cameraTest->rc = cameraTest->cameraDevice->UpdateSettings(metaVec);
378     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
379 }