1 /*
2 * Copyright (c) 2021 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except 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 "hdi_stream_test.h"
17
18 using namespace OHOS;
19 using namespace std;
20 using namespace testing::ext;
21 using namespace OHOS::Camera;
22
SetUpTestCase(void)23 void HdiStreamTest::SetUpTestCase(void) {}
TearDownTestCase(void)24 void HdiStreamTest::TearDownTestCase(void) {}
SetUp(void)25 void HdiStreamTest::SetUp(void)
26 {
27 Test_ = std::make_shared<OHOS::Camera::Test>();
28 Test_->Init();
29 }
TearDown(void)30 void HdiStreamTest::TearDown(void)
31 {
32 Test_->Close();
33 }
34
35 /**
36 * @tc.name: IsStreamsSupported
37 * @tc.desc: IsStreamsSupported, normal cameraId.
38 * @tc.size: MediumTest
39 * @tc.type: Function
40 */
41 HWTEST_F(HdiStreamTest, Camera_Hdi_0120, TestSize.Level0)
42 {
43 std::cout << "==========[test log]Check hdi: IsStreamsSupported, normal cameraId." << std::endl;
44 // Turn on the camera
45 Test_->Open();
46 EXPECT_EQ(false, Test_->cameraDevice == nullptr);
47 // Get streamOperator
48 Test_->CreateStreamOperatorCallback();
49 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
50 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
51 // Configure mode and modeSetting
52 Camera::OperationMode mode = Camera::NORMAL;
53 std::shared_ptr<CameraMetadata> modeSetting =
54 std::make_shared<CameraMetadata>(2, 128);
55 int64_t expoTime = 0;
56 modeSetting->addEntry(OHOS_SENSOR_EXPOSURE_TIME, &expoTime, 1);
57 int64_t colorGains[4] = {0};
58 modeSetting->addEntry(OHOS_SENSOR_COLOR_CORRECTION_GAINS, &colorGains, 4);
59 // Configure stream information
60 Test_->streamInfo = std::make_shared<Camera::StreamInfo>();
61 Test_->streamInfo->streamId_ = 1001; // 1001:streamId
62 Test_->StreamInfoFormat();
63 Test_->streamInfo->height_ = 480; // 480:height of stream
64 Test_->streamInfo->width_ = 640; // 640:width of stream
65 Test_->streamInfo->dataspace_ = 8;
66 std::shared_ptr<OHOS::Camera::Test::StreamConsumer> consumer =
67 std::make_shared<OHOS::Camera::Test::StreamConsumer>();
68 #ifdef CAMERA_BUILT_ON_OHOS_LITE
__anon1ab2d62d0102(OHOS::SurfaceBuffer* buffer) 69 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](OHOS::SurfaceBuffer* buffer) {
70 Test_->SaveYUV("preview", buffer->GetVirAddr(), buffer->GetSize());
71 });
72 #else
__anon1ab2d62d0202(void* addr, uint32_t size) 73 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](void* addr, uint32_t size) {
74 Test_->SaveYUV("preview", addr, size);
75 });
76 #endif
77 Test_->streamInfo->bufferQueue_->SetQueueSize(8);
78 Test_->consumerMap_[Test_->streamInfo->intent_] = consumer;
79 Test_->streamInfo->intent_ = Camera::PREVIEW;
80 Test_->streamInfo->tunneledMode_ = 5;
81 Camera::StreamSupportType pType;
82 std::vector<std::shared_ptr<Camera::StreamInfo>> stre;
83 stre.push_back(Test_->streamInfo);
84 Test_->rc = Test_->streamOperator->IsStreamsSupported(NORMAL, modeSetting, stre, pType);
85 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
86 EXPECT_NE(pType, Camera::NOT_SUPPORTED);
87 if (Test_->rc == Camera::NO_ERROR) {
88 std::cout << "==========[test log]Check hdi: IsStreamsSupported success, pType = " << pType << std::endl;
89 } else {
90 std::cout << "==========[test log]Check hdi: IsStreamsSupported fail, rc = " << Test_->rc << std::endl;
91 }
92 consumer->StopConsumer();
93 }
94
95 /**
96 * @tc.name: IsStreamsSupported
97 * @tc.desc: IsStreamsSupported, input modeSetting nullptr.
98 * @tc.size: MediumTest
99 * @tc.type: Function
100 */
101 HWTEST_F(HdiStreamTest, Camera_Hdi_0121, TestSize.Level2)
102 {
103 std::cout << "==========[test log]Check hdi: IsStreamsSupported, input modeSetting nullptr." << std::endl;
104 // Turn on the camera
105 Test_->Open();
106 EXPECT_EQ(false, Test_->cameraDevice == nullptr);
107 // Get streamOperator
108 Test_->CreateStreamOperatorCallback();
109 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
110 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
111 // Configure stream information
112 Test_->streamInfo = std::make_shared<Camera::StreamInfo>();
113 Test_->streamInfo->streamId_ = 1001; // 1001:streamId
114 Test_->streamInfo->width_ = 640; // 640:width of stream
115 Test_->streamInfo->height_ = 480; // 480:height of stream
116 Test_->streamInfo->tunneledMode_ = 5;
117 Test_->StreamInfoFormat();
118 Test_->streamInfo->dataspace_ = 8;
119 Test_->streamInfo->intent_ = Camera::PREVIEW;
120 std::shared_ptr<OHOS::Camera::Test::StreamConsumer> consumer =
121 std::make_shared<OHOS::Camera::Test::StreamConsumer>();
122 #ifdef CAMERA_BUILT_ON_OHOS_LITE
__anon1ab2d62d0302(OHOS::SurfaceBuffer* buffer) 123 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](OHOS::SurfaceBuffer* buffer) {
124 Test_->SaveYUV("preview", buffer->GetVirAddr(), buffer->GetSize());
125 });
126 #else
__anon1ab2d62d0402(void* addr, uint32_t size) 127 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](void* addr, uint32_t size) {
128 Test_->SaveYUV("preview", addr, size);
129 });
130 #endif
131 Test_->streamInfo->bufferQueue_->SetQueueSize(8);
132 Test_->consumerMap_[Test_->streamInfo->intent_] = consumer;
133
134 Camera::StreamSupportType pType;
135 std::vector<std::shared_ptr<Camera::StreamInfo>> stre;
136 stre.push_back(Test_->streamInfo);
137 Test_->rc = Test_->streamOperator->IsStreamsSupported(NORMAL, nullptr, stre, pType);
138 EXPECT_EQ(true, Test_->rc == Camera::INVALID_ARGUMENT);
139 if (Test_->rc == Camera::NO_ERROR) {
140 std::cout << "==========[test log]Check hdi: IsStreamsSupported success." << std::endl;
141 } else {
142 std::cout << "==========[test log]Check hdi: IsStreamsSupported fail, rc = " << Test_->rc << std::endl;
143 }
144 consumer->StopConsumer();
145 }
146
147 /**
148 * @tc.name: IsStreamsSupported
149 * @tc.desc: IsStreamsSupported, input streamInfo nullptr.
150 * @tc.size: MediumTest
151 * @tc.type: Function
152 */
153 HWTEST_F(HdiStreamTest, Camera_Hdi_0122, TestSize.Level2)
154 {
155 std::cout << "==========[test log]Check hdi: IsStreamsSupported, input mode abnormal." << std::endl;
156 // Turn on the camera
157 Test_->Open();
158 EXPECT_EQ(false, Test_->cameraDevice == nullptr);
159 // Get streamOperator
160 Test_->CreateStreamOperatorCallback();
161 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
162 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
163 Camera::StreamSupportType pType;
164 std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>> infos = {};
165 Test_->rc = Test_->streamOperator->IsStreamsSupported(NORMAL, Test_->ability, infos, pType);
166 EXPECT_EQ(Test_->rc, Camera::INVALID_ARGUMENT);
167 if (Test_->rc == Camera::NO_ERROR) {
168 std::cout << "==========[test log]Check hdi: IsStreamsSupported success." << std::endl;
169 } else {
170 std::cout << "==========[test log]Check hdi: IsStreamsSupported fail, rc = " << Test_->rc << std::endl;
171 }
172 }
173
174 /**
175 * @tc.name: IsStreamsSupported
176 * @tc.desc: IsStreamsSupported, normal cameraId, excepted not supported.
177 * @tc.size: MediumTest
178 * @tc.type: Function
179 */
180 HWTEST_F(HdiStreamTest, Camera_Hdi_0123, TestSize.Level1)
181 {
182 std::cout << "==========[test log] CAMERA_FORMAT_YVYU_422_PKG format is not supported." << std::endl;
183 // Turn on the camera
184 Test_->Open();
185 EXPECT_EQ(false, Test_->cameraDevice == nullptr);
186 // Get streamOperator
187 Test_->CreateStreamOperatorCallback();
188 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
189 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
190 if (Test_->rc == Camera::NO_ERROR) {
191 std::cout << "==========[test log]Check hdi: GetStreamOperator success." << std::endl;
192 } else {
193 std::cout << "==========[test log]Check hdi: GetStreamOperator fail, rc = " << Test_->rc << std::endl;
194 }
195 // Configure mode and modeSetting
196 Camera::OperationMode mode = Camera::NORMAL;
197 std::shared_ptr<CameraMetadata> modeSetting =
198 std::make_shared<CameraMetadata>(2, 128);
199 // Configure stream information
200 Test_->streamInfo = std::make_shared<Camera::StreamInfo>();
201 Test_->streamInfo->width_ = 640; // 640:width of stream
202 Test_->streamInfo->height_ = 480; // 480:height of stream
203 Test_->streamInfo->streamId_ = 1001; // 1001:streamId
204 Test_->StreamInfoFormat();
205 Test_->streamInfo->dataspace_ = 8;
206 Test_->streamInfo->intent_ = Camera::PREVIEW;
207 Test_->streamInfo->tunneledMode_ = 5;
208 std::shared_ptr<OHOS::Camera::Test::StreamConsumer> consumer =
209 std::make_shared<OHOS::Camera::Test::StreamConsumer>();
210 #ifdef CAMERA_BUILT_ON_OHOS_LITE
__anon1ab2d62d0502(OHOS::SurfaceBuffer* buffer) 211 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](OHOS::SurfaceBuffer* buffer) {
212 Test_->SaveYUV("preview", buffer->GetVirAddr(), buffer->GetSize());
213 });
214 #else
__anon1ab2d62d0602(void* addr, uint32_t size) 215 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](void* addr, uint32_t size) {
216 Test_->SaveYUV("preview", addr, size);
217 });
218 #endif
219 Test_->streamInfo->bufferQueue_->SetQueueSize(8);
220 Test_->consumerMap_[Test_->streamInfo->intent_] = consumer;
221 Camera::StreamSupportType pType;
222 std::vector<std::shared_ptr<Camera::StreamInfo>> stre;
223 stre.push_back(Test_->streamInfo);
224 Test_->rc = Test_->streamOperator->IsStreamsSupported(NORMAL, modeSetting, stre, pType);
225 EXPECT_EQ(Test_->rc, Camera::INVALID_ARGUMENT);
226 if (Test_->rc == Camera::NO_ERROR) {
227 std::cout << "==========[test log]Check hdi: IsStreamsSupported success, pType = " << pType << std::endl;
228 } else {
229 std::cout << "==========[test log]Check hdi: IsStreamsSupported fail, rc = " << Test_->rc << std::endl;
230 }
231 consumer->StopConsumer();
232 }
233
234 /**
235 * @tc.name: CreateStreams
236 * @tc.desc: CreateStreams, success.
237 * @tc.size: MediumTest
238 * @tc.type: Function
239 */
240 HWTEST_F(HdiStreamTest, Camera_Hdi_0130, TestSize.Level0)
241 {
242 std::cout << "==========[test log]Check hdi: CreateStreams, success." << std::endl;
243 Test_->Open();
244 // Create and get streamOperator information
245 Test_->CreateStreamOperatorCallback();
246 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
247 EXPECT_EQ(false, Test_->rc != Camera::NO_ERROR || Test_->streamOperator == nullptr);
248 // Create data stream
249 Test_->streamInfo = std::make_shared<Camera::StreamInfo>();
250 Test_->streamInfo->streamId_ = 1001;
251 Test_->streamInfo->width_ = 640;
252 Test_->streamInfo->height_ = 480;
253 Test_->StreamInfoFormat();
254 Test_->streamInfo->dataspace_ = 8;
255 Test_->streamInfo->intent_ = Camera::PREVIEW;
256 Test_->streamInfo->tunneledMode_ = 5;
257 std::shared_ptr<OHOS::Camera::Test::StreamConsumer> consumer =
258 std::make_shared<OHOS::Camera::Test::StreamConsumer>();
259 #ifdef CAMERA_BUILT_ON_OHOS_LITE
__anon1ab2d62d0702(OHOS::SurfaceBuffer* buffer) 260 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](OHOS::SurfaceBuffer* buffer) {
261 Test_->SaveYUV("preview", buffer->GetVirAddr(), buffer->GetSize());
262 });
263 #else
__anon1ab2d62d0802(void* addr, uint32_t size) 264 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](void* addr, uint32_t size) {
265 Test_->SaveYUV("preview", addr, size);
266 });
267 #endif
268 Test_->consumerMap_[Test_->streamInfo->intent_] = consumer;
269 Test_->streamInfos.push_back(Test_->streamInfo);
270 Test_->rc = Test_->streamOperator->CreateStreams(Test_->streamInfos);
271 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
272 // release stream
273 std::vector<int> streamIds;
274 streamIds.push_back(Test_->streamInfo->streamId_);
275 Test_->rc = Test_->streamOperator->ReleaseStreams(streamIds);
276 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
277 consumer->StopConsumer();
278 }
279
280 /**
281 * @tc.name: CreateStreams
282 * @tc.desc: CreateStreams, StreamInfo->streamId = -1, return error.
283 * @tc.size: MediumTest
284 * @tc.type: Function
285 */
286 HWTEST_F(HdiStreamTest, Camera_Hdi_0131, TestSize.Level2)
287 {
288 std::cout << "==========[test log]Check hdi: CreateStreams, StreamInfo->streamId = -1, error." << std::endl;
289 Test_->Open();
290 // Create and get streamOperator information
291 Test_->CreateStreamOperatorCallback();
292 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
293 EXPECT_EQ(false, Test_->rc != Camera::NO_ERROR || Test_->streamOperator == nullptr);
294 // Create data stream
295 Test_->streamInfo = std::make_shared<Camera::StreamInfo>();
296 Test_->streamInfo->streamId_ = -1;
297 Test_->streamInfo->width_ = 640;
298 Test_->StreamInfoFormat();
299 Test_->streamInfo->height_ = 480;
300 Test_->streamInfo->dataspace_ = 8;
301 Test_->streamInfo->intent_ = Camera::PREVIEW;
302 Test_->streamInfo->tunneledMode_ = 5;
303 std::shared_ptr<OHOS::Camera::Test::StreamConsumer> consumer =
304 std::make_shared<OHOS::Camera::Test::StreamConsumer>();
305 #ifdef CAMERA_BUILT_ON_OHOS_LITE
__anon1ab2d62d0902(OHOS::SurfaceBuffer* buffer) 306 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](OHOS::SurfaceBuffer* buffer) {
307 Test_->SaveYUV("preview", buffer->GetVirAddr(), buffer->GetSize());
308 });
309 #else
__anon1ab2d62d0a02(void* addr, uint32_t size) 310 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](void* addr, uint32_t size) {
311 Test_->SaveYUV("preview", addr, size);
312 });
313 #endif
314 Test_->consumerMap_[Test_->streamInfo->intent_] = consumer;
315 Test_->streamInfos.push_back(Test_->streamInfo);
316 Test_->rc = Test_->streamOperator->CreateStreams(Test_->streamInfos);
317 std::cout << "streamOperator->CreateStreams's rc " << Test_->rc << std::endl;
318 EXPECT_EQ(INVALID_ARGUMENT, Test_->rc);
319 consumer->StopConsumer();
320 }
321
322 /**
323 * @tc.name: CreateStreams
324 * @tc.desc: CreateStreams, StreamInfo->streamId = 2147483647, return error.
325 * @tc.size: MediumTest
326 * @tc.type: Function
327 */
328 HWTEST_F(HdiStreamTest, Camera_Hdi_0132, TestSize.Level2)
329 {
330 std::cout << "==========[test log]Check hdi: CreateStreams, StreamInfo->streamId = 2147483647, error" << std::endl;
331 Test_->Open();
332 Test_->CreateStreamOperatorCallback();
333 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
334 EXPECT_EQ(false, Test_->rc != Camera::NO_ERROR || Test_->streamOperator == nullptr);
335 // Create data stream
336 Test_->streamInfo = std::make_shared<Camera::StreamInfo>();
337 Test_->streamInfo->streamId_ = 2147483647;
338 Test_->streamInfo->width_ = 640;
339 Test_->streamInfo->height_ = 480;
340 Test_->streamInfo->dataspace_ = 8;
341 Test_->StreamInfoFormat();
342 Test_->streamInfo->intent_ = Camera::PREVIEW;
343 Test_->streamInfo->tunneledMode_ = 5;
344 std::shared_ptr<OHOS::Camera::Test::StreamConsumer> consumer =
345 std::make_shared<OHOS::Camera::Test::StreamConsumer>();
346 #ifdef CAMERA_BUILT_ON_OHOS_LITE
__anon1ab2d62d0b02(OHOS::SurfaceBuffer* buffer) 347 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](OHOS::SurfaceBuffer* buffer) {
348 Test_->SaveYUV("preview", buffer->GetVirAddr(), buffer->GetSize());
349 });
350 #else
__anon1ab2d62d0c02(void* addr, uint32_t size) 351 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](void* addr, uint32_t size) {
352 Test_->SaveYUV("preview", addr, size);
353 });
354 #endif
355 Test_->consumerMap_[Test_->streamInfo->intent_] = consumer;
356 Test_->streamInfos.push_back(Test_->streamInfo);
357 Test_->rc = Test_->streamOperator->CreateStreams(Test_->streamInfos);
358 std::cout << "streamOperator->CreateStreams's rc " << Test_->rc << std::endl;
359 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
360 // release stream
361 Test_->rc = Test_->streamOperator->ReleaseStreams({Test_->streamInfo->streamId_});
362 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
363 consumer->StopConsumer();
364 }
365
366 /**
367 * @tc.name: CreateStreams
368 * @tc.desc: CreateStreams, StreamInfo->width = -1, return error.
369 * @tc.size: MediumTest
370 * @tc.type: Function
371 */
372 HWTEST_F(HdiStreamTest, Camera_Hdi_0133, TestSize.Level2)
373 {
374 std::cout << "==========[test log]Check hdi: CreateStreams, StreamInfo->width = -1, return error." << std::endl;
375 Test_->Open();
376 Test_->CreateStreamOperatorCallback();
377 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
378 EXPECT_EQ(false, Test_->rc != Camera::NO_ERROR || Test_->streamOperator == nullptr);
379 // Create data stream
380 Test_->streamInfo = std::make_shared<Camera::StreamInfo>();
381 Test_->streamInfo->streamId_ = 1001;
382 Test_->streamInfo->width_ = -1;
383 Test_->streamInfo->height_ = 640;
384 Test_->StreamInfoFormat();
385 Test_->streamInfo->dataspace_ = 8;
386 Test_->streamInfo->intent_ = Camera::PREVIEW;
387 Test_->streamInfo->tunneledMode_ = 5;
388 std::shared_ptr<OHOS::Camera::Test::StreamConsumer> consumer =
389 std::make_shared<OHOS::Camera::Test::StreamConsumer>();
390 #ifdef CAMERA_BUILT_ON_OHOS_LITE
__anon1ab2d62d0d02(OHOS::SurfaceBuffer* buffer) 391 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](OHOS::SurfaceBuffer* buffer) {
392 Test_->SaveYUV("preview", buffer->GetVirAddr(), buffer->GetSize());
393 });
394 #else
__anon1ab2d62d0e02(void* addr, uint32_t size) 395 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](void* addr, uint32_t size) {
396 Test_->SaveYUV("preview", addr, size);
397 });
398 #endif
399 Test_->consumerMap_[Test_->streamInfo->intent_] = consumer;
400 Test_->streamInfos.push_back(Test_->streamInfo);
401 Test_->rc = Test_->streamOperator->CreateStreams(Test_->streamInfos);
402 std::cout << "streamOperator->CreateStreams's rc " << Test_->rc << std::endl;
403 EXPECT_EQ(INVALID_ARGUMENT, Test_->rc);
404 consumer->StopConsumer();
405 }
406
407 /**
408 * @tc.name: CreateStreams
409 * @tc.desc: CreateStreams, StreamInfo->width = 2147483647, success.
410 * @tc.size: MediumTest
411 * @tc.type: Function
412 */
413 HWTEST_F(HdiStreamTest, Camera_Hdi_0134, TestSize.Level2)
414 {
415 std::cout << "==========[test log]Check hdi: CreateStreams, StreamInfo->width = 2147483647, success." << std::endl;
416 Test_->Open();
417 Test_->CreateStreamOperatorCallback();
418 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
419 EXPECT_EQ(false, Test_->rc != Camera::NO_ERROR || Test_->streamOperator == nullptr);
420 // Create data stream
421 Test_->streamInfo = std::make_shared<Camera::StreamInfo>();
422 Test_->streamInfo->streamId_ = 1001;
423 Test_->streamInfo->width_ = 2147483647;
424 Test_->streamInfo->height_ = 640;
425 Test_->StreamInfoFormat();
426 Test_->streamInfo->dataspace_ = 8;
427 Test_->streamInfo->intent_ = Camera::PREVIEW;
428 Test_->streamInfo->tunneledMode_ = 5;
429 std::shared_ptr<OHOS::Camera::Test::StreamConsumer> consumer =
430 std::make_shared<OHOS::Camera::Test::StreamConsumer>();
431 #ifdef CAMERA_BUILT_ON_OHOS_LITE
__anon1ab2d62d0f02(OHOS::SurfaceBuffer* buffer) 432 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](OHOS::SurfaceBuffer* buffer) {
433 Test_->SaveYUV("preview", buffer->GetVirAddr(), buffer->GetSize());
434 });
435 #else
__anon1ab2d62d1002(void* addr, uint32_t size) 436 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](void* addr, uint32_t size) {
437 Test_->SaveYUV("preview", addr, size);
438 });
439 #endif
440 Test_->streamInfo->bufferQueue_->SetQueueSize(8);
441 Test_->consumerMap_[Test_->streamInfo->intent_] = consumer;
442 Test_->streamInfos.push_back(Test_->streamInfo);
443 Test_->rc = Test_->streamOperator->CreateStreams(Test_->streamInfos);
444 std::cout << "streamOperator->CreateStreams's rc " << Test_->rc << std::endl;
445 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
446 // release stream
447 Test_->rc = Test_->streamOperator->ReleaseStreams({Test_->streamInfo->streamId_});
448 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
449 consumer->StopConsumer();
450 }
451
452 /**
453 * @tc.name: CreateStreams
454 * @tc.desc: CreateStreams, StreamInfo->height = -1, return error.
455 * @tc.size: MediumTest
456 * @tc.type: Function
457 */
458 HWTEST_F(HdiStreamTest, Camera_Hdi_0135, TestSize.Level2)
459 {
460 std::cout << "==========[test log]Check hdi: CreateStreams, StreamInfo->height = -1, return error." << std::endl;
461 Test_->Open();
462 Test_->CreateStreamOperatorCallback();
463 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
464 EXPECT_EQ(false, Test_->rc != Camera::NO_ERROR || Test_->streamOperator == nullptr);
465 // Create data stream
466 Test_->streamInfo = std::make_shared<Camera::StreamInfo>();
467 Test_->streamInfo->streamId_ = 1001;
468 Test_->streamInfo->width_ = 1920;
469 Test_->streamInfo->height_ = -1;
470 Test_->StreamInfoFormat();
471 Test_->streamInfo->dataspace_ = 8;
472 Test_->streamInfo->intent_ = Camera::PREVIEW;
473 Test_->streamInfo->tunneledMode_ = 5;
474 std::shared_ptr<OHOS::Camera::Test::StreamConsumer> consumer =
475 std::make_shared<OHOS::Camera::Test::StreamConsumer>();
476 #ifdef CAMERA_BUILT_ON_OHOS_LITE
__anon1ab2d62d1102(OHOS::SurfaceBuffer* buffer) 477 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](OHOS::SurfaceBuffer* buffer) {
478 Test_->SaveYUV("preview", buffer->GetVirAddr(), buffer->GetSize());
479 });
480 #else
__anon1ab2d62d1202(void* addr, uint32_t size) 481 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](void* addr, uint32_t size) {
482 Test_->SaveYUV("preview", addr, size);
483 });
484 #endif
485 Test_->streamInfo->bufferQueue_->SetQueueSize(8);
486 Test_->consumerMap_[Test_->streamInfo->intent_] = consumer;
487 Test_->streamInfos.push_back(Test_->streamInfo);
488 Test_->rc = Test_->streamOperator->CreateStreams(Test_->streamInfos);
489 std::cout << "streamOperator->CreateStreams's rc " << Test_->rc << std::endl;
490 EXPECT_EQ(INVALID_ARGUMENT, Test_->rc);
491 consumer->StopConsumer();
492 }
493
494 /**
495 * @tc.name: CreateStreams
496 * @tc.desc: CreateStreams, StreamInfo->height = 2147483647, success.
497 * @tc.size: MediumTest
498 * @tc.type: Function
499 */
500 HWTEST_F(HdiStreamTest, Camera_Hdi_0136, TestSize.Level2)
501 {
502 std::cout << "==========[test log]Check hdi: CreateStreams, StreamInfo->height = 2147483647, success" << std::endl;
503 Test_->Open();
504 Test_->CreateStreamOperatorCallback();
505 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
506 EXPECT_EQ(false, Test_->rc != Camera::NO_ERROR || Test_->streamOperator == nullptr);
507 // Create data stream
508 Test_->streamInfo = std::make_shared<Camera::StreamInfo>();
509 Test_->streamInfo->streamId_ = 1001;
510 Test_->streamInfo->width_ = 1920;
511 Test_->streamInfo->height_ = 2147483647;
512 Test_->StreamInfoFormat();
513 Test_->streamInfo->dataspace_ = 8;
514 Test_->streamInfo->intent_ = Camera::PREVIEW;
515 Test_->streamInfo->tunneledMode_ = 5;
516 std::shared_ptr<OHOS::Camera::Test::StreamConsumer> consumer =
517 std::make_shared<OHOS::Camera::Test::StreamConsumer>();
518 #ifdef CAMERA_BUILT_ON_OHOS_LITE
__anon1ab2d62d1302(OHOS::SurfaceBuffer* buffer) 519 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](OHOS::SurfaceBuffer* buffer) {
520 Test_->SaveYUV("preview", buffer->GetVirAddr(), buffer->GetSize());
521 });
522 #else
__anon1ab2d62d1402(void* addr, uint32_t size) 523 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](void* addr, uint32_t size) {
524 Test_->SaveYUV("preview", addr, size);
525 });
526 #endif
527 Test_->streamInfo->bufferQueue_->SetQueueSize(8);
528 Test_->consumerMap_[Test_->streamInfo->intent_] = consumer;
529 Test_->streamInfos.push_back(Test_->streamInfo);
530 Test_->rc = Test_->streamOperator->CreateStreams(Test_->streamInfos);
531 std::cout << "streamOperator->CreateStreams's rc " << Test_->rc << std::endl;
532 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
533 // release stream
534 Test_->rc = Test_->streamOperator->ReleaseStreams({Test_->streamInfo->streamId_});
535 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
536 consumer->StopConsumer();
537 }
538
539 /**
540 * @tc.name: CreateStreams
541 * @tc.desc: CreateStreams, StreamInfo->format = -1, return error.
542 * @tc.size: MediumTest
543 * @tc.type: Function
544 */
545 HWTEST_F(HdiStreamTest, Camera_Hdi_0137, TestSize.Level2)
546 {
547 std::cout << "==========[test log]Check hdi: CreateStreams, StreamInfo->format = -1, return error." << std::endl;
548 Test_->Open();
549 Test_->CreateStreamOperatorCallback();
550 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
551 EXPECT_EQ(false, Test_->rc != Camera::NO_ERROR || Test_->streamOperator == nullptr);
552 // Create data stream
553 Test_->streamInfo = std::make_shared<Camera::StreamInfo>();
554 Test_->streamInfo->streamId_ = 1001;
555 Test_->streamInfo->width_ = 1920;
556 Test_->streamInfo->height_ = 1080;
557 Test_->streamInfo->format_ = -1;
558 Test_->streamInfo->dataspace_ = 8;
559 Test_->streamInfo->intent_ = Camera::PREVIEW;
560 Test_->streamInfo->tunneledMode_ = 5;
561 std::shared_ptr<OHOS::Camera::Test::StreamConsumer> consumer =
562 std::make_shared<OHOS::Camera::Test::StreamConsumer>();
563 #ifdef CAMERA_BUILT_ON_OHOS_LITE
__anon1ab2d62d1502(OHOS::SurfaceBuffer* buffer) 564 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](OHOS::SurfaceBuffer* buffer) {
565 Test_->SaveYUV("preview", buffer->GetVirAddr(), buffer->GetSize());
566 });
567 #else
__anon1ab2d62d1602(void* addr, uint32_t size) 568 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](void* addr, uint32_t size) {
569 Test_->SaveYUV("preview", addr, size);
570 });
571 #endif
572 Test_->streamInfo->bufferQueue_->SetQueueSize(8);
573 Test_->consumerMap_[Test_->streamInfo->intent_] = consumer;
574 Test_->streamInfos.push_back(Test_->streamInfo);
575 // Configure mode and modeSetting
576 Camera::OperationMode mode = Camera::NORMAL;
577 std::shared_ptr<CameraMetadata> modeSetting =
578 std::make_shared<CameraMetadata>(2, 128);
579 Camera::StreamSupportType pType;
580 std::vector<std::shared_ptr<Camera::StreamInfo>> stre;
581 stre.push_back(Test_->streamInfo);
582 Test_->rc = Test_->streamOperator->IsStreamsSupported(NORMAL, modeSetting, stre, pType);
583 EXPECT_EQ(Test_->rc, Camera::INVALID_ARGUMENT);
584 if (Test_->rc == Camera::NO_ERROR) {
585 std::cout << "==========[test log]Check hdi: IsStreamsSupported success." << std::endl;
586 } else {
587 std::cout << "==========[test log]Check hdi: IsStreamsSupported fail, rc = " << Test_->rc << std::endl;
588 }
589
590 Test_->rc = Test_->streamOperator->CreateStreams(Test_->streamInfos);
591 std::cout << "streamOperator->CreateStreams's rc " << Test_->rc << std::endl;
592 EXPECT_EQ(INVALID_ARGUMENT, Test_->rc);
593 consumer->StopConsumer();
594 }
595
596 /**
597 * @tc.name: CreateStreams
598 * @tc.desc: CreateStreams, StreamInfo->format = 2147483647, success.
599 * @tc.size: MediumTest
600 * @tc.type: Function
601 */
602 HWTEST_F(HdiStreamTest, Camera_Hdi_0138, TestSize.Level2)
603 {
604 std::cout << "==========[test log]Check hdi: CreateStreams, StreamInfo->format = 2147483647, success" << std::endl;
605 Test_->Open();
606 Test_->CreateStreamOperatorCallback();
607 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
608 EXPECT_EQ(false, Test_->rc != Camera::NO_ERROR || Test_->streamOperator == nullptr);
609 // Create data stream
610 Test_->streamInfo = std::make_shared<Camera::StreamInfo>();
611 Test_->streamInfo->streamId_ = 1001;
612 Test_->streamInfo->width_ = 1920;
613 Test_->streamInfo->height_ = 1080;
614 Test_->streamInfo->format_ = 2147483647;
615 Test_->streamInfo->dataspace_ = 8;
616 Test_->streamInfo->intent_ = Camera::PREVIEW;
617 Test_->streamInfo->tunneledMode_ = 5;
618 std::shared_ptr<OHOS::Camera::Test::StreamConsumer> consumer =
619 std::make_shared<OHOS::Camera::Test::StreamConsumer>();
620 #ifdef CAMERA_BUILT_ON_OHOS_LITE
__anon1ab2d62d1702(OHOS::SurfaceBuffer* buffer) 621 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](OHOS::SurfaceBuffer* buffer) {
622 Test_->SaveYUV("preview", buffer->GetVirAddr(), buffer->GetSize());
623 });
624 #else
__anon1ab2d62d1802(void* addr, uint32_t size) 625 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](void* addr, uint32_t size) {
626 Test_->SaveYUV("preview", addr, size);
627 });
628 #endif
629 Test_->streamInfo->bufferQueue_->SetQueueSize(8);
630 Test_->consumerMap_[Test_->streamInfo->intent_] = consumer;
631 Test_->streamInfos.push_back(Test_->streamInfo);
632 Test_->rc = Test_->streamOperator->CreateStreams(Test_->streamInfos);
633 std::cout << "streamOperator->CreateStreams's rc " << Test_->rc << std::endl;
634 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
635 // release stream
636 Test_->rc = Test_->streamOperator->ReleaseStreams({Test_->streamInfo->streamId_});
637 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
638 consumer->StopConsumer();
639 }
640
641 /**
642 * @tc.name: CreateStreams
643 * @tc.desc: CreateStreams, StreamInfo->dataspace = -1, return error.
644 * @tc.size: MediumTest
645 * @tc.type: Function
646 */
647 HWTEST_F(HdiStreamTest, Camera_Hdi_0139, TestSize.Level2)
648 {
649 std::cout << "==========[test log]Check hdi: CreateStreams, StreamInfo->dataspace = -1, error." << std::endl;
650 Test_->Open();
651 Test_->CreateStreamOperatorCallback();
652 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
653 EXPECT_EQ(false, Test_->rc != Camera::NO_ERROR || Test_->streamOperator == nullptr);
654 // Configure mode and modeSetting
655 Camera::OperationMode mode = Camera::NORMAL;
656 std::shared_ptr<CameraMetadata> modeSetting = nullptr;
657 // Configure stream information
658 Test_->streamInfo = std::make_shared<Camera::StreamInfo>();
659 Test_->streamInfo->streamId_ = 1001;
660 Test_->streamInfo->dataspace_ = -1;
661 Test_->streamInfo->height_ = 480;
662 Test_->streamInfo->width_ = 640;
663 Test_->StreamInfoFormat();
664 Test_->streamInfo->intent_ = Camera::PREVIEW;
665 Test_->streamInfo->tunneledMode_ = 5;
666 std::shared_ptr<OHOS::Camera::Test::StreamConsumer> consumer =
667 std::make_shared<OHOS::Camera::Test::StreamConsumer>();
668 #ifdef CAMERA_BUILT_ON_OHOS_LITE
__anon1ab2d62d1902(OHOS::SurfaceBuffer* buffer) 669 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](OHOS::SurfaceBuffer* buffer) {
670 Test_->SaveYUV("preview", buffer->GetVirAddr(), buffer->GetSize());
671 });
672 #else
__anon1ab2d62d1a02(void* addr, uint32_t size) 673 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](void* addr, uint32_t size) {
674 Test_->SaveYUV("preview", addr, size);
675 });
676 #endif
677 Test_->consumerMap_[Test_->streamInfo->intent_] = consumer;
678 Test_->streamInfo->bufferQueue_->SetQueueSize(8);
679 Camera::StreamSupportType pType;
680 std::vector<std::shared_ptr<Camera::StreamInfo>> stre;
681 stre.push_back(Test_->streamInfo);
682 Test_->rc = Test_->streamOperator->IsStreamsSupported(NORMAL, modeSetting, stre, pType);
683 EXPECT_EQ(Test_->rc, INVALID_ARGUMENT);
684 if (Test_->rc == Camera::NO_ERROR) {
685 std::cout << "==========[test log]Check hdi: IsStreamsSupported success." << std::endl;
686 } else {
687 std::cout << "==========[test log]Check hdi: IsStreamsSupported fail, rc = " << Test_->rc << std::endl;
688 }
689 consumer->StopConsumer();
690 }
691
692 /**
693 * @tc.name: CreateStreams
694 * @tc.desc: CreateStreams, StreamInfo->dataspace = 2147483647, success.
695 * @tc.size: MediumTest
696 * @tc.type: Function
697 */
698 HWTEST_F(HdiStreamTest, Camera_Hdi_0140, TestSize.Level2)
699 {
700 std::cout << "==========[test log]Check hdi: CreateStreams, dataspace = 2147483647, success" << std::endl;
701 Test_->Open();
702 Test_->CreateStreamOperatorCallback();
703 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
704 EXPECT_EQ(false, Test_->rc != Camera::NO_ERROR || Test_->streamOperator == nullptr);
705 // Create data stream
706 Test_->streamInfo = std::make_shared<Camera::StreamInfo>();
707 Test_->streamInfo->streamId_ = 1001;
708 Test_->streamInfo->width_ = 1920;
709 Test_->streamInfo->height_ = 1080;
710 Test_->StreamInfoFormat();
711 Test_->streamInfo->dataspace_ = 2147483647;
712 Test_->streamInfo->intent_ = Camera::PREVIEW;
713 Test_->streamInfo->tunneledMode_ = 5;
714 std::shared_ptr<OHOS::Camera::Test::StreamConsumer> consumer =
715 std::make_shared<OHOS::Camera::Test::StreamConsumer>();
716 #ifdef CAMERA_BUILT_ON_OHOS_LITE
__anon1ab2d62d1b02(OHOS::SurfaceBuffer* buffer) 717 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](OHOS::SurfaceBuffer* buffer) {
718 Test_->SaveYUV("preview", buffer->GetVirAddr(), buffer->GetSize());
719 });
720 #else
__anon1ab2d62d1c02(void* addr, uint32_t size) 721 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](void* addr, uint32_t size) {
722 Test_->SaveYUV("preview", addr, size);
723 });
724 #endif
725 Test_->streamInfo->bufferQueue_->SetQueueSize(8);
726 Test_->consumerMap_[Test_->streamInfo->intent_] = consumer;
727 Test_->streamInfos.push_back(Test_->streamInfo);
728 Test_->rc = Test_->streamOperator->CreateStreams(Test_->streamInfos);
729 std::cout << "streamOperator->CreateStreams's rc " << Test_->rc << std::endl;
730 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
731 // release stream
732 Test_->rc = Test_->streamOperator->ReleaseStreams({Test_->streamInfo->streamId_});
733 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
734 consumer->StopConsumer();
735 }
736
737 /**
738 * @tc.name: CreateStreams
739 * @tc.desc: CreateStreams, StreamInfo->StreamIntent = Camera::PREVIEW, success.
740 * @tc.size: MediumTest
741 * @tc.type: Function
742 */
743 HWTEST_F(HdiStreamTest, Camera_Hdi_0141, TestSize.Level2)
744 {
745 std::cout << "==========[test log]Check hdi: CreateStreams, StreamIntent = Camera::PREVIEW, success." << std::endl;
746 Test_->Open();
747 Test_->CreateStreamOperatorCallback();
748 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
749 EXPECT_EQ(false, Test_->rc != Camera::NO_ERROR || Test_->streamOperator == nullptr);
750 // Create data stream
751 Test_->streamInfo = std::make_shared<Camera::StreamInfo>();
752 Test_->streamInfo->streamId_ = 1001;
753 Test_->streamInfo->width_ = 1920;
754 Test_->streamInfo->height_ = 1080;
755 Test_->StreamInfoFormat();
756 Test_->streamInfo->dataspace_ = 8;
757 Test_->streamInfo->intent_ = Camera::PREVIEW;
758 Test_->streamInfo->tunneledMode_ = 5;
759 std::shared_ptr<OHOS::Camera::Test::StreamConsumer> consumer =
760 std::make_shared<OHOS::Camera::Test::StreamConsumer>();
761 #ifdef CAMERA_BUILT_ON_OHOS_LITE
__anon1ab2d62d1d02(OHOS::SurfaceBuffer* buffer) 762 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](OHOS::SurfaceBuffer* buffer) {
763 Test_->SaveYUV("preview", buffer->GetVirAddr(), buffer->GetSize());
764 });
765 #else
__anon1ab2d62d1e02(void* addr, uint32_t size) 766 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](void* addr, uint32_t size) {
767 Test_->SaveYUV("preview", addr, size);
768 });
769 #endif
770 Test_->consumerMap_[Test_->streamInfo->intent_] = consumer;
771 Test_->streamInfos.push_back(Test_->streamInfo);
772 Test_->rc = Test_->streamOperator->CreateStreams(Test_->streamInfos);
773 std::cout << "streamOperator->CreateStreams's rc " << Test_->rc << std::endl;
774 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
775 // release stream
776 Test_->rc = Test_->streamOperator->ReleaseStreams({Test_->streamInfo->streamId_});
777 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
778 consumer->StopConsumer();
779 }
780
781 /**
782 * @tc.name: CreateStreams
783 * @tc.desc: CreateStreams, StreamInfo->StreamIntent = Camera::VIDEO, success.
784 * @tc.size: MediumTest
785 * @tc.type: Function
786 */
787 HWTEST_F(HdiStreamTest, Camera_Hdi_0142, TestSize.Level2)
788 {
789 std::cout << "==========[test log]Check hdi: CreateStreams, StreamIntent = Camera::VIDEO, success." << std::endl;
790 Test_->Open();
791 Test_->CreateStreamOperatorCallback();
792 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
793 EXPECT_EQ(false, Test_->rc != Camera::NO_ERROR || Test_->streamOperator == nullptr);
794 // Create data stream
795 Test_->streamInfo = std::make_shared<Camera::StreamInfo>();
796 Test_->streamInfo->streamId_ = 1001;
797 Test_->streamInfo->width_ = 1920;
798 Test_->streamInfo->height_ = 1080;
799 Test_->StreamInfoFormat();
800 Test_->streamInfo->dataspace_ = 8;
801 Test_->streamInfo->intent_ = Camera::VIDEO;
802 Test_->streamInfo->tunneledMode_ = 5;
803 std::shared_ptr<OHOS::Camera::Test::StreamConsumer> consumer =
804 std::make_shared<OHOS::Camera::Test::StreamConsumer>();
805 #ifdef CAMERA_BUILT_ON_OHOS_LITE
__anon1ab2d62d1f02(OHOS::SurfaceBuffer* buffer) 806 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](OHOS::SurfaceBuffer* buffer) {
807 Test_->SaveYUV("preview", buffer->GetVirAddr(), buffer->GetSize());
808 });
809 #else
__anon1ab2d62d2002(void* addr, uint32_t size) 810 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](void* addr, uint32_t size) {
811 Test_->SaveYUV("preview", addr, size);
812 });
813 #endif
814 Test_->streamInfo->bufferQueue_->SetQueueSize(8);
815 Test_->consumerMap_[Test_->streamInfo->intent_] = consumer;
816 Test_->streamInfos.push_back(Test_->streamInfo);
817 Test_->rc = Test_->streamOperator->CreateStreams(Test_->streamInfos);
818 std::cout << "streamOperator->CreateStreams's rc " << Test_->rc << std::endl;
819 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
820 // release stream
821 Test_->rc = Test_->streamOperator->ReleaseStreams({Test_->streamInfo->streamId_});
822 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
823 consumer->StopConsumer();
824 }
825
826 /**
827 * @tc.name: CreateStreams
828 * @tc.desc: CreateStreams, StreamInfo->StreamIntent = Camera::STILL_CAPTURE, success.
829 * @tc.size: MediumTest
830 * @tc.type: Function
831 */
832 HWTEST_F(HdiStreamTest, Camera_Hdi_0143, TestSize.Level2)
833 {
834 std::cout << "==========[test log]Check hdi: CreateStreams, Camera::STILL_CAPTURE, success." << std::endl;
835 Test_->Open();
836 Test_->CreateStreamOperatorCallback();
837 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
838 EXPECT_EQ(false, Test_->rc != Camera::NO_ERROR || Test_->streamOperator == nullptr);
839 // Create data stream
840 Test_->streamInfo = std::make_shared<Camera::StreamInfo>();
841 Test_->streamInfo->streamId_ = 1001;
842 Test_->streamInfo->width_ = 1920;
843 Test_->streamInfo->height_ = 1080;
844 Test_->StreamInfoFormat();
845 Test_->streamInfo->dataspace_ = 8;
846 Test_->streamInfo->intent_ = Camera::STILL_CAPTURE;
847 Test_->streamInfo->tunneledMode_ = 5;
848 std::shared_ptr<OHOS::Camera::Test::StreamConsumer> consumer =
849 std::make_shared<OHOS::Camera::Test::StreamConsumer>();
850 #ifdef CAMERA_BUILT_ON_OHOS_LITE
__anon1ab2d62d2102(OHOS::SurfaceBuffer* buffer) 851 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](OHOS::SurfaceBuffer* buffer) {
852 Test_->SaveYUV("preview", buffer->GetVirAddr(), buffer->GetSize());
853 });
854 #else
__anon1ab2d62d2202(void* addr, uint32_t size) 855 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](void* addr, uint32_t size) {
856 Test_->SaveYUV("preview", addr, size);
857 });
858 #endif
859 Test_->streamInfo->bufferQueue_->SetQueueSize(8);
860 Test_->consumerMap_[Test_->streamInfo->intent_] = consumer;
861 Test_->streamInfos.push_back(Test_->streamInfo);
862 Test_->rc = Test_->streamOperator->CreateStreams(Test_->streamInfos);
863 std::cout << "streamOperator->CreateStreams's rc " << Test_->rc << std::endl;
864 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
865 // release stream
866 Test_->rc = Test_->streamOperator->ReleaseStreams({Test_->streamInfo->streamId_});
867 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
868 consumer->StopConsumer();
869 }
870
871 /**
872 * @tc.name: CreateStreams
873 * @tc.desc: CreateStreams, StreamInfo->StreamIntent = Camera::POST_VIEW;, success.
874 * @tc.size: MediumTest
875 * @tc.type: Function
876 */
877 HWTEST_F(HdiStreamTest, Camera_Hdi_0144, TestSize.Level2)
878 {
879 std::cout << "==========[test log]Check hdi: CreateStreams, Camera::POST_VIEW;, success." << std::endl;
880 Test_->Open();
881 Test_->CreateStreamOperatorCallback();
882 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
883 EXPECT_EQ(false, Test_->rc != Camera::NO_ERROR || Test_->streamOperator == nullptr);
884 // Create data stream
885 Test_->streamInfo = std::make_shared<Camera::StreamInfo>();
886 Test_->streamInfo->streamId_ = 1001;
887 Test_->streamInfo->width_ = 1920;
888 Test_->streamInfo->height_ = 1080;
889 Test_->StreamInfoFormat();
890 Test_->streamInfo->dataspace_ = 8;
891 Test_->streamInfo->intent_ = Camera::POST_VIEW;
892 Test_->streamInfo->tunneledMode_ = 5;
893 std::shared_ptr<OHOS::Camera::Test::StreamConsumer> consumer =
894 std::make_shared<OHOS::Camera::Test::StreamConsumer>();
895 #ifdef CAMERA_BUILT_ON_OHOS_LITE
__anon1ab2d62d2302(OHOS::SurfaceBuffer* buffer) 896 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](OHOS::SurfaceBuffer* buffer) {
897 Test_->SaveYUV("preview", buffer->GetVirAddr(), buffer->GetSize());
898 });
899 #else
__anon1ab2d62d2402(void* addr, uint32_t size) 900 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](void* addr, uint32_t size) {
901 Test_->SaveYUV("preview", addr, size);
902 });
903 #endif
904 Test_->streamInfo->bufferQueue_->SetQueueSize(8);
905 Test_->consumerMap_[Test_->streamInfo->intent_] = consumer;
906 Test_->streamInfos.push_back(Test_->streamInfo);
907 Test_->rc = Test_->streamOperator->CreateStreams(Test_->streamInfos);
908 std::cout << "streamOperator->CreateStreams's rc " << Test_->rc << std::endl;
909 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
910 // release stream
911 Test_->rc = Test_->streamOperator->ReleaseStreams({Test_->streamInfo->streamId_});
912 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
913 consumer->StopConsumer();
914 }
915
916 /**
917 * @tc.name: CreateStreams
918 * @tc.desc: CreateStreams, StreamInfo->StreamIntent = Camera::ANALYZE;, success.
919 * @tc.size: MediumTest
920 * @tc.type: Function
921 */
922 HWTEST_F(HdiStreamTest, Camera_Hdi_0145, TestSize.Level2)
923 {
924 std::cout << "==========[test log]Check hdi: CreateStreams, Camera::ANALYZE;, success." << std::endl;
925 Test_->Open();
926 Test_->CreateStreamOperatorCallback();
927 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
928 EXPECT_EQ(false, Test_->rc != Camera::NO_ERROR || Test_->streamOperator == nullptr);
929 // Create data stream
930 Test_->streamInfo = std::make_shared<Camera::StreamInfo>();
931 Test_->streamInfo->streamId_ = 1001;
932 Test_->streamInfo->width_ = 1920;
933 Test_->streamInfo->height_ = 1080;
934 Test_->StreamInfoFormat();
935 Test_->streamInfo->dataspace_ = 8;
936 Test_->streamInfo->intent_ = Camera::ANALYZE;
937 Test_->streamInfo->tunneledMode_ = 5;
938 std::shared_ptr<OHOS::Camera::Test::StreamConsumer> consumer =
939 std::make_shared<OHOS::Camera::Test::StreamConsumer>();
940 #ifdef CAMERA_BUILT_ON_OHOS_LITE
__anon1ab2d62d2502(OHOS::SurfaceBuffer* buffer) 941 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](OHOS::SurfaceBuffer* buffer) {
942 Test_->SaveYUV("preview", buffer->GetVirAddr(), buffer->GetSize());
943 });
944 #else
__anon1ab2d62d2602(void* addr, uint32_t size) 945 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](void* addr, uint32_t size) {
946 Test_->SaveYUV("preview", addr, size);
947 });
948 #endif
949 Test_->streamInfo->bufferQueue_->SetQueueSize(8);
950 Test_->consumerMap_[Test_->streamInfo->intent_] = consumer;
951 Test_->streamInfos.push_back(Test_->streamInfo);
952 Test_->rc = Test_->streamOperator->CreateStreams(Test_->streamInfos);
953 std::cout << "streamOperator->CreateStreams's rc " << Test_->rc << std::endl;
954 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
955 // release stream
956 Test_->rc = Test_->streamOperator->ReleaseStreams({Test_->streamInfo->streamId_});
957 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
958 consumer->StopConsumer();
959 }
960
961 /**
962 * @tc.name: CreateStreams
963 * @tc.desc: CreateStreams, StreamInfo->StreamIntent = Camera::CUSTOM;, success.
964 * @tc.size: MediumTest
965 * @tc.type: Function
966 */
967 HWTEST_F(HdiStreamTest, Camera_Hdi_0146, TestSize.Level2)
968 {
969 std::cout << "==========[test log]Check hdi: CreateStreams, Camera::CUSTOM;, success." << std::endl;
970 Test_->Open();
971 Test_->CreateStreamOperatorCallback();
972 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
973 EXPECT_EQ(false, Test_->rc != Camera::NO_ERROR || Test_->streamOperator == nullptr);
974 // Create data stream
975 Test_->streamInfo = std::make_shared<Camera::StreamInfo>();
976 Test_->streamInfo->streamId_ = 1001;
977 Test_->streamInfo->width_ = 1920;
978 Test_->streamInfo->height_ = 1080;
979 Test_->StreamInfoFormat();
980 Test_->streamInfo->dataspace_ = 8;
981 Test_->streamInfo->intent_ = Camera::CUSTOM;
982 Test_->streamInfo->tunneledMode_ = 5;
983 std::shared_ptr<OHOS::Camera::Test::StreamConsumer> consumer =
984 std::make_shared<OHOS::Camera::Test::StreamConsumer>();
985 #ifdef CAMERA_BUILT_ON_OHOS_LITE
__anon1ab2d62d2702(OHOS::SurfaceBuffer* buffer) 986 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](OHOS::SurfaceBuffer* buffer) {
987 Test_->SaveYUV("preview", buffer->GetVirAddr(), buffer->GetSize());
988 });
989 #else
__anon1ab2d62d2802(void* addr, uint32_t size) 990 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](void* addr, uint32_t size) {
991 Test_->SaveYUV("preview", addr, size);
992 });
993 #endif
994 Test_->streamInfo->bufferQueue_->SetQueueSize(8);
995 Test_->consumerMap_[Test_->streamInfo->intent_] = consumer;
996 Test_->streamInfos.push_back(Test_->streamInfo);
997 Test_->rc = Test_->streamOperator->CreateStreams(Test_->streamInfos);
998 std::cout << "streamOperator->CreateStreams's rc " << Test_->rc << std::endl;
999 EXPECT_NE(Test_->rc, Camera::NO_ERROR);
1000 consumer->StopConsumer();
1001 }
1002
1003 /**
1004 * @tc.name: CreateStreams
1005 * @tc.desc: CreateStreams, StreamInfo->tunneledMode = false, success.
1006 * @tc.size: MediumTest
1007 * @tc.type: Function
1008 */
1009 HWTEST_F(HdiStreamTest, Camera_Hdi_0147, TestSize.Level2)
1010 {
1011 std::cout << "==========[test log]Check hdi: CreateStreams, tunneledMode = false, success." << std::endl;
1012 Test_->Open();
1013 Test_->CreateStreamOperatorCallback();
1014 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
1015 EXPECT_EQ(false, Test_->rc != Camera::NO_ERROR || Test_->streamOperator == nullptr);
1016 // Create data stream
1017 Test_->streamInfo = std::make_shared<Camera::StreamInfo>();
1018 Test_->streamInfo->streamId_ = 1001;
1019 Test_->streamInfo->width_ = 1920;
1020 Test_->streamInfo->height_ = 1080;
1021 Test_->StreamInfoFormat();
1022 Test_->streamInfo->dataspace_ = 8;
1023 Test_->streamInfo->intent_ = Camera::CUSTOM;
1024 Test_->streamInfo->tunneledMode_ = 0;
1025 std::shared_ptr<OHOS::Camera::Test::StreamConsumer> consumer =
1026 std::make_shared<OHOS::Camera::Test::StreamConsumer>();
1027 #ifdef CAMERA_BUILT_ON_OHOS_LITE
__anon1ab2d62d2902(OHOS::SurfaceBuffer* buffer) 1028 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](OHOS::SurfaceBuffer* buffer) {
1029 Test_->SaveYUV("preview", buffer->GetVirAddr(), buffer->GetSize());
1030 });
1031 #else
__anon1ab2d62d2a02(void* addr, uint32_t size) 1032 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](void* addr, uint32_t size) {
1033 Test_->SaveYUV("preview", addr, size);
1034 });
1035 #endif
1036 Test_->streamInfo->bufferQueue_->SetQueueSize(8);
1037 Test_->consumerMap_[Test_->streamInfo->intent_] = consumer;
1038 Test_->streamInfos.push_back(Test_->streamInfo);
1039 Test_->rc = Test_->streamOperator->CreateStreams(Test_->streamInfos);
1040 std::cout << "streamOperator->CreateStreams's rc " << Test_->rc << std::endl;
1041 EXPECT_EQ(Test_->rc, Camera::INSUFFICIENT_RESOURCES);
1042 consumer->StopConsumer();
1043 }
1044
1045 /**
1046 * @tc.name: CreateStreams
1047 * @tc.desc: CreateStreams, StreamInfo->minFrameDuration = -1, return error.
1048 * @tc.size: MediumTest
1049 * @tc.type: Function
1050 */
1051 HWTEST_F(HdiStreamTest, Camera_Hdi_0148, TestSize.Level2)
1052 {
1053 std::cout << "==========[test log]Check hdi: CreateStreams, minFrameDuration = -1, return error." << std::endl;
1054 Test_->Open();
1055 Test_->CreateStreamOperatorCallback();
1056 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
1057 EXPECT_EQ(false, Test_->rc != Camera::NO_ERROR || Test_->streamOperator == nullptr);
1058 // Create data stream
1059 Test_->streamInfo = std::make_shared<Camera::StreamInfo>();
1060 }
1061
1062 /**
1063 * @tc.name: CreateStreams
1064 * @tc.desc: CreateStreams, StreamInfo->minFrameDuration = 2147483647, success.
1065 * @tc.size: MediumTest
1066 * @tc.type: Function
1067 */
1068 HWTEST_F(HdiStreamTest, Camera_Hdi_0149, TestSize.Level2)
1069 {
1070 std::cout << "==========[test log]Check hdi: CreateStreams, minFrameDuration = 2147483647, success." << std::endl;
1071 Test_->Open();
1072 Test_->CreateStreamOperatorCallback();
1073 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
1074 EXPECT_EQ(false, Test_->rc != Camera::NO_ERROR || Test_->streamOperator == nullptr);
1075 // Create data stream
1076 Test_->streamInfo = std::make_shared<Camera::StreamInfo>();
1077 }
1078
1079 /**
1080 * @tc.name: ReleaseStreams
1081 * @tc.desc: ReleaseStreams,streamID normal.
1082 * @tc.size: MediumTest
1083 * @tc.type: Function
1084 */
1085 HWTEST_F(HdiStreamTest, Camera_Hdi_0160, TestSize.Level0)
1086 {
1087 std::cout << "==========[test log]Check hdi: ReleaseStreams,streamID normal." << std::endl;
1088 Test_->Open();
1089 // Create and get streamOperator information
1090 Test_->CreateStreamOperatorCallback();
1091 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
1092 EXPECT_EQ(false, Test_->rc != Camera::NO_ERROR || Test_->streamOperator == nullptr);
1093 // Create data stream
1094 Test_->streamInfo = std::make_shared<Camera::StreamInfo>();
1095 Test_->streamInfo->streamId_ = 1001;
1096 Test_->streamInfo->width_ = 640;
1097 Test_->streamInfo->height_ = 480;
1098 Test_->streamInfo->intent_ = Camera::PREVIEW;
1099 Test_->StreamInfoFormat();
1100 Test_->streamInfo->dataspace_ = 8;
1101 Test_->streamInfo->tunneledMode_ = 5;
1102 std::shared_ptr<OHOS::Camera::Test::StreamConsumer> consumer =
1103 std::make_shared<OHOS::Camera::Test::StreamConsumer>();
1104 #ifdef CAMERA_BUILT_ON_OHOS_LITE
__anon1ab2d62d2b02(OHOS::SurfaceBuffer* buffer) 1105 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](OHOS::SurfaceBuffer* buffer) {
1106 Test_->SaveYUV("preview", buffer->GetVirAddr(), buffer->GetSize());
1107 });
1108 #else
__anon1ab2d62d2c02(void* addr, uint32_t size) 1109 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](void* addr, uint32_t size) {
1110 Test_->SaveYUV("preview", addr, size);
1111 });
1112 #endif
1113 Test_->streamInfo->bufferQueue_->SetQueueSize(8);
1114 Test_->consumerMap_[Test_->streamInfo->intent_] = consumer;
1115 Test_->streamInfos.push_back(Test_->streamInfo);
1116 Test_->rc = Test_->streamOperator->CreateStreams(Test_->streamInfos);
1117 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
1118 // release stream
1119 Test_->rc = Test_->streamOperator->ReleaseStreams({Test_->streamInfo->streamId_});
1120 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
1121 consumer->StopConsumer();
1122 }
1123
1124 /**
1125 * @tc.name: ReleaseStreams
1126 * @tc.desc: ReleaseStreams-> streamID = -1, expected success.
1127 * @tc.size: MediumTest
1128 * @tc.type: Function
1129 */
1130 HWTEST_F(HdiStreamTest, Camera_Hdi_0161, TestSize.Level2)
1131 {
1132 std::cout << "==========[test log]Check hdi: ReleaseStreams-> streamID = -1, expected success." << std::endl;
1133 Test_->Open();
1134 // Start stream
1135 Test_->intents = {Camera::PREVIEW};
1136 Test_->StartStream(Test_->intents);
1137 // Get preview
1138 Test_->StartCapture(Test_->streamId_preview, Test_->captureId_preview, false, true);
1139 // release capture and stream
1140 Test_->streamOperator->CancelCapture(Test_->captureId_preview);
1141 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
1142 Test_->rc = Test_->streamOperator->ReleaseStreams({-1});
1143 EXPECT_EQ(true, Test_->rc != Camera::NO_ERROR);
1144 std::cout << "streamOperator->ReleaseStreams's rc " << Test_->rc << std::endl;
1145 Test_->rc = Test_->streamOperator->ReleaseStreams({Test_->streamId_preview});
1146 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
1147 std::cout << "streamOperator->ReleaseStreams's rc " << Test_->rc << std::endl;
1148 Test_->StopConsumer(Test_->intents);
1149 }
1150
1151 /**
1152 * @tc.name: CommitStreams
1153 * @tc.desc: CommitStreams, input normal.
1154 * @tc.size: MediumTest
1155 * @tc.type: Function
1156 */
1157 HWTEST_F(HdiStreamTest, Camera_Hdi_0170, TestSize.Level0)
1158 {
1159 std::cout << "==========[test log]Check hdi: CommitStreams, input normal." << std::endl;
1160 Test_->Open();
1161 // Start stream
1162 Test_->intents = {Camera::PREVIEW};
1163 Test_->StartStream(Test_->intents);
1164 // release stream
1165 Test_->captureIds = {};
1166 Test_->streamIds = {Test_->streamId_preview};
1167 Test_->StopStream(Test_->captureIds, Test_->streamIds);
1168 Test_->StopConsumer(Test_->intents);
1169 }
1170
1171 /**
1172 * @tc.name: CommitStreams
1173 * @tc.desc: CommitStreams, modeSetting is nullptr.
1174 * @tc.size: MediumTest
1175 * @tc.type: Function
1176 */
1177 HWTEST_F(HdiStreamTest, Camera_Hdi_0171, TestSize.Level1)
1178 {
1179 std::cout << "==========[test log]Check hdi: CommitStreams, modeSetting is nullptr." << std::endl;
1180 Test_->Open();
1181 // Create and get streamOperator information
1182 Test_->CreateStreamOperatorCallback();
1183 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
1184 EXPECT_EQ(false, Test_->rc != Camera::NO_ERROR || Test_->streamOperator == nullptr);
1185 // Create data stream
1186 Test_->streamInfo = std::make_shared<Camera::StreamInfo>();
1187 Test_->streamInfo->streamId_ = Test_->streamId_preview;
1188 Test_->streamInfo->width_ = 640;
1189 Test_->streamInfo->height_ = 480;
1190 Test_->StreamInfoFormat();
1191 Test_->streamInfo->dataspace_ = 8;
1192 std::shared_ptr<OHOS::Camera::Test::StreamConsumer> consumer =
1193 std::make_shared<OHOS::Camera::Test::StreamConsumer>();
1194 Test_->streamInfo->intent_ = Camera::PREVIEW;
1195 #ifdef CAMERA_BUILT_ON_OHOS_LITE
__anon1ab2d62d2d02(OHOS::SurfaceBuffer* buffer) 1196 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](OHOS::SurfaceBuffer* buffer) {
1197 Test_->SaveYUV("preview", buffer->GetVirAddr(), buffer->GetSize());
1198 });
1199 #else
__anon1ab2d62d2e02(void* addr, uint32_t size) 1200 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](void* addr, uint32_t size) {
1201 Test_->SaveYUV("preview", addr, size);
1202 });
1203 #endif
1204 Test_->streamInfo->bufferQueue_->SetQueueSize(8);
1205 Test_->streamInfo->tunneledMode_ = 5;
1206 Test_->consumerMap_[Test_->streamInfo->intent_] = consumer;
1207 Test_->streamInfos.push_back(Test_->streamInfo);
1208 Test_->rc = Test_->streamOperator->CreateStreams(Test_->streamInfos);
1209 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
1210 std::shared_ptr<CameraMetadata> modeSetting = nullptr;
1211 // Distribution stream
1212 Test_->rc = Test_->streamOperator->CommitStreams(Camera::NORMAL, nullptr);
1213 EXPECT_EQ(Test_->rc, INVALID_ARGUMENT);
1214 if (Test_->rc == Camera::NO_ERROR) {
1215 std::cout << "==========[test log]Check hdi: CommitStreams success." << std::endl;
1216 } else {
1217 std::cout << "==========[test log]Check hdi: CommitStreams fail, rc = " << Test_->rc << std::endl;
1218 }
1219 // release stream
1220 Test_->captureIds = {};
1221 Test_->streamIds = {Test_->streamId_preview};
1222 Test_->StopStream(Test_->captureIds, Test_->streamIds);
1223 consumer->StopConsumer();
1224 }
1225
1226 /**
1227 * @tc.name: GetStreamAttributes
1228 * @tc.desc: GetStreamAttributes, success.
1229 * @tc.size: MediumTest
1230 * @tc.type: Function
1231 */
1232 HWTEST_F(HdiStreamTest, Camera_Hdi_0180, TestSize.Level0)
1233 {
1234 std::cout << "==========[test log]Check hdi: GetStreamAttributes, success." << std::endl;
1235 Test_->Open();
1236 // Start stream
1237 Test_->intents = {Camera::PREVIEW};
1238 Test_->StartStream(Test_->intents);
1239
1240 std::vector<std::shared_ptr<Camera::StreamAttribute>> attributes;
1241 Test_->rc = Test_->streamOperator->GetStreamAttributes(attributes);
1242 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
1243 if (Test_->rc == Camera::NO_ERROR) {
1244 std::cout << "==========[test log]Check hdi: GetStreamAttributes success." << std::endl;
1245 } else {
1246 std::cout << "==========[test log]Check hdi: GetStreamAttributes fail, rc = " << Test_->rc << std::endl;
1247 }
1248 // release stream
1249 Test_->rc = Test_->streamOperator->ReleaseStreams({Test_->streamId_preview});
1250 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
1251 std::cout << "streamOperator->ReleaseStreams's rc " << Test_->rc << std::endl;
1252 Test_->StopConsumer(Test_->intents);
1253 }
1254
1255 /**
1256 * @tc.name: Capture
1257 * @tc.desc: Capture, input normal.
1258 * @tc.size: MediumTest
1259 * @tc.type: Function
1260 */
1261 HWTEST_F(HdiStreamTest, Camera_Hdi_0190, TestSize.Level0)
1262 {
1263 std::cout << "==========[test log]Check hdi: Capture, input normal." << std::endl;
1264 Test_->Open();
1265 // Start stream
1266 Test_->intents = {Camera::PREVIEW};
1267 Test_->StartStream(Test_->intents);
1268 // Get preview
1269 Test_->StartCapture(Test_->streamId_preview, Test_->captureId_preview, false, true);
1270 // release stream
1271 Test_->captureIds = {Test_->captureId_preview};
1272 Test_->streamIds = {Test_->streamId_preview};
1273 Test_->StopStream(Test_->captureIds, Test_->streamIds);
1274 Test_->StopConsumer(Test_->intents);
1275 }
1276
1277 /**
1278 * @tc.name: Capture
1279 * @tc.desc: Preview, Capture->captureInfo->streamID = -1 ,return error.
1280 * @tc.size: MediumTest
1281 * @tc.type: Function
1282 */
1283 #if 1
1284 HWTEST_F(HdiStreamTest, Camera_Hdi_0191, TestSize.Level2)
1285 {
1286 std::cout << "==========[test log]Check hdi: Preview, captureInfo->streamID = -1 ,return error." << std::endl;
1287 Test_->Open();
1288 // Start stream
1289 Test_->intents = {Camera::PREVIEW};
1290 Test_->StartStream(Test_->intents);
1291 // Get preview
1292 int captureId = 2001;
1293 Test_->captureInfo = std::make_shared<Camera::CaptureInfo>();
1294 Test_->captureInfo->streamIds_ = {-1};
1295 Test_->captureInfo->captureSetting_ = Test_->ability;
1296 Test_->captureInfo->enableShutterCallback_ = true;
1297 Test_->rc = Test_->streamOperator->Capture(captureId, Test_->captureInfo, true);
1298 EXPECT_EQ(INVALID_ARGUMENT, Test_->rc);
1299 sleep(3); // sleep for 3 seconds
1300 Test_->streamOperator->CancelCapture(captureId);
1301 // release stream
1302 Test_->captureIds = {};
1303 Test_->streamIds = {Test_->streamId_preview};
1304 Test_->StopStream(Test_->captureIds, Test_->streamIds);
1305 Test_->StopConsumer(Test_->intents);
1306 }
1307 #endif
1308
1309 /**
1310 * @tc.name: Capture
1311 * @tc.desc: Preview, Capture->captureInfo->streamID = 2147483647 ,return success.
1312 * @tc.size: MediumTest
1313 * @tc.type: Function
1314 */
1315 HWTEST_F(HdiStreamTest, Camera_Hdi_0192, TestSize.Level2)
1316 {
1317 std::cout << "==========[test log]Check hdi: captureInfo->streamID = 2147483647 ,return success." << std::endl;
1318 Test_->Open();
1319 // Create and get streamOperator information
1320 Test_->CreateStreamOperatorCallback();
1321 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
1322 EXPECT_EQ(false, Test_->rc != Camera::NO_ERROR || Test_->streamOperator == nullptr);
1323 // Create data stream
1324 Test_->streamInfo = std::make_shared<Camera::StreamInfo>();
1325 Test_->streamInfo->streamId_ = 2147483647;
1326 Test_->streamInfo->width_ = 640;
1327 Test_->streamInfo->height_ = 480;
1328 Test_->StreamInfoFormat();
1329 Test_->streamInfo->tunneledMode_ = 5;
1330 Test_->streamInfo->dataspace_ = 8;
1331 Test_->streamInfo->intent_ = Camera::PREVIEW;
1332 std::shared_ptr<OHOS::Camera::Test::StreamConsumer> consumer =
1333 std::make_shared<OHOS::Camera::Test::StreamConsumer>();
1334 #ifdef CAMERA_BUILT_ON_OHOS_LITE
__anon1ab2d62d2f02(OHOS::SurfaceBuffer* buffer) 1335 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](OHOS::SurfaceBuffer* buffer) {
1336 Test_->SaveYUV("preview", buffer->GetVirAddr(), buffer->GetSize());
1337 });
1338 #else
__anon1ab2d62d3002(void* addr, uint32_t size) 1339 Test_->streamInfo->bufferQueue_ = consumer->CreateProducer([this](void* addr, uint32_t size) {
1340 Test_->SaveYUV("preview", addr, size);
1341 });
1342 #endif
1343 Test_->streamInfo->bufferQueue_->SetQueueSize(8);
1344 Test_->consumerMap_[Test_->streamInfo->intent_] = consumer;
1345 Test_->streamInfos.push_back(Test_->streamInfo);
1346 Test_->rc = Test_->streamOperator->CreateStreams(Test_->streamInfos);
1347 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
1348 // Distribution stream
1349 Test_->rc = Test_->streamOperator->CommitStreams(Camera::NORMAL, Test_->ability);
1350 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
1351 // Get preview
1352 int captureId = 2001;
1353 Test_->captureInfo = std::make_shared<Camera::CaptureInfo>();
1354 Test_->captureInfo->streamIds_ = {2147483647};
1355 Test_->captureInfo->captureSetting_ = Test_->ability;
1356 Test_->captureInfo->enableShutterCallback_ = true;
1357 bool isStreaming = true;
1358 Test_->rc = Test_->streamOperator->Capture(captureId, Test_->captureInfo, isStreaming);
1359 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
1360 sleep(3); // sleep for 3 seconds
1361 Test_->streamOperator->CancelCapture(captureId);
1362
1363 // release stream
1364 Test_->rc = Test_->streamOperator->ReleaseStreams(Test_->captureInfo->streamIds_);
1365 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
1366 // Turn off the device
1367 Test_->cameraDevice->Close();
1368 std::cout << "cameraDevice->Close" << std::endl;
1369 consumer->StopConsumer();
1370 }
1371
1372 /**
1373 * @tc.name: Capture
1374 * @tc.desc: Preview, Capture->captureInfo->enableShutterCallback = false ,return success.
1375 * @tc.size: MediumTest
1376 * @tc.type: Function
1377 */
1378 HWTEST_F(HdiStreamTest, Camera_Hdi_0193, TestSize.Level2)
1379 {
1380 std::cout << "==========[test log]Check hdi: captureInfo->enableShutterCallback = false , success." << std::endl;
1381 Test_->Open();
1382 // Configure two streams of information
1383 Test_->intents = {Camera::PREVIEW, Camera::STILL_CAPTURE};
1384 Test_->StartStream(Test_->intents);
1385 // Capture preview stream
1386 Test_->StartCapture(Test_->streamId_preview, Test_->captureId_preview, false, true);
1387 // Capture the photo stream, single capture
1388 Test_->StartCapture(Test_->streamId_capture, Test_->captureId_capture, false, false);
1389 // post-processing
1390 Test_->captureIds = {Test_->captureId_preview};
1391 Test_->streamIds = {Test_->streamId_preview, Test_->streamId_capture};
1392 Test_->StopStream(Test_->captureIds, Test_->streamIds);
1393 Test_->StopConsumer(Test_->intents);
1394 }
1395
1396 /**
1397 * @tc.name: Capture
1398 * @tc.desc: Preview, Capture->isStreaming = false ,expected success.
1399 * @tc.size: MediumTest
1400 * @tc.type: Function
1401 */
1402 HWTEST_F(HdiStreamTest, Camera_Hdi_0194, TestSize.Level2)
1403 {
1404 std::cout << "==========[test log]Check hdi: isStreaming = false ,expected success." << std::endl;
1405 Test_->Open();
1406 // Configure two streams of information
1407 Test_->intents = {Camera::PREVIEW, Camera::STILL_CAPTURE};
1408 Test_->StartStream(Test_->intents);
1409 // Capture preview stream
1410 Test_->StartCapture(Test_->streamId_preview, Test_->captureId_preview, false, true);
1411 // Capture the photo stream, single capture
1412 Test_->StartCapture(Test_->streamId_capture, Test_->captureId_capture, false, false);
1413 // post-processing
1414 Test_->captureIds = {Test_->captureId_preview};
1415 Test_->streamIds = {Test_->streamId_preview, Test_->streamId_capture};
1416 Test_->StopStream(Test_->captureIds, Test_->streamIds);
1417 Test_->StopConsumer(Test_->intents);
1418 }
1419
1420 /**
1421 * @tc.name: Capture
1422 * @tc.desc: Preview, Capture->captureId = -1 ,return error.
1423 * @tc.size: MediumTest
1424 * @tc.type: Function
1425 */
1426 HWTEST_F(HdiStreamTest, Camera_Hdi_0195, TestSize.Level2)
1427 {
1428 std::cout << "==========[test log]Check hdi: Preview, Capture->captureId = -1 ,return error." << std::endl;
1429 Test_->Open();
1430 // Configure preview stream information
1431 Test_->intents = {Camera::PREVIEW};
1432 Test_->StartStream(Test_->intents);
1433 // Capture preview stream
1434 Test_->StartCapture(Test_->streamId_preview, Test_->captureId_preview, false, true);
1435 // Get preview
1436 Test_->captureInfo = std::make_shared<Camera::CaptureInfo>();
1437 Test_->captureInfo->streamIds_ = {Test_->streamId_preview};
1438 Test_->captureInfo->captureSetting_ = Test_->ability;
1439 Test_->captureInfo->enableShutterCallback_ = false;
1440 bool isStreaming = true;
1441 int captureId = -1;
1442 Test_->rc = Test_->streamOperator->Capture(captureId, Test_->captureInfo, isStreaming);
1443 EXPECT_EQ(INVALID_ARGUMENT, Test_->rc);
1444 sleep(3); // sleep for 3 seconds
1445 // release stream
1446 Test_->rc = Test_->streamOperator->ReleaseStreams({Test_->streamId_preview});
1447 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
1448 Test_->StopConsumer(Test_->intents);
1449 }
1450
1451 /**
1452 * @tc.name: Capture
1453 * @tc.desc: Preview, Capture->captureInfo->enableShutterCallback = true ,return success.
1454 * @tc.size: MediumTest
1455 * @tc.type: Function
1456 */
1457 HWTEST_F(HdiStreamTest, Camera_Hdi_0196, TestSize.Level2)
1458 {
1459 std::cout << "==========[test log]Check hdi: captureInfo->enableShutterCallback = true , success." << std::endl;
1460 Test_->Open();
1461 // Configure preview stream information
1462 Test_->intents = {Camera::PREVIEW};
1463 Test_->StartStream(Test_->intents);
1464 // Capture preview stream
1465 Test_->StartCapture(Test_->streamId_preview, Test_->captureId_preview, true, true);
1466 // post-processing
1467 Test_->captureIds = {Test_->captureId_preview};
1468 Test_->streamIds = {Test_->streamId_preview};
1469 Test_->StopStream(Test_->captureIds, Test_->streamIds);
1470 Test_->StopConsumer(Test_->intents);
1471 }
1472
1473 /**
1474 * @tc.name: CancelCapture
1475 * @tc.desc: CancelCapture, success.
1476 * @tc.size: MediumTest
1477 * @tc.type: Function
1478 */
1479 HWTEST_F(HdiStreamTest, Camera_Hdi_0200, TestSize.Level0)
1480 {
1481 std::cout << "==========[test log]Check hdi: CancelCapture, success." << std::endl;
1482 Test_->Open();
1483 // Configure preview stream information
1484 Test_->intents = {Camera::PREVIEW};
1485 Test_->StartStream(Test_->intents);
1486 // Capture preview stream
1487 Test_->StartCapture(Test_->streamId_preview, Test_->captureId_preview, true, true);
1488 // post-processing
1489 Test_->captureIds = {Test_->captureId_preview};
1490 Test_->streamIds = {Test_->streamId_preview};
1491 Test_->StopStream(Test_->captureIds, Test_->streamIds);
1492 Test_->StopConsumer(Test_->intents);
1493 }
1494
1495 /**
1496 * @tc.name: CancelCapture
1497 * @tc.desc: CancelCapture captureID = -1.
1498 * @tc.size: MediumTest
1499 * @tc.type: Function
1500 */
1501 HWTEST_F(HdiStreamTest, Camera_Hdi_0201, TestSize.Level2)
1502 {
1503 std::cout << "==========[test log]Check hdi: CancelCapture captureID = -1, expected fail." << std::endl;
1504 Test_->Open();
1505 // Configure preview stream information
1506 Test_->intents = {Camera::PREVIEW};
1507 Test_->StartStream(Test_->intents);
1508 // Capture preview stream
1509 Test_->StartCapture(Test_->streamId_preview, Test_->captureId_preview, true, true);
1510 // Cancel capture
1511 Test_->rc = Test_->streamOperator->CancelCapture(-1);
1512 EXPECT_EQ(INVALID_ARGUMENT, Test_->rc);
1513 std::cout << "==========[test log]Check hdi: CancelCapture captureID = -1, return INVALID_ARGUMENT." << std::endl;
1514 // post-processing
1515 Test_->captureIds = {Test_->captureId_preview};
1516 Test_->streamIds = {Test_->streamId_preview};
1517 Test_->StopStream(Test_->captureIds, Test_->streamIds);
1518 Test_->StopConsumer(Test_->intents);
1519 }
1520
1521 /**
1522 * @tc.name: AttachBufferQueue
1523 * @tc.desc: AttachBufferQueue, normal input.
1524 * @tc.size: MediumTest
1525 * @tc.type: Function
1526 */
1527 HWTEST_F(HdiStreamTest, Camera_Hdi_0210, TestSize.Level0)
1528 {
1529 std::cout << "==========[test log]Check hdi: AttachBufferQueue, normal input." << std::endl;
1530 // Turn on the camera
1531 Test_->Open();
1532 Test_->CreateStreamOperatorCallback();
1533 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
1534 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
1535 // Create data stream
1536 Test_->streamInfo = std::make_shared<Camera::StreamInfo>();
1537 Test_->streamInfo->streamId_ = 1001;
1538 Test_->streamInfo->height_ = 480;
1539 Test_->streamInfo->width_ = 640;
1540 Test_->StreamInfoFormat();
1541 Test_->streamInfo->dataspace_ = 8;
1542 Test_->streamInfo->intent_ = Camera::PREVIEW;
1543 Test_->streamInfo->tunneledMode_ = 5;
1544 std::vector<std::shared_ptr<Camera::StreamInfo>>().swap(Test_->streamInfos);
1545 Test_->streamInfos.push_back(Test_->streamInfo);
1546 Test_->rc = Test_->streamOperator->CreateStreams(Test_->streamInfos);
1547 std::cout << "==========[test log]Check hdi: streamOperator->CreateStreams's rc " << Test_->rc << std::endl;
1548 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
1549 // Distribution stream
1550 Test_->rc = Test_->streamOperator->CommitStreams(Camera::NORMAL, Test_->ability);
1551 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
1552 std::cout << "==========[test log]Check hdi: streamOperator->CommitStreams's rc " << Test_->rc << std::endl;
1553 std::shared_ptr<OHOS::Camera::Test::StreamConsumer> consumer =
1554 std::make_shared<OHOS::Camera::Test::StreamConsumer>();
1555 #ifdef CAMERA_BUILT_ON_OHOS_LITE
__anon1ab2d62d3102(OHOS::SurfaceBuffer* buffer) 1556 std::shared_ptr<OHOS::Surface> producer = consumer->CreateProducer([this](OHOS::SurfaceBuffer* buffer) {
1557 Test_->SaveYUV("preview", buffer->GetVirAddr(), buffer->GetSize());
1558 });
1559 #else
__anon1ab2d62d3202(void* addr, uint32_t size) 1560 OHOS::sptr<OHOS::IBufferProducer> producer = consumer->CreateProducer([this](void* addr, uint32_t size) {
1561 Test_->SaveYUV("preview", addr, size);
1562 });
1563 #endif
1564 Test_->rc = Test_->streamOperator->AttachBufferQueue(Test_->streamInfo->streamId_, producer);
1565 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
1566 if (Test_->rc == Camera::NO_ERROR) {
1567 std::cout << "==========[test log]Check hdi: AttachBufferQueue success. " << std::endl;
1568 } else {
1569 std::cout << "==========[test log]Check hdi: AttachBufferQueue fail, rc = " << Test_->rc << std::endl;
1570 }
1571 // release stream
1572 Test_->captureIds = {};
1573 Test_->streamIds = {1001};
1574 Test_->StopStream(Test_->captureIds, Test_->streamIds);
1575 consumer->StopConsumer();
1576 }
1577
1578 /**
1579 * @tc.name: AttachBufferQueue
1580 * @tc.desc: AttachBufferQueue, streamID is not exist.
1581 * @tc.size: MediumTest
1582 * @tc.type: Function
1583 */
1584 HWTEST_F(HdiStreamTest, Camera_Hdi_0211, TestSize.Level2)
1585 {
1586 std::cout << "==========[test log]Check hdi: AttachBufferQueue, streamID is not exist.." << std::endl;
1587 // Turn on the camera
1588 Test_->Open();
1589 Test_->CreateStreamOperatorCallback();
1590 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
1591 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
1592 // Create data stream
1593 Test_->streamInfo = std::make_shared<Camera::StreamInfo>();
1594 Test_->streamInfo->streamId_ = 1001;
1595 Test_->streamInfo->width_ = 640;
1596 Test_->StreamInfoFormat();
1597 Test_->streamInfo->height_ = 480;
1598 Test_->streamInfo->dataspace_ = 8;
1599 Test_->streamInfo->intent_ = Camera::PREVIEW;
1600 Test_->streamInfo->tunneledMode_ = 5;
1601 std::vector<std::shared_ptr<Camera::StreamInfo>>().swap(Test_->streamInfos);
1602 Test_->streamInfos.push_back(Test_->streamInfo);
1603 Test_->rc = Test_->streamOperator->CreateStreams(Test_->streamInfos);
1604 std::cout << "==========[test log]Check hdi: streamOperator->CreateStreams's rc " << Test_->rc << std::endl;
1605 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
1606 // Distribution stream
1607 Test_->rc = Test_->streamOperator->CommitStreams(Camera::NORMAL, Test_->ability);
1608 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
1609 std::cout << "==========[test log]Check hdi: streamOperator->CommitStreams's rc " << Test_->rc << std::endl;
1610 std::shared_ptr<OHOS::Camera::Test::StreamConsumer> consumer =
1611 std::make_shared<OHOS::Camera::Test::StreamConsumer>();
1612 #ifdef CAMERA_BUILT_ON_OHOS_LITE
__anon1ab2d62d3302(OHOS::SurfaceBuffer* buffer) 1613 std::shared_ptr<OHOS::Surface> producer = consumer->CreateProducer([this](OHOS::SurfaceBuffer* buffer) {
1614 Test_->SaveYUV("preview", buffer->GetVirAddr(), buffer->GetSize());
1615 });
1616 #else
__anon1ab2d62d3402(void* addr, uint32_t size) 1617 OHOS::sptr<OHOS::IBufferProducer> producer = consumer->CreateProducer([this](void* addr, uint32_t size) {
1618 Test_->SaveYUV("preview", addr, size);
1619 });
1620 #endif
1621 Test_->rc = Test_->streamOperator->AttachBufferQueue(0, producer);
1622 EXPECT_EQ(Test_->rc, Camera::INVALID_ARGUMENT);
1623 if (Test_->rc == Camera::NO_ERROR) {
1624 std::cout << "==========[test log]Check hdi: AttachBufferQueue success. " << std::endl;
1625 } else {
1626 std::cout << "==========[test log]Check hdi: AttachBufferQueue fail, rc = " << Test_->rc << std::endl;
1627 }
1628 // release stream
1629 Test_->captureIds = {};
1630 Test_->streamIds = {1001};
1631 Test_->StopStream(Test_->captureIds, Test_->streamIds);
1632 consumer->StopConsumer();
1633 }
1634
1635 /**
1636 * @tc.name: AttachBufferQueue
1637 * @tc.desc: AttachBufferQueue, producer is nullptr.
1638 * @tc.size: MediumTest
1639 * @tc.type: Function
1640 */
1641 HWTEST_F(HdiStreamTest, Camera_Hdi_0212, TestSize.Level2)
1642 {
1643 std::cout << "==========[test log]Check hdi: AttachBufferQueue, producer is nullptr." << std::endl;
1644 // Turn on the camera
1645 Test_->Open();
1646 Test_->CreateStreamOperatorCallback();
1647 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
1648 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
1649 // Create data stream
1650 Test_->streamInfo = std::make_shared<Camera::StreamInfo>();
1651 Test_->streamInfo->streamId_ = 1001;
1652 Test_->streamInfo->width_ = 640;
1653 Test_->streamInfo->dataspace_ = 8;
1654 Test_->streamInfo->height_ = 480;
1655 Test_->StreamInfoFormat();
1656 Test_->streamInfo->intent_ = Camera::PREVIEW;
1657 Test_->streamInfo->tunneledMode_ = 5;
1658 std::vector<std::shared_ptr<Camera::StreamInfo>>().swap(Test_->streamInfos);
1659 Test_->streamInfos.push_back(Test_->streamInfo);
1660 Test_->rc = Test_->streamOperator->CreateStreams(Test_->streamInfos);
1661 std::cout << "==========[test log]Check hdi: streamOperator->CreateStreams's rc " << Test_->rc << std::endl;
1662 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
1663 // Distribution stream
1664 Test_->rc = Test_->streamOperator->CommitStreams(Camera::NORMAL, Test_->ability);
1665 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
1666 std::cout << "==========[test log]Check hdi: streamOperator->CommitStreams's rc " << Test_->rc << std::endl;
1667 Test_->rc = Test_->streamOperator->AttachBufferQueue(Test_->streamInfo->streamId_, nullptr);
1668 EXPECT_EQ(Test_->rc, Camera::INVALID_ARGUMENT);
1669 if (Test_->rc == Camera::NO_ERROR) {
1670 std::cout << "==========[test log]Check hdi: AttachBufferQueue success. " << std::endl;
1671 } else {
1672 std::cout << "==========[test log]Check hdi: AttachBufferQueue fail, rc = " << Test_->rc << std::endl;
1673 }
1674 // release stream
1675 Test_->captureIds = {};
1676 Test_->streamIds = {1001};
1677 Test_->StopStream(Test_->captureIds, Test_->streamIds);
1678 }
1679
1680 /**
1681 * @tc.name: DetachBufferQueue
1682 * @tc.desc: DetachBufferQueue, normal input.
1683 * @tc.size: MediumTest
1684 * @tc.type: Function
1685 */
1686 HWTEST_F(HdiStreamTest, Camera_Hdi_0220, TestSize.Level0)
1687 {
1688 std::cout << "==========[test log]Check hdi: DetachBufferQueue, normal input." << std::endl;
1689 // Turn on the camera
1690 Test_->Open();
1691 Test_->CreateStreamOperatorCallback();
1692 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
1693 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
1694 // Create data stream
1695 Test_->streamInfo = std::make_shared<Camera::StreamInfo>();
1696 Test_->streamInfo->streamId_ = 1001;
1697 Test_->streamInfo->width_ = 640;
1698 Test_->streamInfo->height_ = 480;
1699 Test_->StreamInfoFormat();
1700 Test_->streamInfo->intent_ = Camera::PREVIEW;
1701 Test_->streamInfo->dataspace_ = 8;
1702 Test_->streamInfo->tunneledMode_ = 5;
1703 std::vector<std::shared_ptr<Camera::StreamInfo>>().swap(Test_->streamInfos);
1704 Test_->streamInfos.push_back(Test_->streamInfo);
1705 Test_->rc = Test_->streamOperator->CreateStreams(Test_->streamInfos);
1706 std::cout << "==========[test log]Check hdi: streamOperator->CreateStreams's rc " << Test_->rc << std::endl;
1707 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
1708 // Distribution stream
1709 Test_->rc = Test_->streamOperator->CommitStreams(Camera::NORMAL, Test_->ability);
1710 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
1711 std::cout << "==========[test log]Check hdi: streamOperator->CommitStreams's rc " << Test_->rc << std::endl;
1712 std::shared_ptr<OHOS::Camera::Test::StreamConsumer> consumer =
1713 std::make_shared<OHOS::Camera::Test::StreamConsumer>();
1714 #ifdef CAMERA_BUILT_ON_OHOS_LITE
__anon1ab2d62d3502(OHOS::SurfaceBuffer* buffer) 1715 std::shared_ptr<OHOS::Surface> producer = consumer->CreateProducer([this](OHOS::SurfaceBuffer* buffer) {
1716 Test_->SaveYUV("preview", buffer->GetVirAddr(), buffer->GetSize());
1717 });
1718 #else
__anon1ab2d62d3602(void* addr, uint32_t size) 1719 OHOS::sptr<OHOS::IBufferProducer> producer = consumer->CreateProducer([this](void* addr, uint32_t size) {
1720 Test_->SaveYUV("preview", addr, size);
1721 });
1722 #endif
1723 Test_->rc = Test_->streamOperator->AttachBufferQueue(Test_->streamInfo->streamId_, producer);
1724 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
1725 if (Test_->rc == Camera::NO_ERROR) {
1726 std::cout << "==========[test log]Check hdi: AttachBufferQueue success. " << std::endl;
1727 } else {
1728 std::cout << "==========[test log]Check hdi: AttachBufferQueue fail, rc = " << Test_->rc << std::endl;
1729 }
1730 sleep(3); // sleep for 3 seconds
1731 Test_->rc = Test_->streamOperator->DetachBufferQueue(Test_->streamInfo->streamId_);
1732 std::cout << "==========[test log]Check hdi: streamOperator->DetachBufferQueue's rc " << Test_->rc << std::endl;
1733 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
1734 // release stream
1735 Test_->captureIds = {};
1736 Test_->streamIds = {1001};
1737 Test_->StopStream(Test_->captureIds, Test_->streamIds);
1738 consumer->StopConsumer();
1739 }
1740
1741 /**
1742 * @tc.name: DetachBufferQueue
1743 * @tc.desc: DetachBufferQueue, streamID is not exist.
1744 * @tc.size: MediumTest
1745 * @tc.type: Function
1746 */
1747 HWTEST_F(HdiStreamTest, Camera_Hdi_0221, TestSize.Level2)
1748 {
1749 std::cout << "==========[test log]Check hdi: DetachBufferQueue, streamID is not exist." << std::endl;
1750 // Turn on the camera
1751 Test_->Open();
1752 Test_->CreateStreamOperatorCallback();
1753 Test_->rc = Test_->cameraDevice->GetStreamOperator(Test_->streamOperatorCallback, Test_->streamOperator);
1754 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
1755 // Create data stream
1756 Test_->streamInfo = std::make_shared<Camera::StreamInfo>();
1757 Test_->streamInfo->streamId_ = 1001;
1758 Test_->streamInfo->width_ = 640;
1759 Test_->streamInfo->intent_ = Camera::PREVIEW;
1760 Test_->streamInfo->height_ = 480;
1761 Test_->StreamInfoFormat();
1762 Test_->streamInfo->dataspace_ = 8;
1763 Test_->streamInfo->tunneledMode_ = 5;
1764 std::vector<std::shared_ptr<Camera::StreamInfo>>().swap(Test_->streamInfos);
1765 Test_->streamInfos.push_back(Test_->streamInfo);
1766 Test_->rc = Test_->streamOperator->CreateStreams(Test_->streamInfos);
1767 std::cout << "==========[test log]Check hdi: streamOperator->CreateStreams's rc " << Test_->rc << std::endl;
1768 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
1769 // Distribution stream
1770 Test_->rc = Test_->streamOperator->CommitStreams(Camera::NORMAL, Test_->ability);
1771 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
1772 std::cout << "==========[test log]Check hdi: streamOperator->CommitStreams's rc " << Test_->rc << std::endl;
1773 std::shared_ptr<OHOS::Camera::Test::StreamConsumer> consumer =
1774 std::make_shared<OHOS::Camera::Test::StreamConsumer>();
1775 #ifdef CAMERA_BUILT_ON_OHOS_LITE
__anon1ab2d62d3702(OHOS::SurfaceBuffer* buffer) 1776 std::shared_ptr<OHOS::Surface> producer = consumer->CreateProducer([this](OHOS::SurfaceBuffer* buffer) {
1777 Test_->SaveYUV("preview", buffer->GetVirAddr(), buffer->GetSize());
1778 });
1779 #else
__anon1ab2d62d3802(void* addr, uint32_t size) 1780 OHOS::sptr<OHOS::IBufferProducer> producer = consumer->CreateProducer([this](void* addr, uint32_t size) {
1781 Test_->SaveYUV("preview", addr, size);
1782 });
1783 #endif
1784 Test_->rc = Test_->streamOperator->AttachBufferQueue(Test_->streamInfo->streamId_, producer);
1785 EXPECT_EQ(Test_->rc, Camera::NO_ERROR);
1786 if (Test_->rc == Camera::NO_ERROR) {
1787 std::cout << "==========[test log]Check hdi: AttachBufferQueue success. " << std::endl;
1788 } else {
1789 std::cout << "==========[test log]Check hdi: AttachBufferQueue fail, rc = " << Test_->rc << std::endl;
1790 }
1791 sleep(3); // sleep for 3 seconds
1792 Test_->rc = Test_->streamOperator->DetachBufferQueue(100);
1793 std::cout << "==========[test log]Check hdi: streamOperator->DetachBufferQueue's rc " << Test_->rc << std::endl;
1794 EXPECT_EQ(Test_->rc, Camera::INVALID_ARGUMENT);
1795 // release stream
1796 Test_->captureIds = {};
1797 Test_->streamIds = {1001};
1798 Test_->StopStream(Test_->captureIds, Test_->streamIds);
1799 consumer->StopConsumer();
1800 }
1801
1802 /**
1803 * @tc.name: ChangeToOfflineStream
1804 * @tc.desc: ChangeToOfflineStream, normal input.
1805 * @tc.size: MediumTest
1806 * @tc.type: Function
1807 */
1808 HWTEST_F(HdiStreamTest, Camera_Hdi_0230, TestSize.Level0)
1809 {
1810 std::cout << "==========[test log]ChangeToOfflineStream, normal input." << std::endl;
1811 Test_->Open();
1812 // 1. Configure two streams of information
1813 Test_->intents = {Camera::PREVIEW, Camera::STILL_CAPTURE};
1814 Test_->StartStream(Test_->intents);
1815 // 2. Capture the preview stream
1816 Test_->StartCapture(Test_->streamId_preview, Test_->captureId_preview, false, true);
1817 // 3. Capture the camera stream, continuous shooting
1818 Test_->StartCapture(Test_->streamId_capture, Test_->captureId_capture, false, true);
1819 sleep(3); // sleep for 3 seconds
1820 // 4. Convert to offline stream
1821 Test_->CreateOfflineStreamOperatorCallback();
1822 std::vector<int> offlineIds;
1823 offlineIds.push_back(Test_->streamId_capture);
1824 Test_->rc = Test_->streamOperator->ChangeToOfflineStream(
1825 offlineIds, Test_->offlineStreamOperatorCallback, Test_->offlineStreamOperator);
1826 ASSERT_EQ(Test_->rc, Camera::NO_ERROR);
1827 std::cout << "==========[test log] ChangeToOfflineStream rc = " << Test_->rc << std::endl;
1828 EXPECT_EQ(true, Test_->offlineStreamOperator != nullptr);
1829 if (Test_->rc == Camera::NO_ERROR) {
1830 std::cout << "==========[test log] offline StreamOperator != nullptr" << std::endl;
1831 } else {
1832 std::cout << "==========[test log] offline StreamOperator == nullptr" << std::endl;
1833 }
1834 // 5. Post-processing of the original stream
1835 Test_->captureIds = {Test_->captureId_preview, Test_->captureId_capture};
1836 Test_->streamIds = {Test_->streamId_preview, Test_->streamId_capture};
1837 Test_->StopStream(Test_->captureIds, Test_->streamIds);
1838 // 6. Post-processing of offline streams
1839 Test_->cameraDevice->Close();
1840 std::cout << "==========[test log] Pretend to wait 5s for callback..." << std::endl;
1841 sleep(3); // sleep for 3 seconds
1842 Test_->StopOfflineStream(Test_->captureId_capture);
1843 Test_->StopConsumer(Test_->intents);
1844 }
1845
1846 /**
1847 * @tc.name: ChangeToOfflineStream
1848 * @tc.desc: ChangeToOfflineStream, streamId is not exist.
1849 * @tc.size: MediumTest
1850 * @tc.type: Function
1851 */
1852 HWTEST_F(HdiStreamTest, Camera_Hdi_0231, TestSize.Level2)
1853 {
1854 std::cout << "==========[test log]ChangeToOfflineStream, streamId is not exist." << std::endl;
1855 Test_->Open();
1856 // Configure two streams of information
1857 Test_->intents = {Camera::PREVIEW, Camera::STILL_CAPTURE};
1858 Test_->StartStream(Test_->intents);
1859 // Capture preview stream
1860 Test_->StartCapture(Test_->streamId_preview, Test_->captureId_preview, false, true);
1861 // Capture the photo stream, single capture
1862 Test_->StartCapture(Test_->streamId_capture, Test_->captureId_capture, false, true);
1863 sleep(3); // sleep for 3 seconds
1864 // Convert to offline stream
1865 Test_->CreateOfflineStreamOperatorCallback();
1866 Test_->rc = Test_->streamOperator->ChangeToOfflineStream(
1867 {99}, Test_->offlineStreamOperatorCallback, Test_->offlineStreamOperator);
1868 ASSERT_EQ(Test_->rc, Camera::INVALID_ARGUMENT);
1869 std::cout << "==========[test log]Check offline: ChangeToOfflineStream rc = " << Test_->rc << std::endl;
1870 EXPECT_EQ(true, Test_->offlineStreamOperator == nullptr);
1871 if (Test_->rc == Camera::NO_ERROR) {
1872 std::cout << "==========[test log]Check offline stream: offline StreamOperator != nullptr" << std::endl;
1873 } else {
1874 std::cout << "==========[test log]Check offline stream: offline StreamOperator == nullptr" << std::endl;
1875 }
1876 // Post-processing of the original stream
1877 Test_->captureIds = {Test_->captureId_preview, Test_->captureId_capture};
1878 Test_->streamIds = {Test_->streamId_preview, Test_->streamId_capture};
1879 Test_->StopStream(Test_->captureIds, Test_->streamIds);
1880 Test_->StopConsumer(Test_->intents);
1881 }
1882
1883 /**
1884 * @tc.name: ChangeToOfflineStream
1885 * @tc.desc: ChangeToOfflineStream, offlineStreamOperatorCallback is nullptr.
1886 * @tc.size: MediumTest
1887 * @tc.type: Function
1888 */
1889 HWTEST_F(HdiStreamTest, Camera_Hdi_0232, TestSize.Level2)
1890 {
1891 std::cout << "==========[test log]ChangeToOfflineStream, offlineStreamOperatorCallback is nullptr." << std::endl;
1892 Test_->Open();
1893 // Configure two streams of information
1894 Test_->intents = {Camera::PREVIEW, Camera::STILL_CAPTURE};
1895 Test_->StartStream(Test_->intents);
1896 // Capture preview stream
1897 Test_->StartCapture(Test_->streamId_preview, Test_->captureId_preview, false, true);
1898 // Capture the photo stream, single capture
1899 Test_->StartCapture(Test_->streamId_capture, Test_->captureId_capture, false, true);
1900 sleep(3); // sleep for 3 seconds
1901 // Convert to offline stream
1902 Test_->offlineStreamOperatorCallback = nullptr;
1903 Test_->rc = Test_->streamOperator->ChangeToOfflineStream(
1904 {99}, Test_->offlineStreamOperatorCallback, Test_->offlineStreamOperator);
1905 ASSERT_EQ(Test_->rc, Camera::INVALID_ARGUMENT);
1906 std::cout << "==========[test log]Check offline: ChangeToOfflineStream rc = " << Test_->rc << std::endl;
1907 EXPECT_EQ(true, Test_->offlineStreamOperator == nullptr);
1908 if (Test_->rc == Camera::NO_ERROR) {
1909 std::cout << "==========[test log]Check offline stream: offline StreamOperator != nullptr" << std::endl;
1910 } else {
1911 std::cout << "==========[test log]Check offline stream: offline StreamOperator == nullptr" << std::endl;
1912 }
1913 // Post-processing of the original stream
1914 Test_->captureIds = {Test_->captureId_preview, Test_->captureId_capture};
1915 Test_->streamIds = {Test_->streamId_preview, Test_->streamId_capture};
1916 Test_->StopStream(Test_->captureIds, Test_->streamIds);
1917 Test_->StopConsumer(Test_->intents);
1918 }
1919
1920 /**
1921 * @tc.name: offlineStreamOperator->CancelCapture
1922 * @tc.desc: offlineStreamOperator->CancelCapture, -1.
1923 * @tc.size: MediumTest
1924 * @tc.type: Function
1925 */
1926 HWTEST_F(HdiStreamTest, Camera_Hdi_0241, TestSize.Level2)
1927 {
1928 std::cout << "==========[test log]ChangeToOfflineStream, normal input." << std::endl;
1929 Test_->Open();
1930 // 1. Configure two streams of information
1931 Test_->intents = {Camera::PREVIEW, Camera::STILL_CAPTURE};
1932 Test_->StartStream(Test_->intents);
1933 // 2. Capture the preview stream
1934 Test_->StartCapture(Test_->streamId_preview, Test_->captureId_preview, false, true);
1935 // 3. Capture the camera stream, continuous shooting
1936 Test_->StartCapture(Test_->streamId_capture, Test_->captureId_capture, false, true);
1937 sleep(3); // sleep for 3 seconds
1938 // 4. Convert to offline stream
1939 Test_->CreateOfflineStreamOperatorCallback();
1940 std::vector<int> offlineIds;
1941 offlineIds.push_back(Test_->streamId_capture);
1942 Test_->rc = Test_->streamOperator->ChangeToOfflineStream(
1943 offlineIds, Test_->offlineStreamOperatorCallback, Test_->offlineStreamOperator);
1944 ASSERT_EQ(Test_->rc, Camera::NO_ERROR);
1945 std::cout << "==========[test log] ChangeToOfflineStream rc = " << Test_->rc << std::endl;
1946 EXPECT_EQ(true, Test_->offlineStreamOperator != nullptr);
1947 if (Test_->rc == Camera::NO_ERROR) {
1948 std::cout << "==========[test log] offline StreamOperator != nullptr" << std::endl;
1949 } else {
1950 std::cout << "==========[test log] offline StreamOperator == nullptr" << std::endl;
1951 }
1952 // 5. Post-processing of the original stream
1953 Test_->captureIds = {Test_->captureId_preview, Test_->captureId_capture};
1954 Test_->streamIds = {Test_->streamId_preview, Test_->streamId_capture};
1955 Test_->StopStream(Test_->captureIds, Test_->streamIds);
1956 // 6. Post-processing of offline streams
1957 Test_->cameraDevice->Close();
1958 std::cout << "==========[test log] Pretend to wait 5s for callback..." << std::endl;
1959 sleep(3); // sleep for 3 seconds
1960
1961 Test_->rc = Test_->offlineStreamOperator->CancelCapture(-1);
1962 EXPECT_EQ(Test_->rc, Camera::INVALID_ARGUMENT);
1963 std::cout << "==========[test log]check offline: CancelCapture fail, rc = " << Test_->rc;
1964 std::cout << "captureId = -1" << std::endl;
1965
1966 Test_->StopOfflineStream(Test_->captureId_capture);
1967 Test_->StopConsumer(Test_->intents);
1968 }
1969