1 /*
2 * Copyright (c) 2024-2025 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_2->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_2->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