• 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 #include "front_camera_hdi_test_v1_2.h"
16 
17 using namespace OHOS;
18 using namespace std;
19 using namespace testing::ext;
20 using namespace OHOS::Camera;
21 
22 constexpr uint32_t ITEM_CAPACITY = 100;
23 constexpr uint32_t DATA_CAPACITY = 2000;
24 constexpr uint32_t DATA_COUNT = 1;
SetUpTestCase(void)25 void FrontCameraHdiTestV1_2::SetUpTestCase(void) {}
TearDownTestCase(void)26 void FrontCameraHdiTestV1_2::TearDownTestCase(void) {}
SetUp(void)27 void FrontCameraHdiTestV1_2::SetUp(void)
28 {
29     cameraTest = std::make_shared<OHOS::Camera::Test>();
30     cameraTest->Init(); // assert inside
31     cameraTest->Open(DEVICE_1); // assert inside
32 }
33 
TearDown(void)34 void FrontCameraHdiTestV1_2::TearDown(void)
35 {
36     cameraTest->Close();
37 }
38 
39 /**
40  * @tc.name: SUB_Driver_Camera_APERTURE_0300
41  * @tc.desc: OHOS_CONTROL_CAMERA_VIRTUAL_APERTURE_RANGE
42  * @tc.size: MediumTest
43  * @tc.type: Function
44  */
45 HWTEST_F(FrontCameraHdiTestV1_2, SUB_Driver_Camera_APERTURE_0300, TestSize.Level1)
46 {
47     // Get Stream Operator
48     cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
49     cameraTest->rc = cameraTest->cameraDeviceV1_1->GetStreamOperator_V1_1(cameraTest->streamOperatorCallback,
50         cameraTest->streamOperator_V1_1);
51     EXPECT_NE(cameraTest->streamOperator_V1_1, nullptr);
52     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
53 
54     // preview streamInfo
55     cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
56     cameraTest->DefaultInfosPreview(cameraTest->streamInfoV1_1);
57     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
58 
59     // capture streamInfo
60     cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
61     cameraTest->DefaultInfosCapture(cameraTest->streamInfoV1_1);
62     cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
63 
64     // create and commitstreams
65     cameraTest->rc = cameraTest->streamOperator_V1_1->CreateStreams_V1_1(cameraTest->streamInfosV1_1);
66     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
67     cameraTest->rc = cameraTest->streamOperator_V1_1->CommitStreams_V1_1(
68         static_cast<OHOS::HDI::Camera::V1_1::OperationMode_V1_1>(OHOS::HDI::Camera::V1_2::PORTRAIT),
69         cameraTest->abilityVec);
70     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
71 
72     //update settings
73     std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY, DATA_CAPACITY);
74     float virtualApertureValue = 1.6;
75     meta->addEntry(OHOS_CONTROL_CAMERA_VIRTUAL_APERTURE_VALUE, &virtualApertureValue, DATA_COUNT);
76     std::vector<uint8_t> setting;
77     MetadataUtils::ConvertMetadataToVec(meta, setting);
78     cameraTest->rc = (CamRetCode)cameraTest->cameraDevice->UpdateSettings(setting);
79     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
80 
81     // start capture
82     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
83     cameraTest->StartCapture(cameraTest->streamIdCapture, cameraTest->captureIdCapture, false, true);
84 
85     // stop stream
86     cameraTest->captureIds = {cameraTest->captureIdPreview, cameraTest->captureIdCapture};
87     cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdCapture};
88     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
89 }
90 
91 /**
92  * @tc.name: SUB_Driver_Camera_APERTURE_0400
93  * @tc.desc: OHOS_CONTROL_CAMERA_VIRTUAL_APERTURE_RANGE, all value
94  * @tc.size: MediumTest
95  * @tc.type: Function
96  */
97 HWTEST_F(FrontCameraHdiTestV1_2, SUB_Driver_Camera_APERTURE_0400, TestSize.Level1)
98 {
99     EXPECT_NE(cameraTest->ability, nullptr);
100     common_metadata_header_t* data = cameraTest->ability->get();
101     EXPECT_NE(data, nullptr);
102     camera_metadata_item_t entry;
103     cameraTest->rc = FindCameraMetadataItem(data, OHOS_ABILITY_CAMERA_VIRTUAL_APERTURE_RANGE, &entry);
104     if (cameraTest->rc == HDI::Camera::V1_0::NO_ERROR && entry.data.u8 != nullptr && entry.count > 0) {
105         for (size_t i = 0; i < entry.count; i++) {
106             // Get Stream Operator
107             cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
108             cameraTest->rc = cameraTest->cameraDeviceV1_1->GetStreamOperator_V1_1(cameraTest->streamOperatorCallback,
109                 cameraTest->streamOperator_V1_1);
110             EXPECT_NE(cameraTest->streamOperator_V1_1, nullptr);
111             EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
112 
113             // preview streamInfo
114             cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
115             cameraTest->DefaultInfosPreview(cameraTest->streamInfoV1_1);
116             cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
117 
118             // capture streamInfo
119             cameraTest->streamInfoV1_1 = std::make_shared<OHOS::HDI::Camera::V1_1::StreamInfo_V1_1>();
120             cameraTest->DefaultInfosCapture(cameraTest->streamInfoV1_1);
121             cameraTest->streamInfosV1_1.push_back(*cameraTest->streamInfoV1_1);
122 
123             // create and commitstreams
124             cameraTest->rc = cameraTest->streamOperator_V1_1->CreateStreams_V1_1(cameraTest->streamInfosV1_1);
125             EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
126             cameraTest->rc = cameraTest->streamOperator_V1_1->CommitStreams_V1_1(
127                 static_cast<OHOS::HDI::Camera::V1_1::OperationMode_V1_1>(OHOS::HDI::Camera::V1_2::PORTRAIT),
128                 cameraTest->abilityVec);
129             EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
130 
131             //update settings
132             std::shared_ptr<CameraSetting> meta = std::make_shared<CameraSetting>(ITEM_CAPACITY, DATA_CAPACITY);
133             float virtualApertureValue = entry.data.f[i];
134             meta->addEntry(OHOS_CONTROL_CAMERA_VIRTUAL_APERTURE_VALUE, &virtualApertureValue, DATA_COUNT);
135             std::vector<uint8_t> setting;
136             MetadataUtils::ConvertMetadataToVec(meta, setting);
137             cameraTest->rc = (CamRetCode)cameraTest->cameraDevice->UpdateSettings(setting);
138             EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
139 
140             // start capture
141             cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
142             cameraTest->StartCapture(cameraTest->streamIdCapture, cameraTest->captureIdCapture, false, true);
143 
144             cameraTest->captureIds = {cameraTest->captureIdPreview, cameraTest->captureIdCapture};
145             cameraTest->streamIds = {cameraTest->streamIdPreview, cameraTest->streamIdCapture};
146             cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
147             sleep(1);
148             cameraTest->streamInfosV1_1.clear();
149         }
150     }
151 }
152