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