1094332d3Sopenharmony_ci/* 2094332d3Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 3094332d3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4094332d3Sopenharmony_ci * you may not use this file except in compliance with the License. 5094332d3Sopenharmony_ci * You may obtain a copy of the License at 6094332d3Sopenharmony_ci * 7094332d3Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8094332d3Sopenharmony_ci * 9094332d3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10094332d3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11094332d3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12094332d3Sopenharmony_ci * See the License for the specific language governing permissions and 13094332d3Sopenharmony_ci * limitations under the License. 14094332d3Sopenharmony_ci */ 15094332d3Sopenharmony_ci#include "camera_preview_test.h" 16094332d3Sopenharmony_ci 17094332d3Sopenharmony_ciusing namespace testing::ext; 18094332d3Sopenharmony_ci 19094332d3Sopenharmony_civoid CameraPreviewTest::SetUpTestCase(void) 20094332d3Sopenharmony_ci{ 21094332d3Sopenharmony_ci} 22094332d3Sopenharmony_ci 23094332d3Sopenharmony_civoid CameraPreviewTest::TearDownTestCase(void) 24094332d3Sopenharmony_ci{ 25094332d3Sopenharmony_ci} 26094332d3Sopenharmony_ci 27094332d3Sopenharmony_civoid CameraPreviewTest::SetUp(void) 28094332d3Sopenharmony_ci{ 29094332d3Sopenharmony_ci if (cameraBase_ == nullptr) 30094332d3Sopenharmony_ci cameraBase_ = std::make_shared<TestCameraBase>(); 31094332d3Sopenharmony_ci cameraBase_->Init(); 32094332d3Sopenharmony_ci} 33094332d3Sopenharmony_ci 34094332d3Sopenharmony_civoid CameraPreviewTest::TearDown(void) 35094332d3Sopenharmony_ci{ 36094332d3Sopenharmony_ci cameraBase_->Close(); 37094332d3Sopenharmony_ci} 38094332d3Sopenharmony_ci 39094332d3Sopenharmony_ci/** 40094332d3Sopenharmony_ci * @tc.name: Preview 41094332d3Sopenharmony_ci * @tc.desc: Preview, format error, expected return errorCode. 42094332d3Sopenharmony_ci * @tc.level: Level2 43094332d3Sopenharmony_ci * @tc.size: MediumTest 44094332d3Sopenharmony_ci * @tc.type: Function 45094332d3Sopenharmony_ci */ 46094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_003, TestSize.Level2) 47094332d3Sopenharmony_ci{ 48094332d3Sopenharmony_ci CAMERA_LOGD("Preview, format error, expected return errorCode."); 49094332d3Sopenharmony_ci // Create and get streamOperator information 50094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 51094332d3Sopenharmony_ci // Create data stream 52094332d3Sopenharmony_ci if (cameraBase_->streamCustomerPreview_ == nullptr) { 53094332d3Sopenharmony_ci cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>(); 54094332d3Sopenharmony_ci } 55094332d3Sopenharmony_ci OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer(); 56094332d3Sopenharmony_ci producer->SetQueueSize(8); // 8:set bufferQueue size 57094332d3Sopenharmony_ci if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size 58094332d3Sopenharmony_ci CAMERA_LOGE("~~~~~~~"); 59094332d3Sopenharmony_ci } 60094332d3Sopenharmony_ci std::vector<StreamInfo> streamInfos; 61094332d3Sopenharmony_ci StreamInfo streamInfo = {}; 62094332d3Sopenharmony_ci streamInfo.streamId_ = 1001; 63094332d3Sopenharmony_ci streamInfo.width_ = 640; // 640:picture width 64094332d3Sopenharmony_ci streamInfo.height_ = 480; // 480:picture height 65094332d3Sopenharmony_ci streamInfo.format_ = -1; 66094332d3Sopenharmony_ci streamInfo.dataspace_ = 10; // 10:picture dataspace 67094332d3Sopenharmony_ci streamInfo.intent_ = PREVIEW; 68094332d3Sopenharmony_ci streamInfo.tunneledMode_ = 5; // 5:tunnel mode 69094332d3Sopenharmony_ci streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer); 70094332d3Sopenharmony_ci ASSERT_NE(streamInfo.bufferQueue_, nullptr); 71094332d3Sopenharmony_ci streamInfos.push_back(streamInfo); 72094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos); 73094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc != HDI::Camera::V1_0::NO_ERROR); 74094332d3Sopenharmony_ci if (cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR) { 75094332d3Sopenharmony_ci CAMERA_LOGI("CreateStreams success."); 76094332d3Sopenharmony_ci } else { 77094332d3Sopenharmony_ci CAMERA_LOGE("CreateStreams fail, rc = %{public}d", cameraBase_->rc); 78094332d3Sopenharmony_ci } 79094332d3Sopenharmony_ci} 80094332d3Sopenharmony_ci 81094332d3Sopenharmony_ci/** 82094332d3Sopenharmony_ci * @tc.name: Preview 83094332d3Sopenharmony_ci * @tc.desc: CreateStreams, success. 84094332d3Sopenharmony_ci * @tc.level: Level1 85094332d3Sopenharmony_ci * @tc.size: MediumTest 86094332d3Sopenharmony_ci * @tc.type: Function 87094332d3Sopenharmony_ci */ 88094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_020, TestSize.Level1) 89094332d3Sopenharmony_ci{ 90094332d3Sopenharmony_ci CAMERA_LOGD("CreateStreams, success."); 91094332d3Sopenharmony_ci // Create and get streamOperator information 92094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 93094332d3Sopenharmony_ci // Create data stream 94094332d3Sopenharmony_ci if (cameraBase_->streamCustomerPreview_ == nullptr) { 95094332d3Sopenharmony_ci cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>(); 96094332d3Sopenharmony_ci } 97094332d3Sopenharmony_ci OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer(); 98094332d3Sopenharmony_ci producer->SetQueueSize(8); // 8:set bufferQueue size 99094332d3Sopenharmony_ci if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size 100094332d3Sopenharmony_ci CAMERA_LOGE("~~~~~~~"); 101094332d3Sopenharmony_ci } 102094332d3Sopenharmony_ci 103094332d3Sopenharmony_ci std::vector<StreamInfo> streamInfos; 104094332d3Sopenharmony_ci StreamInfo streamInfo = {}; 105094332d3Sopenharmony_ci streamInfo.streamId_ = 1001; 106094332d3Sopenharmony_ci streamInfo.width_ = 640; // 640:picture width 107094332d3Sopenharmony_ci streamInfo.height_ = 480; // 480:picture height 108094332d3Sopenharmony_ci streamInfo.format_ = PIXEL_FMT_RGBA_8888; 109094332d3Sopenharmony_ci streamInfo.dataspace_ = 8; // 8:picture dataspace 110094332d3Sopenharmony_ci streamInfo.intent_ = PREVIEW; 111094332d3Sopenharmony_ci streamInfo.tunneledMode_ = 5; // 5:tunnel mode 112094332d3Sopenharmony_ci streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer); 113094332d3Sopenharmony_ci ASSERT_NE(streamInfo.bufferQueue_, nullptr); 114094332d3Sopenharmony_ci std::vector<StreamInfo>().swap(streamInfos); 115094332d3Sopenharmony_ci streamInfos.push_back(streamInfo); 116094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos); 117094332d3Sopenharmony_ci CAMERA_LOGD("CreateStreams's RetCode = %{public}d", cameraBase_->rc); 118094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 119094332d3Sopenharmony_ci CAMERA_LOGD("CreateStreams, success."); 120094332d3Sopenharmony_ci // Submit stream information 121094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CommitStreams(NORMAL, cameraBase_->ability_); 122094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 123094332d3Sopenharmony_ci if (cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR) { 124094332d3Sopenharmony_ci CAMERA_LOGI("CommitStreams, success."); 125094332d3Sopenharmony_ci } else { 126094332d3Sopenharmony_ci CAMERA_LOGE("CommitStreams fail, rc = %{public}d", cameraBase_->rc); 127094332d3Sopenharmony_ci } 128094332d3Sopenharmony_ci // capture 129094332d3Sopenharmony_ci cameraBase_->StartCapture(1001, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 130094332d3Sopenharmony_ci // release stream 131094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW}; 132094332d3Sopenharmony_ci cameraBase_->streamIds = {1001}; 133094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 134094332d3Sopenharmony_ci} 135094332d3Sopenharmony_ci 136094332d3Sopenharmony_ci/** 137094332d3Sopenharmony_ci * @tc.name: Preview 138094332d3Sopenharmony_ci * @tc.desc: CreateStreams, StreamInfo->streamId = -1, return error. 139094332d3Sopenharmony_ci * @tc.level: Level2 140094332d3Sopenharmony_ci * @tc.size: MediumTest 141094332d3Sopenharmony_ci * @tc.type: Function 142094332d3Sopenharmony_ci */ 143094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_021, TestSize.Level2) 144094332d3Sopenharmony_ci{ 145094332d3Sopenharmony_ci CAMERA_LOGD("CreateStreams, success."); 146094332d3Sopenharmony_ci // Create and get streamOperator information 147094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 148094332d3Sopenharmony_ci // Create data stream 149094332d3Sopenharmony_ci if (cameraBase_->streamCustomerPreview_ == nullptr) { 150094332d3Sopenharmony_ci cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>(); 151094332d3Sopenharmony_ci } 152094332d3Sopenharmony_ci OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer(); 153094332d3Sopenharmony_ci producer->SetQueueSize(8); // 8:set bufferQueue size 154094332d3Sopenharmony_ci if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size 155094332d3Sopenharmony_ci CAMERA_LOGE("~~~~~~~"); 156094332d3Sopenharmony_ci } 157094332d3Sopenharmony_ci std::vector<StreamInfo> streamInfos; 158094332d3Sopenharmony_ci StreamInfo streamInfo = {}; 159094332d3Sopenharmony_ci streamInfo.streamId_ = -1; 160094332d3Sopenharmony_ci streamInfo.width_ = 640; // 640:picture width 161094332d3Sopenharmony_ci streamInfo.height_ = 480; // 480:picture height 162094332d3Sopenharmony_ci streamInfo.format_ = PIXEL_FMT_RGBA_8888; 163094332d3Sopenharmony_ci streamInfo.dataspace_ = 8; // 8:picture dataspace 164094332d3Sopenharmony_ci streamInfo.intent_ = PREVIEW; 165094332d3Sopenharmony_ci streamInfo.tunneledMode_ = 5; // 5:tunnel mode 166094332d3Sopenharmony_ci streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer); 167094332d3Sopenharmony_ci ASSERT_NE(streamInfo.bufferQueue_, nullptr); 168094332d3Sopenharmony_ci streamInfos.push_back(streamInfo); 169094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos); 170094332d3Sopenharmony_ci CAMERA_LOGD("CreateStreams's RetCode = %{public}d", cameraBase_->rc); 171094332d3Sopenharmony_ci EXPECT_EQ(false, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 172094332d3Sopenharmony_ci if (cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR) { 173094332d3Sopenharmony_ci CAMERA_LOGI("CreateStreams, success."); 174094332d3Sopenharmony_ci } else { 175094332d3Sopenharmony_ci CAMERA_LOGE("CreateStreams fail, rc = %{public}d", cameraBase_->rc); 176094332d3Sopenharmony_ci } 177094332d3Sopenharmony_ci} 178094332d3Sopenharmony_ci 179094332d3Sopenharmony_ci/** 180094332d3Sopenharmony_ci * @tc.name: Preview 181094332d3Sopenharmony_ci * @tc.desc: CreateStreams, StreamInfo->streamId = 2147483647, return success. 182094332d3Sopenharmony_ci * @tc.level: Level2 183094332d3Sopenharmony_ci * @tc.size: MediumTest 184094332d3Sopenharmony_ci * @tc.type: Function 185094332d3Sopenharmony_ci */ 186094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_022, TestSize.Level2) 187094332d3Sopenharmony_ci{ 188094332d3Sopenharmony_ci CAMERA_LOGD("CreateStreams, StreamInfo->streamId = 2147483647, return success."); 189094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 190094332d3Sopenharmony_ci // Create data stream 191094332d3Sopenharmony_ci if (cameraBase_->streamCustomerPreview_ == nullptr) { 192094332d3Sopenharmony_ci cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>(); 193094332d3Sopenharmony_ci } 194094332d3Sopenharmony_ci OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer(); 195094332d3Sopenharmony_ci producer->SetQueueSize(8); // 8:set bufferQueue size 196094332d3Sopenharmony_ci if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size 197094332d3Sopenharmony_ci CAMERA_LOGE("~~~~~~~"); 198094332d3Sopenharmony_ci } 199094332d3Sopenharmony_ci std::vector<StreamInfo> streamInfos; 200094332d3Sopenharmony_ci StreamInfo streamInfo = {}; 201094332d3Sopenharmony_ci streamInfo.streamId_ = 2147483647; 202094332d3Sopenharmony_ci streamInfo.width_ = 640; // 640:picture width 203094332d3Sopenharmony_ci streamInfo.height_ = 480; // 480:picture height 204094332d3Sopenharmony_ci streamInfo.format_ = PIXEL_FMT_RGBA_8888; 205094332d3Sopenharmony_ci streamInfo.dataspace_ = 8; // 8:picture dataspace 206094332d3Sopenharmony_ci streamInfo.intent_ = PREVIEW; 207094332d3Sopenharmony_ci streamInfo.tunneledMode_ = 5; // 5:tunnel mode 208094332d3Sopenharmony_ci streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer); 209094332d3Sopenharmony_ci ASSERT_NE(streamInfo.bufferQueue_, nullptr); 210094332d3Sopenharmony_ci std::vector<StreamInfo>().swap(streamInfos); 211094332d3Sopenharmony_ci streamInfos.push_back(streamInfo); 212094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos); 213094332d3Sopenharmony_ci CAMERA_LOGD("streamOperator->CreateStreams's RetCode = %{public}d", cameraBase_->rc); 214094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 215094332d3Sopenharmony_ci if (cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR) { 216094332d3Sopenharmony_ci CAMERA_LOGI("CreateStreams, success."); 217094332d3Sopenharmony_ci } else { 218094332d3Sopenharmony_ci CAMERA_LOGE("CreateStreams fail, rc = %{public}d", cameraBase_->rc); 219094332d3Sopenharmony_ci } 220094332d3Sopenharmony_ci // Submit stream information 221094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CommitStreams(NORMAL, cameraBase_->ability_); 222094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 223094332d3Sopenharmony_ci CAMERA_LOGD("CommitStreams success."); 224094332d3Sopenharmony_ci // capture 225094332d3Sopenharmony_ci cameraBase_->StartCapture(2147483647, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 226094332d3Sopenharmony_ci // release stream 227094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW}; 228094332d3Sopenharmony_ci cameraBase_->streamIds = {2147483647}; 229094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 230094332d3Sopenharmony_ci} 231094332d3Sopenharmony_ci 232094332d3Sopenharmony_ci/** 233094332d3Sopenharmony_ci * @tc.name: Preview 234094332d3Sopenharmony_ci * @tc.desc: CreateStreams, StreamInfo->StreamIntent = VIDEO, success. 235094332d3Sopenharmony_ci * @tc.level: Level2 236094332d3Sopenharmony_ci * @tc.size: MediumTest 237094332d3Sopenharmony_ci * @tc.type: Function 238094332d3Sopenharmony_ci */ 239094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_032, TestSize.Level2) 240094332d3Sopenharmony_ci{ 241094332d3Sopenharmony_ci CAMERA_LOGD("CreateStreams, StreamInfo->StreamIntent = VIDEO, success."); 242094332d3Sopenharmony_ci // Create and get streamOperator information 243094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 244094332d3Sopenharmony_ci // start stream 245094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW, VIDEO}; 246094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 247094332d3Sopenharmony_ci // Get preview 248094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 249094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_VIDEO, cameraBase_->CAPTURE_ID_VIDEO, false, true); 250094332d3Sopenharmony_ci // release stream 251094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_VIDEO}; 252094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_VIDEO}; 253094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 254094332d3Sopenharmony_ci} 255094332d3Sopenharmony_ci 256094332d3Sopenharmony_ci/** 257094332d3Sopenharmony_ci * @tc.name: Preview 258094332d3Sopenharmony_ci * @tc.desc: CreateStreams, StreamInfo->StreamIntent = STILL_CAPTURE, success. 259094332d3Sopenharmony_ci * @tc.level: Level2 260094332d3Sopenharmony_ci * @tc.size: MediumTest 261094332d3Sopenharmony_ci * @tc.type: Function 262094332d3Sopenharmony_ci */ 263094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_033, TestSize.Level2) 264094332d3Sopenharmony_ci{ 265094332d3Sopenharmony_ci CAMERA_LOGD("CreateStreams, StreamInfo->StreamIntent = STILL_CAPTURE, success."); 266094332d3Sopenharmony_ci // Get the stream manager 267094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 268094332d3Sopenharmony_ci // start stream 269094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW, STILL_CAPTURE}; 270094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 271094332d3Sopenharmony_ci // Get preview 272094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true); 273094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_CAPTURE, cameraBase_->CAPTURE_ID_CAPTURE, false, true); 274094332d3Sopenharmony_ci // release stream 275094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_CAPTURE}; 276094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_CAPTURE}; 277094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 278094332d3Sopenharmony_ci} 279094332d3Sopenharmony_ci 280094332d3Sopenharmony_ci/** 281094332d3Sopenharmony_ci * @tc.name: Preview 282094332d3Sopenharmony_ci * @tc.desc: CreateStreams, StreamInfo->StreamIntent = OHOS::POST_VIEW;, success. 283094332d3Sopenharmony_ci * @tc.level: Level2 284094332d3Sopenharmony_ci * @tc.size: MediumTest 285094332d3Sopenharmony_ci * @tc.type: Function 286094332d3Sopenharmony_ci */ 287094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_034, TestSize.Level2) 288094332d3Sopenharmony_ci{ 289094332d3Sopenharmony_ci CAMERA_LOGD("CreateStreams, StreamInfo->StreamIntent = POST_VIEW, success."); 290094332d3Sopenharmony_ci // Create and get streamOperator information 291094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 292094332d3Sopenharmony_ci // Create preview stream 293094332d3Sopenharmony_ci // std::shared_ptr<OHOS::IBufferProducer> producer = OHOS::IBufferProducer::CreateBufferQueue(); 294094332d3Sopenharmony_ci if (cameraBase_->streamCustomerPreview_ == nullptr) { 295094332d3Sopenharmony_ci cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>(); 296094332d3Sopenharmony_ci } 297094332d3Sopenharmony_ci OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer(); 298094332d3Sopenharmony_ci producer->SetQueueSize(8); // 8:set bufferQueue size 299094332d3Sopenharmony_ci if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size 300094332d3Sopenharmony_ci CAMERA_LOGE("~~~~~~~"); 301094332d3Sopenharmony_ci } 302094332d3Sopenharmony_ci std::vector<StreamInfo> streamInfos; 303094332d3Sopenharmony_ci StreamInfo streamInfo = {}; 304094332d3Sopenharmony_ci streamInfo.streamId_ = 1001; 305094332d3Sopenharmony_ci streamInfo.width_ = 640; // 640:picture width 306094332d3Sopenharmony_ci streamInfo.height_ = 480; // 480:picture height 307094332d3Sopenharmony_ci streamInfo.format_ = PIXEL_FMT_RGBA_8888; 308094332d3Sopenharmony_ci streamInfo.dataspace_ = 8; // 8:picture dataspace 309094332d3Sopenharmony_ci streamInfo.intent_ = POST_VIEW; 310094332d3Sopenharmony_ci streamInfo.tunneledMode_ = 5; // 5:tunnel mode 311094332d3Sopenharmony_ci streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer); 312094332d3Sopenharmony_ci ASSERT_NE(streamInfo.bufferQueue_, nullptr); 313094332d3Sopenharmony_ci std::vector<StreamInfo>().swap(streamInfos); 314094332d3Sopenharmony_ci streamInfos.push_back(streamInfo); 315094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos); 316094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 317094332d3Sopenharmony_ci if (cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR) { 318094332d3Sopenharmony_ci CAMERA_LOGI("CreateStreams success."); 319094332d3Sopenharmony_ci } else { 320094332d3Sopenharmony_ci CAMERA_LOGE("CreateStreams fail, rc = %{public}d", cameraBase_->rc); 321094332d3Sopenharmony_ci } 322094332d3Sopenharmony_ci // release stream 323094332d3Sopenharmony_ci std::vector<int> streamIds; 324094332d3Sopenharmony_ci streamIds.push_back(streamInfo.streamId_); 325094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->ReleaseStreams(streamIds); 326094332d3Sopenharmony_ci CAMERA_LOGD("ReleaseStreams's RetCode = %{public}d", cameraBase_->rc); 327094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 328094332d3Sopenharmony_ci if (cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR) { 329094332d3Sopenharmony_ci CAMERA_LOGI("ReleaseStreams success."); 330094332d3Sopenharmony_ci } else { 331094332d3Sopenharmony_ci CAMERA_LOGE("ReleaseStreams fail, rc = %{public}d", cameraBase_->rc); 332094332d3Sopenharmony_ci } 333094332d3Sopenharmony_ci} 334094332d3Sopenharmony_ci 335094332d3Sopenharmony_ci/** 336094332d3Sopenharmony_ci * @tc.name: Preview 337094332d3Sopenharmony_ci * @tc.desc: CreateStreams, StreamInfo->StreamIntent = OHOS::ANALYZE;, success. 338094332d3Sopenharmony_ci * @tc.level: Level2 339094332d3Sopenharmony_ci * @tc.size: MediumTest 340094332d3Sopenharmony_ci * @tc.type: Function 341094332d3Sopenharmony_ci */ 342094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_035, TestSize.Level2) 343094332d3Sopenharmony_ci{ 344094332d3Sopenharmony_ci CAMERA_LOGD("CreateStreams, StreamInfo->StreamIntent = ANALYZE, success."); 345094332d3Sopenharmony_ci // Create and get streamOperator information 346094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 347094332d3Sopenharmony_ci // Create data stream 348094332d3Sopenharmony_ci if (cameraBase_->streamCustomerPreview_ == nullptr) { 349094332d3Sopenharmony_ci cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>(); 350094332d3Sopenharmony_ci } 351094332d3Sopenharmony_ci OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer(); 352094332d3Sopenharmony_ci producer->SetQueueSize(8); // 8:set bufferQueue size 353094332d3Sopenharmony_ci if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size 354094332d3Sopenharmony_ci CAMERA_LOGE("~~~~~~~"); 355094332d3Sopenharmony_ci } 356094332d3Sopenharmony_ci std::vector<StreamInfo> streamInfos; 357094332d3Sopenharmony_ci StreamInfo streamInfo = {}; 358094332d3Sopenharmony_ci streamInfo.streamId_ = 1001; 359094332d3Sopenharmony_ci streamInfo.width_ = 640; // 640:picture width 360094332d3Sopenharmony_ci streamInfo.height_ = 480; // 480:picture height 361094332d3Sopenharmony_ci streamInfo.format_ = PIXEL_FMT_RGBA_8888; 362094332d3Sopenharmony_ci streamInfo.dataspace_ = 8; // 8:picture dataspace 363094332d3Sopenharmony_ci streamInfo.intent_ = ANALYZE; 364094332d3Sopenharmony_ci streamInfo.tunneledMode_ = 5; // 5:tunnel mode 365094332d3Sopenharmony_ci streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer); 366094332d3Sopenharmony_ci ASSERT_NE(streamInfo.bufferQueue_, nullptr); 367094332d3Sopenharmony_ci std::vector<StreamInfo>().swap(streamInfos); 368094332d3Sopenharmony_ci streamInfos.push_back(streamInfo); 369094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos); 370094332d3Sopenharmony_ci CAMERA_LOGD("streamOperator->CreateStreams's RetCode = %{public}d", cameraBase_->rc); 371094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 372094332d3Sopenharmony_ci CAMERA_LOGD("CreateStreams success."); 373094332d3Sopenharmony_ci // release stream 374094332d3Sopenharmony_ci std::vector<int> streamIds; 375094332d3Sopenharmony_ci streamIds.push_back(streamInfo.streamId_); 376094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->ReleaseStreams(streamIds); 377094332d3Sopenharmony_ci CAMERA_LOGD("ReleaseStreams RetCode = %{public}d", cameraBase_->rc); 378094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 379094332d3Sopenharmony_ci if (cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR) { 380094332d3Sopenharmony_ci CAMERA_LOGI("ReleaseStreams success."); 381094332d3Sopenharmony_ci } 382094332d3Sopenharmony_ci else { 383094332d3Sopenharmony_ci CAMERA_LOGE("ReleaseStreams fail, rc = %{public}d", cameraBase_->rc); 384094332d3Sopenharmony_ci } 385094332d3Sopenharmony_ci} 386094332d3Sopenharmony_ci 387094332d3Sopenharmony_ci/** 388094332d3Sopenharmony_ci * @tc.name: Preview 389094332d3Sopenharmony_ci * @tc.desc: CreateStreams, StreamInfo->StreamIntent = CUSTOM, not support. 390094332d3Sopenharmony_ci * @tc.level: Level2 391094332d3Sopenharmony_ci * @tc.size: MediumTest 392094332d3Sopenharmony_ci * @tc.type: Function 393094332d3Sopenharmony_ci */ 394094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_036, TestSize.Level2) 395094332d3Sopenharmony_ci{ 396094332d3Sopenharmony_ci CAMERA_LOGD("CreateStreams, StreamInfo->StreamIntent = Camera::CUSTOM, not support."); 397094332d3Sopenharmony_ci // Create and get streamOperator information 398094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 399094332d3Sopenharmony_ci // Create data stream 400094332d3Sopenharmony_ci if (cameraBase_->streamCustomerPreview_ == nullptr) { 401094332d3Sopenharmony_ci cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>(); 402094332d3Sopenharmony_ci } 403094332d3Sopenharmony_ci OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer(); 404094332d3Sopenharmony_ci producer->SetQueueSize(8); // 8:set bufferQueue size 405094332d3Sopenharmony_ci if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size 406094332d3Sopenharmony_ci CAMERA_LOGE("~~~~~~~"); 407094332d3Sopenharmony_ci } 408094332d3Sopenharmony_ci std::vector<StreamInfo> streamInfos; 409094332d3Sopenharmony_ci StreamInfo streamInfo = {}; 410094332d3Sopenharmony_ci streamInfo.streamId_ = 1001; 411094332d3Sopenharmony_ci streamInfo.width_ = 640; // 640:picture width 412094332d3Sopenharmony_ci streamInfo.height_ = 480; // 480:picture height 413094332d3Sopenharmony_ci streamInfo.format_ = PIXEL_FMT_RGBA_8888; 414094332d3Sopenharmony_ci streamInfo.dataspace_ = 8; // 8:picture dataspace 415094332d3Sopenharmony_ci streamInfo.intent_ = CUSTOM; 416094332d3Sopenharmony_ci streamInfo.tunneledMode_ = 5; // 5:tunnel mode 417094332d3Sopenharmony_ci streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer); 418094332d3Sopenharmony_ci ASSERT_NE(streamInfo.bufferQueue_, nullptr); 419094332d3Sopenharmony_ci std::vector<StreamInfo>().swap(streamInfos); 420094332d3Sopenharmony_ci streamInfos.push_back(streamInfo); 421094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos); 422094332d3Sopenharmony_ci CAMERA_LOGD("streamOperator->CreateStreams's RetCode = %{public}d", cameraBase_->rc); 423094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc != HDI::Camera::V1_0::NO_ERROR); 424094332d3Sopenharmony_ci if (cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR) { 425094332d3Sopenharmony_ci CAMERA_LOGI("CreateStreams success."); 426094332d3Sopenharmony_ci } else { 427094332d3Sopenharmony_ci CAMERA_LOGE("CreateStreams fail, rc = %{public}d", cameraBase_->rc); 428094332d3Sopenharmony_ci } 429094332d3Sopenharmony_ci} 430094332d3Sopenharmony_ci 431094332d3Sopenharmony_ci/** 432094332d3Sopenharmony_ci * @tc.name: Preview 433094332d3Sopenharmony_ci * @tc.desc: CreateStreams, StreamInfo->tunneledMode = false, success. 434094332d3Sopenharmony_ci * @tc.level: Level2 435094332d3Sopenharmony_ci * @tc.size: MediumTest 436094332d3Sopenharmony_ci * @tc.type: Function 437094332d3Sopenharmony_ci */ 438094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_037, TestSize.Level2) 439094332d3Sopenharmony_ci{ 440094332d3Sopenharmony_ci CAMERA_LOGD("CreateStreams, StreamInfo->tunneledMode = false, success."); 441094332d3Sopenharmony_ci // Create and get streamOperator information 442094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 443094332d3Sopenharmony_ci // Create data stream 444094332d3Sopenharmony_ci if (cameraBase_->streamCustomerPreview_ == nullptr) { 445094332d3Sopenharmony_ci cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>(); 446094332d3Sopenharmony_ci } 447094332d3Sopenharmony_ci OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer(); 448094332d3Sopenharmony_ci producer->SetQueueSize(8); // 8:set bufferQueue size 449094332d3Sopenharmony_ci if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size 450094332d3Sopenharmony_ci CAMERA_LOGE("~~~~~~~"); 451094332d3Sopenharmony_ci } 452094332d3Sopenharmony_ci std::vector<StreamInfo> streamInfos; 453094332d3Sopenharmony_ci StreamInfo streamInfo = {}; 454094332d3Sopenharmony_ci streamInfo.streamId_ = 1001; 455094332d3Sopenharmony_ci streamInfo.width_ = 640; // 640:picture width 456094332d3Sopenharmony_ci streamInfo.height_ = 480; // 480:picture height 457094332d3Sopenharmony_ci streamInfo.format_ = PIXEL_FMT_RGBA_8888; 458094332d3Sopenharmony_ci streamInfo.dataspace_ = 8; // 8:picture dataspace 459094332d3Sopenharmony_ci streamInfo.intent_ = PREVIEW; 460094332d3Sopenharmony_ci streamInfo.tunneledMode_ = false; 461094332d3Sopenharmony_ci streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer); 462094332d3Sopenharmony_ci ASSERT_NE(streamInfo.bufferQueue_, nullptr); 463094332d3Sopenharmony_ci std::vector<StreamInfo>().swap(streamInfos); 464094332d3Sopenharmony_ci streamInfos.push_back(streamInfo); 465094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos); 466094332d3Sopenharmony_ci CAMERA_LOGD("streamOperator->CreateStreams's RetCode = %{public}d", cameraBase_->rc); 467094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == INVALID_ARGUMENT); 468094332d3Sopenharmony_ci if (cameraBase_->rc == INVALID_ARGUMENT) { 469094332d3Sopenharmony_ci CAMERA_LOGE("CreateStreams fail."); 470094332d3Sopenharmony_ci } else { 471094332d3Sopenharmony_ci CAMERA_LOGI("CreateStreams success."); 472094332d3Sopenharmony_ci } 473094332d3Sopenharmony_ci} 474094332d3Sopenharmony_ci 475094332d3Sopenharmony_ci/** 476094332d3Sopenharmony_ci * @tc.name: Preview 477094332d3Sopenharmony_ci * @tc.desc: CreateStreams, StreamInfo->minFrameDuration = -1, return error. 478094332d3Sopenharmony_ci * @tc.level: Level2 479094332d3Sopenharmony_ci * @tc.size: MediumTest 480094332d3Sopenharmony_ci * @tc.type: Function 481094332d3Sopenharmony_ci */ 482094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_038, TestSize.Level2) 483094332d3Sopenharmony_ci{ 484094332d3Sopenharmony_ci CAMERA_LOGD("CreateStreams, StreamInfo->minFrameDuration = -1, return error."); 485094332d3Sopenharmony_ci // Create and get streamOperator information 486094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 487094332d3Sopenharmony_ci // Create data stream 488094332d3Sopenharmony_ci if (cameraBase_->streamCustomerPreview_ == nullptr) { 489094332d3Sopenharmony_ci cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>(); 490094332d3Sopenharmony_ci } 491094332d3Sopenharmony_ci OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer(); 492094332d3Sopenharmony_ci producer->SetQueueSize(8); // 8:set bufferQueue size 493094332d3Sopenharmony_ci if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size 494094332d3Sopenharmony_ci CAMERA_LOGE("~~~~~~~"); 495094332d3Sopenharmony_ci } 496094332d3Sopenharmony_ci std::vector<StreamInfo> streamInfos; 497094332d3Sopenharmony_ci StreamInfo streamInfo = {}; 498094332d3Sopenharmony_ci streamInfo.streamId_ = 1001; 499094332d3Sopenharmony_ci streamInfo.width_ = 640; // 640:picture width 500094332d3Sopenharmony_ci streamInfo.height_ = 480; // 480:picture height 501094332d3Sopenharmony_ci streamInfo.format_ = PIXEL_FMT_RGBA_8888; 502094332d3Sopenharmony_ci streamInfo.dataspace_ = 8; // 8:picture dataspace 503094332d3Sopenharmony_ci streamInfo.intent_ = PREVIEW; 504094332d3Sopenharmony_ci streamInfo.tunneledMode_ = 0; 505094332d3Sopenharmony_ci streamInfo.minFrameDuration_ = -1; 506094332d3Sopenharmony_ci streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer); 507094332d3Sopenharmony_ci ASSERT_NE(streamInfo.bufferQueue_, nullptr); 508094332d3Sopenharmony_ci std::vector<StreamInfo>().swap(streamInfos); 509094332d3Sopenharmony_ci streamInfos.push_back(streamInfo); 510094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos); 511094332d3Sopenharmony_ci CAMERA_LOGD("streamOperator->CreateStreams's RetCode = %{public}d", cameraBase_->rc); 512094332d3Sopenharmony_ci EXPECT_EQ(INVALID_ARGUMENT, cameraBase_->rc); 513094332d3Sopenharmony_ci CAMERA_LOGD("CreateStreams, failed."); 514094332d3Sopenharmony_ci} 515094332d3Sopenharmony_ci 516094332d3Sopenharmony_ci/** 517094332d3Sopenharmony_ci * @tc.name: Preview 518094332d3Sopenharmony_ci * @tc.desc: CreateStreams, StreamInfo->minFrameDuration = 2147483647, success. 519094332d3Sopenharmony_ci * @tc.level: Level2 520094332d3Sopenharmony_ci * @tc.size: MediumTest 521094332d3Sopenharmony_ci * @tc.type: Function 522094332d3Sopenharmony_ci */ 523094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_039, TestSize.Level2) 524094332d3Sopenharmony_ci{ 525094332d3Sopenharmony_ci CAMERA_LOGD("CreateStreams, StreamInfo->minFrameDuration = 2147483647, success."); 526094332d3Sopenharmony_ci // Create and get streamOperator information 527094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 528094332d3Sopenharmony_ci // Create data stream 529094332d3Sopenharmony_ci if (cameraBase_->streamCustomerPreview_ == nullptr) { 530094332d3Sopenharmony_ci cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>(); 531094332d3Sopenharmony_ci } 532094332d3Sopenharmony_ci OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer(); 533094332d3Sopenharmony_ci producer->SetQueueSize(8); // 8:set bufferQueue size 534094332d3Sopenharmony_ci if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size 535094332d3Sopenharmony_ci CAMERA_LOGE("~~~~~~~"); 536094332d3Sopenharmony_ci } 537094332d3Sopenharmony_ci 538094332d3Sopenharmony_ci std::vector<StreamInfo> streamInfos; 539094332d3Sopenharmony_ci StreamInfo streamInfo = {}; 540094332d3Sopenharmony_ci streamInfo.streamId_ = 1001; 541094332d3Sopenharmony_ci streamInfo.width_ = 640; // 640:picture width 542094332d3Sopenharmony_ci streamInfo.height_ = 480; // 480:picture height 543094332d3Sopenharmony_ci streamInfo.format_ = PIXEL_FMT_RGBA_8888; 544094332d3Sopenharmony_ci streamInfo.dataspace_ = 8; // 8:picture dataspace 545094332d3Sopenharmony_ci streamInfo.intent_ = PREVIEW; 546094332d3Sopenharmony_ci streamInfo.tunneledMode_ = 0; 547094332d3Sopenharmony_ci streamInfo.minFrameDuration_ = 2147483647; 548094332d3Sopenharmony_ci streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer); 549094332d3Sopenharmony_ci ASSERT_NE(streamInfo.bufferQueue_, nullptr); 550094332d3Sopenharmony_ci std::vector<StreamInfo>().swap(streamInfos); 551094332d3Sopenharmony_ci streamInfos.push_back(streamInfo); 552094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos); 553094332d3Sopenharmony_ci CAMERA_LOGD("streamOperator->CreateStreams's RetCode = %{public}d", cameraBase_->rc); 554094332d3Sopenharmony_ci EXPECT_EQ(false, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 555094332d3Sopenharmony_ci CAMERA_LOGD("CreateStreams, success."); 556094332d3Sopenharmony_ci} 557094332d3Sopenharmony_ci 558094332d3Sopenharmony_ci/** 559094332d3Sopenharmony_ci * @tc.name: Preview 560094332d3Sopenharmony_ci * @tc.desc: Preview, CommitStreams Metadata = nullptr. 561094332d3Sopenharmony_ci * @tc.level: Level2 562094332d3Sopenharmony_ci * @tc.size: MediumTest 563094332d3Sopenharmony_ci * @tc.type: Function 564094332d3Sopenharmony_ci */ 565094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_040, TestSize.Level2) 566094332d3Sopenharmony_ci{ 567094332d3Sopenharmony_ci CAMERA_LOGD("Preview, CommitStreams Metadata = nullptr."); 568094332d3Sopenharmony_ci // Create and get streamOperator information 569094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 570094332d3Sopenharmony_ci if (cameraBase_->streamCustomerPreview_ == nullptr) { 571094332d3Sopenharmony_ci cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>(); 572094332d3Sopenharmony_ci } 573094332d3Sopenharmony_ci OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer(); 574094332d3Sopenharmony_ci producer->SetQueueSize(8); // 8:set bufferQueue size 575094332d3Sopenharmony_ci if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size 576094332d3Sopenharmony_ci CAMERA_LOGE("~~~~~~~"); 577094332d3Sopenharmony_ci } 578094332d3Sopenharmony_ci 579094332d3Sopenharmony_ci std::vector<StreamInfo> streamInfos; 580094332d3Sopenharmony_ci StreamInfo streamInfo = {}; 581094332d3Sopenharmony_ci streamInfo.streamId_ = 1001; 582094332d3Sopenharmony_ci streamInfo.width_ = 640; // 640:picture width 583094332d3Sopenharmony_ci streamInfo.height_ = 480; // 480:picture height 584094332d3Sopenharmony_ci streamInfo.format_ = PIXEL_FMT_RGBA_8888; 585094332d3Sopenharmony_ci streamInfo.dataspace_ = 8; // 8:picture dataspace 586094332d3Sopenharmony_ci streamInfo.intent_ = PREVIEW; 587094332d3Sopenharmony_ci streamInfo.tunneledMode_ = 0; 588094332d3Sopenharmony_ci streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer); 589094332d3Sopenharmony_ci ASSERT_NE(streamInfo.bufferQueue_, nullptr); 590094332d3Sopenharmony_ci std::vector<StreamInfo>().swap(streamInfos); 591094332d3Sopenharmony_ci streamInfos.push_back(streamInfo); 592094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos); 593094332d3Sopenharmony_ci // Distribution stream 594094332d3Sopenharmony_ci std::vector<uint8_t> modeSetting = {}; 595094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CommitStreams(NORMAL, modeSetting); 596094332d3Sopenharmony_ci CAMERA_LOGD("streamOperator->CreateStreams's RetCode = %{public}d", cameraBase_->rc); 597094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc != HDI::Camera::V1_0::NO_ERROR); 598094332d3Sopenharmony_ci // release stream 599094332d3Sopenharmony_ci std::vector<int> streamIds; 600094332d3Sopenharmony_ci streamIds.push_back(-1); 601094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->ReleaseStreams(streamIds); 602094332d3Sopenharmony_ci} 603094332d3Sopenharmony_ci 604094332d3Sopenharmony_ci/** 605094332d3Sopenharmony_ci * @tc.name: Preview 606094332d3Sopenharmony_ci * @tc.desc: Preview, CommitStreams without CreateStreams, expected fail. 607094332d3Sopenharmony_ci * @tc.level: Level2 608094332d3Sopenharmony_ci * @tc.size: MediumTest 609094332d3Sopenharmony_ci * @tc.type: Function 610094332d3Sopenharmony_ci */ 611094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_050, TestSize.Level2) 612094332d3Sopenharmony_ci{ 613094332d3Sopenharmony_ci CAMERA_LOGD("Preview, CommitStreams without CreateStreams, expected fail."); 614094332d3Sopenharmony_ci // Create and get streamOperator information 615094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 616094332d3Sopenharmony_ci // Distribution stream 617094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CommitStreams(NORMAL, cameraBase_->ability_); 618094332d3Sopenharmony_ci CAMERA_LOGD("streamOperator->CommitStreams's RetCode = %{public}d", cameraBase_->rc); 619094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == INVALID_ARGUMENT); 620094332d3Sopenharmony_ci // release stream 621094332d3Sopenharmony_ci std::vector<int> streamIds; 622094332d3Sopenharmony_ci streamIds.push_back(-1); 623094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->ReleaseStreams(streamIds); 624094332d3Sopenharmony_ci} 625094332d3Sopenharmony_ci 626094332d3Sopenharmony_ci/** 627094332d3Sopenharmony_ci * @tc.name: Preview 628094332d3Sopenharmony_ci * @tc.desc: Preview and release streams, success. 629094332d3Sopenharmony_ci * @tc.level: Level1 630094332d3Sopenharmony_ci * @tc.size: MediumTest 631094332d3Sopenharmony_ci * @tc.type: Function 632094332d3Sopenharmony_ci */ 633094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_060, TestSize.Level1) 634094332d3Sopenharmony_ci{ 635094332d3Sopenharmony_ci CAMERA_LOGD("Preview and release streams, success."); 636094332d3Sopenharmony_ci // Create and get streamOperator information 637094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 638094332d3Sopenharmony_ci // Create data stream 639094332d3Sopenharmony_ci if (cameraBase_->streamCustomerPreview_ == nullptr) { 640094332d3Sopenharmony_ci cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>(); 641094332d3Sopenharmony_ci } 642094332d3Sopenharmony_ci OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer(); 643094332d3Sopenharmony_ci producer->SetQueueSize(8); // 8:set bufferQueue size 644094332d3Sopenharmony_ci if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size 645094332d3Sopenharmony_ci CAMERA_LOGE("~~~~~~~"); 646094332d3Sopenharmony_ci } 647094332d3Sopenharmony_ci std::vector<StreamInfo> streamInfos; 648094332d3Sopenharmony_ci StreamInfo streamInfo = {}; 649094332d3Sopenharmony_ci streamInfo.streamId_ = 1001; 650094332d3Sopenharmony_ci streamInfo.width_ = 640; // 640:picture width 651094332d3Sopenharmony_ci streamInfo.height_ = 480; // 480:picture height 652094332d3Sopenharmony_ci streamInfo.format_ = PIXEL_FMT_RGBA_8888; 653094332d3Sopenharmony_ci streamInfo.dataspace_ = 8; // 8:picture dataspace 654094332d3Sopenharmony_ci streamInfo.intent_ = PREVIEW; 655094332d3Sopenharmony_ci streamInfo.tunneledMode_ = 5; // 5:tunnel mode 656094332d3Sopenharmony_ci streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer); 657094332d3Sopenharmony_ci ASSERT_NE(streamInfo.bufferQueue_, nullptr); 658094332d3Sopenharmony_ci std::vector<StreamInfo>().swap(streamInfos); 659094332d3Sopenharmony_ci streamInfos.push_back(streamInfo); 660094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos); 661094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 662094332d3Sopenharmony_ci // Distribution stream 663094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CommitStreams(NORMAL, cameraBase_->ability_); 664094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 665094332d3Sopenharmony_ci // Get preview 666094332d3Sopenharmony_ci int captureId = 2001; 667094332d3Sopenharmony_ci CaptureInfo captureInfo = {}; 668094332d3Sopenharmony_ci captureInfo.streamIds_ = {1001}; 669094332d3Sopenharmony_ci captureInfo.captureSetting_ = cameraBase_->ability_; 670094332d3Sopenharmony_ci captureInfo.enableShutterCallback_ = false; 671094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->Capture(captureId, captureInfo, true); 672094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 673094332d3Sopenharmony_ci sleep(3); 674094332d3Sopenharmony_ci cameraBase_->streamOperator->CancelCapture(captureId); 675094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 676094332d3Sopenharmony_ci // release stream 677094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->ReleaseStreams(captureInfo.streamIds_); 678094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 679094332d3Sopenharmony_ci} 680094332d3Sopenharmony_ci 681094332d3Sopenharmony_ci/** 682094332d3Sopenharmony_ci * @tc.name: Preview 683094332d3Sopenharmony_ci * @tc.desc: ReleaseStreams-> streamID = -1, expected INVALID_ARGUMENT. 684094332d3Sopenharmony_ci * @tc.level: Level2 685094332d3Sopenharmony_ci * @tc.size: MediumTest 686094332d3Sopenharmony_ci * @tc.type: Function 687094332d3Sopenharmony_ci */ 688094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_061, TestSize.Level2) 689094332d3Sopenharmony_ci{ 690094332d3Sopenharmony_ci CAMERA_LOGD("ReleaseStreams-> streamID = -1, expected success."); 691094332d3Sopenharmony_ci // Create and get streamOperator information 692094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 693094332d3Sopenharmony_ci // Create preview stream 694094332d3Sopenharmony_ci // std::shared_ptr<OHOS::IBufferProducer> producer = OHOS::IBufferProducer::CreateBufferQueue(); 695094332d3Sopenharmony_ci if (cameraBase_->streamCustomerPreview_ == nullptr) { 696094332d3Sopenharmony_ci cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>(); 697094332d3Sopenharmony_ci } 698094332d3Sopenharmony_ci OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer(); 699094332d3Sopenharmony_ci producer->SetQueueSize(8); // 8:set bufferQueue size 700094332d3Sopenharmony_ci if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size 701094332d3Sopenharmony_ci CAMERA_LOGE("~~~~~~~"); 702094332d3Sopenharmony_ci } 703094332d3Sopenharmony_ci std::vector<StreamInfo> streamInfos; 704094332d3Sopenharmony_ci StreamInfo streamInfo = {}; 705094332d3Sopenharmony_ci streamInfo.streamId_ = 1001; 706094332d3Sopenharmony_ci streamInfo.width_ = 640; // 640:picture width 707094332d3Sopenharmony_ci streamInfo.height_ = 480; // 480:picture height 708094332d3Sopenharmony_ci streamInfo.format_ = PIXEL_FMT_RGBA_8888; 709094332d3Sopenharmony_ci streamInfo.dataspace_ = 8; // 8:picture dataspace 710094332d3Sopenharmony_ci streamInfo.intent_ = PREVIEW; 711094332d3Sopenharmony_ci streamInfo.tunneledMode_ = 5; // 5:tunnel mode 712094332d3Sopenharmony_ci streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer); 713094332d3Sopenharmony_ci ASSERT_NE(streamInfo.bufferQueue_, nullptr); 714094332d3Sopenharmony_ci std::vector<StreamInfo>().swap(streamInfos); 715094332d3Sopenharmony_ci streamInfos.push_back(streamInfo); 716094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos); 717094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 718094332d3Sopenharmony_ci // Distribution stream 719094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CommitStreams(NORMAL, cameraBase_->ability_); 720094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 721094332d3Sopenharmony_ci // Get preview 722094332d3Sopenharmony_ci int captureId = 2001; 723094332d3Sopenharmony_ci CaptureInfo captureInfo = {}; 724094332d3Sopenharmony_ci captureInfo.streamIds_ = {1001}; 725094332d3Sopenharmony_ci captureInfo.captureSetting_ = cameraBase_->ability_; 726094332d3Sopenharmony_ci captureInfo.enableShutterCallback_ = false; 727094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->Capture(captureId, captureInfo, true); 728094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 729094332d3Sopenharmony_ci sleep(3); 730094332d3Sopenharmony_ci cameraBase_->streamOperator->CancelCapture(captureId); 731094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 732094332d3Sopenharmony_ci // release stream 733094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->ReleaseStreams( 734094332d3Sopenharmony_ci {-1}); 735094332d3Sopenharmony_ci CAMERA_LOGD("streamOperator->ReleaseStreams's rc = %{public}d", cameraBase_->rc); 736094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == INVALID_ARGUMENT); 737094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->ReleaseStreams( 738094332d3Sopenharmony_ci {1001}); 739094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 740094332d3Sopenharmony_ci CAMERA_LOGD("streamOperator->ReleaseStreams's RetCode = %{public}d", cameraBase_->rc); 741094332d3Sopenharmony_ci} 742094332d3Sopenharmony_ci 743094332d3Sopenharmony_ci/** 744094332d3Sopenharmony_ci * @tc.name: Preview 745094332d3Sopenharmony_ci * @tc.desc: ReleaseStreams no exist streamID, expect success. 746094332d3Sopenharmony_ci * @tc.level: Level2 747094332d3Sopenharmony_ci * @tc.size: MediumTest 748094332d3Sopenharmony_ci * @tc.type: Function 749094332d3Sopenharmony_ci */ 750094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_062, TestSize.Level2) 751094332d3Sopenharmony_ci{ 752094332d3Sopenharmony_ci CAMERA_LOGD("ReleaseStreams no exist streamID, expect success."); 753094332d3Sopenharmony_ci // Create and get streamOperator information 754094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 755094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->ReleaseStreams( 756094332d3Sopenharmony_ci {9999}); 757094332d3Sopenharmony_ci CAMERA_LOGD("streamOperator->ReleaseStreams's RetCode = %{public}d", cameraBase_->rc); 758094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 759094332d3Sopenharmony_ci} 760094332d3Sopenharmony_ci 761094332d3Sopenharmony_ci/** 762094332d3Sopenharmony_ci * @tc.name: Preview 763094332d3Sopenharmony_ci * @tc.desc: Preview, Capture->captureInfo->streamID = -1 ,return error. 764094332d3Sopenharmony_ci * @tc.level: Level2 765094332d3Sopenharmony_ci * @tc.size: MediumTest 766094332d3Sopenharmony_ci * @tc.type: Function 767094332d3Sopenharmony_ci */ 768094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_070, TestSize.Level2) 769094332d3Sopenharmony_ci{ 770094332d3Sopenharmony_ci CAMERA_LOGD("Preview, Capture->captureInfo->streamID = -1 ,return error."); 771094332d3Sopenharmony_ci // Create and get streamOperator information 772094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 773094332d3Sopenharmony_ci // Create preview stream 774094332d3Sopenharmony_ci // std::shared_ptr<OHOS::IBufferProducer> producer = OHOS::IBufferProducer::CreateBufferQueue(); 775094332d3Sopenharmony_ci if (cameraBase_->streamCustomerPreview_ == nullptr) { 776094332d3Sopenharmony_ci cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>(); 777094332d3Sopenharmony_ci } 778094332d3Sopenharmony_ci OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer(); 779094332d3Sopenharmony_ci producer->SetQueueSize(8); // 8:set bufferQueue size 780094332d3Sopenharmony_ci if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size 781094332d3Sopenharmony_ci CAMERA_LOGE("~~~~~~~"); 782094332d3Sopenharmony_ci } 783094332d3Sopenharmony_ci 784094332d3Sopenharmony_ci std::vector<StreamInfo> streamInfos; 785094332d3Sopenharmony_ci StreamInfo streamInfo = {}; 786094332d3Sopenharmony_ci streamInfo.streamId_ = 1001; 787094332d3Sopenharmony_ci streamInfo.width_ = 640; // 640:picture width 788094332d3Sopenharmony_ci streamInfo.height_ = 480; // 480:picture height 789094332d3Sopenharmony_ci streamInfo.format_ = PIXEL_FMT_RGBA_8888; 790094332d3Sopenharmony_ci streamInfo.dataspace_ = 8; // 8:picture dataspace 791094332d3Sopenharmony_ci streamInfo.intent_ = PREVIEW; 792094332d3Sopenharmony_ci streamInfo.tunneledMode_ = 5; // 5:tunnel mode 793094332d3Sopenharmony_ci streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer); 794094332d3Sopenharmony_ci ASSERT_NE(streamInfo.bufferQueue_, nullptr); 795094332d3Sopenharmony_ci std::vector<StreamInfo>().swap(streamInfos); 796094332d3Sopenharmony_ci streamInfos.push_back(streamInfo); 797094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos); 798094332d3Sopenharmony_ci if (cameraBase_->rc != HDI::Camera::V1_0::NO_ERROR) { 799094332d3Sopenharmony_ci CAMERA_LOGE("CreateStreams failed!"); 800094332d3Sopenharmony_ci } 801094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 802094332d3Sopenharmony_ci // Distribution stream 803094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CommitStreams(NORMAL, cameraBase_->ability_); 804094332d3Sopenharmony_ci if (cameraBase_->rc != HDI::Camera::V1_0::NO_ERROR) { 805094332d3Sopenharmony_ci CAMERA_LOGE("CommitStreams failed!"); 806094332d3Sopenharmony_ci } 807094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 808094332d3Sopenharmony_ci // Get preview 809094332d3Sopenharmony_ci int captureId = 2001; 810094332d3Sopenharmony_ci CaptureInfo captureInfo = {}; 811094332d3Sopenharmony_ci captureInfo.streamIds_ = {-1}; 812094332d3Sopenharmony_ci captureInfo.captureSetting_ = cameraBase_->ability_; 813094332d3Sopenharmony_ci captureInfo.enableShutterCallback_ = true; 814094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->Capture(captureId, captureInfo, true); 815094332d3Sopenharmony_ci CAMERA_LOGD("streamOperator->Capture rc = %{public}d", cameraBase_->rc); 816094332d3Sopenharmony_ci if (cameraBase_->rc == INVALID_ARGUMENT) { 817094332d3Sopenharmony_ci CAMERA_LOGE("Capture failed!"); 818094332d3Sopenharmony_ci } 819094332d3Sopenharmony_ci EXPECT_EQ(INVALID_ARGUMENT, cameraBase_->rc); 820094332d3Sopenharmony_ci} 821094332d3Sopenharmony_ci 822094332d3Sopenharmony_ci/** 823094332d3Sopenharmony_ci * @tc.name: Preview 824094332d3Sopenharmony_ci * @tc.desc: Preview, Capture->isStreaming = false ,expected success. 825094332d3Sopenharmony_ci * @tc.level: Level2 826094332d3Sopenharmony_ci * @tc.size: MediumTest 827094332d3Sopenharmony_ci * @tc.type: Function 828094332d3Sopenharmony_ci */ 829094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_073, TestSize.Level2) 830094332d3Sopenharmony_ci{ 831094332d3Sopenharmony_ci CAMERA_LOGD("Preview, Capture->isStreaming = false ,expected success."); 832094332d3Sopenharmony_ci // Create and get streamOperator information 833094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 834094332d3Sopenharmony_ci // Create data stream 835094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW}; 836094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 837094332d3Sopenharmony_ci // Get preview 838094332d3Sopenharmony_ci int captureId = 2001; 839094332d3Sopenharmony_ci CaptureInfo captureInfo = {}; 840094332d3Sopenharmony_ci captureInfo.streamIds_ = {cameraBase_->STREAM_ID_PREVIEW}; 841094332d3Sopenharmony_ci captureInfo.captureSetting_ = cameraBase_->ability_; 842094332d3Sopenharmony_ci captureInfo.enableShutterCallback_ = true; 843094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->Capture(captureId, captureInfo, false); 844094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 845094332d3Sopenharmony_ci sleep(3); 846094332d3Sopenharmony_ci cameraBase_->streamOperator->CancelCapture(captureId); 847094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 848094332d3Sopenharmony_ci // release stream 849094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->ReleaseStreams(captureInfo.streamIds_); 850094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 851094332d3Sopenharmony_ci} 852094332d3Sopenharmony_ci 853094332d3Sopenharmony_ci/** 854094332d3Sopenharmony_ci * @tc.name: Preview 855094332d3Sopenharmony_ci * @tc.desc: Preview, Capture->captureId = -1 ,return error. 856094332d3Sopenharmony_ci * @tc.level: Level2 857094332d3Sopenharmony_ci * @tc.size: MediumTest 858094332d3Sopenharmony_ci * @tc.type: Function 859094332d3Sopenharmony_ci */ 860094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_074, TestSize.Level2) 861094332d3Sopenharmony_ci{ 862094332d3Sopenharmony_ci CAMERA_LOGD("Preview, Capture->captureId = -1 ,return error."); 863094332d3Sopenharmony_ci // Create and get streamOperator information 864094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 865094332d3Sopenharmony_ci // Create data stream 866094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW}; 867094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 868094332d3Sopenharmony_ci // Get preview 869094332d3Sopenharmony_ci int captureId = -1; 870094332d3Sopenharmony_ci CaptureInfo captureInfo = {}; 871094332d3Sopenharmony_ci captureInfo.streamIds_ = {cameraBase_->STREAM_ID_PREVIEW}; 872094332d3Sopenharmony_ci captureInfo.captureSetting_ = cameraBase_->ability_; 873094332d3Sopenharmony_ci captureInfo.enableShutterCallback_ = false; 874094332d3Sopenharmony_ci bool isStreaming = true; 875094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->Capture(captureId, captureInfo, isStreaming); 876094332d3Sopenharmony_ci EXPECT_EQ(INVALID_ARGUMENT, cameraBase_->rc); 877094332d3Sopenharmony_ci} 878094332d3Sopenharmony_ci 879094332d3Sopenharmony_ci/** 880094332d3Sopenharmony_ci * @tc.name: Preview 881094332d3Sopenharmony_ci * @tc.desc: Preview, Capture->captureInfo->enableShutterCallback = true ,return success. 882094332d3Sopenharmony_ci * @tc.level: Level2 883094332d3Sopenharmony_ci * @tc.size: MediumTest 884094332d3Sopenharmony_ci * @tc.type: Function 885094332d3Sopenharmony_ci */ 886094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_075, TestSize.Level2) 887094332d3Sopenharmony_ci{ 888094332d3Sopenharmony_ci CAMERA_LOGD("Preview, Capture->captureInfo->enableShutterCallback = true, return success."); 889094332d3Sopenharmony_ci // Create and get streamOperator information 890094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 891094332d3Sopenharmony_ci // Create data stream 892094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW}; 893094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 894094332d3Sopenharmony_ci // Get preview 895094332d3Sopenharmony_ci cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, true, true); 896094332d3Sopenharmony_ci // release stream 897094332d3Sopenharmony_ci cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW}; 898094332d3Sopenharmony_ci cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW}; 899094332d3Sopenharmony_ci cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds); 900094332d3Sopenharmony_ci} 901094332d3Sopenharmony_ci 902094332d3Sopenharmony_ci/** 903094332d3Sopenharmony_ci * @tc.name: Preview 904094332d3Sopenharmony_ci * @tc.desc: CancelCapture captureID = -1. 905094332d3Sopenharmony_ci * @tc.level: Level2 906094332d3Sopenharmony_ci * @tc.size: MediumTest 907094332d3Sopenharmony_ci * @tc.type: Function 908094332d3Sopenharmony_ci */ 909094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_080, TestSize.Level2) 910094332d3Sopenharmony_ci{ 911094332d3Sopenharmony_ci CAMERA_LOGD("CancelCapture captureID = -1, expected fail."); 912094332d3Sopenharmony_ci // Create and get streamOperator information 913094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 914094332d3Sopenharmony_ci // Create data stream 915094332d3Sopenharmony_ci if (cameraBase_->streamCustomerPreview_ == nullptr) { 916094332d3Sopenharmony_ci cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>(); 917094332d3Sopenharmony_ci } 918094332d3Sopenharmony_ci OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer(); 919094332d3Sopenharmony_ci producer->SetQueueSize(8); // 8:set bufferQueue size 920094332d3Sopenharmony_ci if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size 921094332d3Sopenharmony_ci CAMERA_LOGE("~~~~~~~"); 922094332d3Sopenharmony_ci } 923094332d3Sopenharmony_ci 924094332d3Sopenharmony_ci std::vector<StreamInfo> streamInfos; 925094332d3Sopenharmony_ci StreamInfo streamInfo = {}; 926094332d3Sopenharmony_ci streamInfo.streamId_ = 1001; 927094332d3Sopenharmony_ci streamInfo.width_ = 640; // 640:picture width 928094332d3Sopenharmony_ci streamInfo.height_ = 480; // 480:picture height 929094332d3Sopenharmony_ci streamInfo.format_ = PIXEL_FMT_RGBA_8888; 930094332d3Sopenharmony_ci streamInfo.dataspace_ = 8; // 8:picture dataspace 931094332d3Sopenharmony_ci streamInfo.intent_ = PREVIEW; 932094332d3Sopenharmony_ci streamInfo.tunneledMode_ = 5; // 5:tunnel mode 933094332d3Sopenharmony_ci streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer); 934094332d3Sopenharmony_ci ASSERT_NE(streamInfo.bufferQueue_, nullptr); 935094332d3Sopenharmony_ci std::vector<StreamInfo>().swap(streamInfos); 936094332d3Sopenharmony_ci streamInfos.push_back(streamInfo); 937094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos); 938094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 939094332d3Sopenharmony_ci // Distribution stream 940094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CommitStreams(NORMAL, cameraBase_->ability_); 941094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 942094332d3Sopenharmony_ci // Get preview 943094332d3Sopenharmony_ci int captureId = 100; 944094332d3Sopenharmony_ci CaptureInfo captureInfo = {}; 945094332d3Sopenharmony_ci captureInfo.streamIds_ = {1001}; 946094332d3Sopenharmony_ci captureInfo.captureSetting_ = cameraBase_->ability_; 947094332d3Sopenharmony_ci captureInfo.enableShutterCallback_ = false; 948094332d3Sopenharmony_ci bool isStreaming = true; 949094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->Capture(captureId, captureInfo, isStreaming); 950094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 951094332d3Sopenharmony_ci sleep(3); 952094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CancelCapture(-1); 953094332d3Sopenharmony_ci EXPECT_EQ(INVALID_ARGUMENT, cameraBase_->rc); 954094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CancelCapture(captureId); 955094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 956094332d3Sopenharmony_ci // release stream 957094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->ReleaseStreams(captureInfo.streamIds_); 958094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 959094332d3Sopenharmony_ci} 960094332d3Sopenharmony_ci 961094332d3Sopenharmony_ci/** 962094332d3Sopenharmony_ci * @tc.name: Preview 963094332d3Sopenharmony_ci * @tc.desc: CancelCapture without Create capture. 964094332d3Sopenharmony_ci * @tc.level: Level2 965094332d3Sopenharmony_ci * @tc.size: MediumTest 966094332d3Sopenharmony_ci * @tc.type: Function 967094332d3Sopenharmony_ci */ 968094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_090, TestSize.Level2) 969094332d3Sopenharmony_ci{ 970094332d3Sopenharmony_ci CAMERA_LOGD("CancelCapture without Create capture."); 971094332d3Sopenharmony_ci // Create and get streamOperator information 972094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 973094332d3Sopenharmony_ci // Create data stream 974094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW}; 975094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 976094332d3Sopenharmony_ci // Get preview 977094332d3Sopenharmony_ci int captureId = 100; 978094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CancelCapture(captureId); 979094332d3Sopenharmony_ci if (cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR) { 980094332d3Sopenharmony_ci CAMERA_LOGI("CancelCapture success."); 981094332d3Sopenharmony_ci } else { 982094332d3Sopenharmony_ci CAMERA_LOGE("CancelCapture fail, rc = %{public}d", cameraBase_->rc); 983094332d3Sopenharmony_ci } 984094332d3Sopenharmony_ci} 985094332d3Sopenharmony_ci 986094332d3Sopenharmony_ci/** 987094332d3Sopenharmony_ci * @tc.name: Preview 988094332d3Sopenharmony_ci * @tc.desc: The same CaptureID, Create capture twice, expected fail. 989094332d3Sopenharmony_ci * @tc.level: Level2 990094332d3Sopenharmony_ci * @tc.size: MediumTest 991094332d3Sopenharmony_ci * @tc.type: Function 992094332d3Sopenharmony_ci */ 993094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_092, TestSize.Level2) 994094332d3Sopenharmony_ci{ 995094332d3Sopenharmony_ci CAMERA_LOGD("The same CaptureID, Create capture twice, expected fail."); 996094332d3Sopenharmony_ci // Create and get streamOperator information 997094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 998094332d3Sopenharmony_ci // start stream 999094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW}; 1000094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 1001094332d3Sopenharmony_ci 1002094332d3Sopenharmony_ci int captureId = cameraBase_->CAPTURE_ID_PREVIEW; 1003094332d3Sopenharmony_ci CaptureInfo captureInfo = {}; 1004094332d3Sopenharmony_ci captureInfo.streamIds_ = {cameraBase_->STREAM_ID_PREVIEW}; 1005094332d3Sopenharmony_ci captureInfo.captureSetting_ = cameraBase_->ability_; 1006094332d3Sopenharmony_ci captureInfo.enableShutterCallback_ = false; 1007094332d3Sopenharmony_ci bool isStreaming = true; 1008094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->Capture(captureId, captureInfo, isStreaming); 1009094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 1010094332d3Sopenharmony_ci 1011094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->Capture(captureId, captureInfo, isStreaming); 1012094332d3Sopenharmony_ci EXPECT_EQ(false, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 1013094332d3Sopenharmony_ci 1014094332d3Sopenharmony_ci sleep(2); 1015094332d3Sopenharmony_ci // cancel capture 1016094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CancelCapture(captureId); 1017094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 1018094332d3Sopenharmony_ci 1019094332d3Sopenharmony_ci // release stream 1020094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->ReleaseStreams(captureInfo.streamIds_); 1021094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 1022094332d3Sopenharmony_ci} 1023094332d3Sopenharmony_ci 1024094332d3Sopenharmony_ci/** 1025094332d3Sopenharmony_ci * @tc.name: Preview 1026094332d3Sopenharmony_ci * @tc.desc: Different captureIDs, Create capture,expected success. 1027094332d3Sopenharmony_ci * @tc.level: Level2 1028094332d3Sopenharmony_ci * @tc.size: MediumTest 1029094332d3Sopenharmony_ci * @tc.type: Function 1030094332d3Sopenharmony_ci */ 1031094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_093, TestSize.Level2) 1032094332d3Sopenharmony_ci{ 1033094332d3Sopenharmony_ci CAMERA_LOGD("Different captureIDs, Create capture,expected success."); 1034094332d3Sopenharmony_ci // Create and get streamOperator information 1035094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 1036094332d3Sopenharmony_ci // Create data stream 1037094332d3Sopenharmony_ci cameraBase_->intents = {PREVIEW}; 1038094332d3Sopenharmony_ci cameraBase_->StartStream(cameraBase_->intents); 1039094332d3Sopenharmony_ci // Get preview 1040094332d3Sopenharmony_ci int captureId = cameraBase_->CAPTURE_ID_PREVIEW; 1041094332d3Sopenharmony_ci CaptureInfo captureInfo = {}; 1042094332d3Sopenharmony_ci captureInfo.streamIds_ = {cameraBase_->STREAM_ID_PREVIEW}; 1043094332d3Sopenharmony_ci captureInfo.captureSetting_ = cameraBase_->ability_; 1044094332d3Sopenharmony_ci captureInfo.enableShutterCallback_ = false; 1045094332d3Sopenharmony_ci bool isStreaming = true; 1046094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->Capture(captureId, captureInfo, isStreaming); 1047094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 1048094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->Capture(captureId + 1, captureInfo, isStreaming); 1049094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 1050094332d3Sopenharmony_ci 1051094332d3Sopenharmony_ci sleep(2); 1052094332d3Sopenharmony_ci // cancel capture 1053094332d3Sopenharmony_ci cameraBase_->streamOperator->CancelCapture(captureId); 1054094332d3Sopenharmony_ci cameraBase_->streamOperator->CancelCapture(captureId + 1); 1055094332d3Sopenharmony_ci // release stream 1056094332d3Sopenharmony_ci cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->ReleaseStreams(captureInfo.streamIds_); 1057094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR); 1058094332d3Sopenharmony_ci} 1059094332d3Sopenharmony_ci 1060