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 expected 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 "meta_data_test.h" 16094332d3Sopenharmony_ci 17094332d3Sopenharmony_ciusing namespace testing::ext; 18094332d3Sopenharmony_ci 19094332d3Sopenharmony_ciconstexpr uint32_t SLEEP_SECOND_ONE = 1; 20094332d3Sopenharmony_ciconstexpr uint32_t SLEEP_SECOND_TWO = 2; 21094332d3Sopenharmony_ciconstexpr uint32_t DATA_COUNT = 1; 22094332d3Sopenharmony_ciconstexpr uint32_t ENTRY_CAPACITY = 30; 23094332d3Sopenharmony_ciconstexpr uint32_t DATA_CAPACITY = 2000; 24094332d3Sopenharmony_ciconstexpr int32_t FPS_RANGE = 20; 25094332d3Sopenharmony_ciconstexpr int32_t FPS_RANGE_CHANGE = 30; 26094332d3Sopenharmony_ci 27094332d3Sopenharmony_ciconst std::vector<int32_t> DATA_BASE = { 28094332d3Sopenharmony_ci OHOS_CAMERA_STREAM_ID, 29094332d3Sopenharmony_ci OHOS_SENSOR_COLOR_CORRECTION_GAINS, 30094332d3Sopenharmony_ci OHOS_SENSOR_EXPOSURE_TIME, 31094332d3Sopenharmony_ci OHOS_CONTROL_EXPOSURE_MODE, 32094332d3Sopenharmony_ci OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, 33094332d3Sopenharmony_ci OHOS_CONTROL_FOCUS_MODE, 34094332d3Sopenharmony_ci OHOS_CONTROL_METER_MODE, 35094332d3Sopenharmony_ci OHOS_CONTROL_FLASH_MODE, 36094332d3Sopenharmony_ci OHOS_CONTROL_FPS_RANGES, 37094332d3Sopenharmony_ci OHOS_CONTROL_AWB_MODE, 38094332d3Sopenharmony_ci OHOS_CONTROL_AF_REGIONS, 39094332d3Sopenharmony_ci OHOS_CONTROL_METER_POINT, 40094332d3Sopenharmony_ci OHOS_CONTROL_VIDEO_STABILIZATION_MODE, 41094332d3Sopenharmony_ci OHOS_CONTROL_FOCUS_STATE, 42094332d3Sopenharmony_ci OHOS_CONTROL_EXPOSURE_STATE, 43094332d3Sopenharmony_ci}; 44094332d3Sopenharmony_ci 45094332d3Sopenharmony_civoid MetaDataTest::SetUpTestCase(void) {} 46094332d3Sopenharmony_civoid MetaDataTest::TearDownTestCase(void) {} 47094332d3Sopenharmony_civoid MetaDataTest::SetUp(void) 48094332d3Sopenharmony_ci{ 49094332d3Sopenharmony_ci if (cameraBase_ == nullptr) { 50094332d3Sopenharmony_ci cameraBase_ = std::make_shared<TestCameraBase>(); 51094332d3Sopenharmony_ci } 52094332d3Sopenharmony_ci cameraBase_->Init(); 53094332d3Sopenharmony_ci} 54094332d3Sopenharmony_civoid MetaDataTest::TearDown(void) 55094332d3Sopenharmony_ci{ 56094332d3Sopenharmony_ci cameraBase_->Close(); 57094332d3Sopenharmony_ci} 58094332d3Sopenharmony_ci 59094332d3Sopenharmony_civoid MetaDataTest::SetStreamInfo(StreamInfo &streamInfo, const std::shared_ptr<StreamCustomer> &streamCustomer, 60094332d3Sopenharmony_ci const int streamId, const StreamIntent intent) 61094332d3Sopenharmony_ci{ 62094332d3Sopenharmony_ci sptr<OHOS::IBufferProducer> producer; 63094332d3Sopenharmony_ci constexpr uint32_t DATA_SPACE = 8; 64094332d3Sopenharmony_ci constexpr uint32_t TUNNEL_MODE = 5; 65094332d3Sopenharmony_ci constexpr uint32_t BUFFER_QUEUE_SIZE = 8; 66094332d3Sopenharmony_ci if (intent == STILL_CAPTURE) { 67094332d3Sopenharmony_ci streamInfo.encodeType_ = ENCODE_TYPE_JPEG; 68094332d3Sopenharmony_ci } else if (intent == VIDEO) { 69094332d3Sopenharmony_ci streamInfo.encodeType_ = ENCODE_TYPE_H264; 70094332d3Sopenharmony_ci } 71094332d3Sopenharmony_ci streamInfo.width_ = PREVIEW_WIDTH; 72094332d3Sopenharmony_ci streamInfo.height_ = PREVIEW_HEIGHT; 73094332d3Sopenharmony_ci streamInfo.format_ = PIXEL_FMT_RGBA_8888; 74094332d3Sopenharmony_ci streamInfo.streamId_ = streamId; 75094332d3Sopenharmony_ci streamInfo.dataspace_ = DATA_SPACE; 76094332d3Sopenharmony_ci streamInfo.intent_ = intent; 77094332d3Sopenharmony_ci streamInfo.tunneledMode_ = TUNNEL_MODE; 78094332d3Sopenharmony_ci producer = streamCustomer->CreateProducer(); 79094332d3Sopenharmony_ci streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer); 80094332d3Sopenharmony_ci CHECK_IF_PTR_NULL_RETURN_VOID(streamInfo.bufferQueue_); 81094332d3Sopenharmony_ci streamInfo.bufferQueue_->producer_->SetQueueSize(BUFFER_QUEUE_SIZE); 82094332d3Sopenharmony_ci} 83094332d3Sopenharmony_ci 84094332d3Sopenharmony_civoid MetaDataTest::CreateStream(int streamId, StreamIntent intent) 85094332d3Sopenharmony_ci{ 86094332d3Sopenharmony_ci StreamInfo streamInfo = {}; 87094332d3Sopenharmony_ci 88094332d3Sopenharmony_ci if (intent == PREVIEW) { 89094332d3Sopenharmony_ci if (streamId == cameraBase_->STREAM_ID_PREVIEW) { 90094332d3Sopenharmony_ci if (streamCustomerPreview_ == nullptr) { 91094332d3Sopenharmony_ci streamCustomerPreview_ = std::make_shared<StreamCustomer>(); 92094332d3Sopenharmony_ci SetStreamInfo(streamInfo, streamCustomerPreview_, streamId, intent); 93094332d3Sopenharmony_ci } 94094332d3Sopenharmony_ci } 95094332d3Sopenharmony_ci } else if (intent == STILL_CAPTURE) { 96094332d3Sopenharmony_ci if (streamCustomerSnapshot_ == nullptr) { 97094332d3Sopenharmony_ci streamCustomerSnapshot_ = std::make_shared<StreamCustomer>(); 98094332d3Sopenharmony_ci SetStreamInfo(streamInfo, streamCustomerSnapshot_, streamId, intent); 99094332d3Sopenharmony_ci } 100094332d3Sopenharmony_ci } else if (intent == VIDEO) { 101094332d3Sopenharmony_ci if (streamCustomerVideo_ == nullptr) { 102094332d3Sopenharmony_ci streamCustomerVideo_ = std::make_shared<StreamCustomer>(); 103094332d3Sopenharmony_ci SetStreamInfo(streamInfo, streamCustomerVideo_, streamId, intent); 104094332d3Sopenharmony_ci } 105094332d3Sopenharmony_ci } 106094332d3Sopenharmony_ci 107094332d3Sopenharmony_ci std::vector<StreamInfo>().swap(streamInfos_); 108094332d3Sopenharmony_ci streamInfos_.push_back(streamInfo); 109094332d3Sopenharmony_ci result_ = static_cast<CamRetCode>(cameraBase_->streamOperator->CreateStreams(streamInfos_)); 110094332d3Sopenharmony_ci EXPECT_EQ(result_, HDI::Camera::V1_0::NO_ERROR); 111094332d3Sopenharmony_ci 112094332d3Sopenharmony_ci if (result_ == HDI::Camera::V1_0::NO_ERROR) { 113094332d3Sopenharmony_ci CAMERA_LOGI("CreateStreams success."); 114094332d3Sopenharmony_ci } else { 115094332d3Sopenharmony_ci CAMERA_LOGE("CreateStreams fail, result_ = %{public}d", result_); 116094332d3Sopenharmony_ci } 117094332d3Sopenharmony_ci} 118094332d3Sopenharmony_ci 119094332d3Sopenharmony_civoid MetaDataTest::CommitStream() 120094332d3Sopenharmony_ci{ 121094332d3Sopenharmony_ci result_ = static_cast<CamRetCode>(cameraBase_->streamOperator->CommitStreams(NORMAL, cameraBase_->ability_)); 122094332d3Sopenharmony_ci EXPECT_EQ(result_, HDI::Camera::V1_0::NO_ERROR); 123094332d3Sopenharmony_ci if (result_ == HDI::Camera::V1_0::NO_ERROR) { 124094332d3Sopenharmony_ci CAMERA_LOGI("CommitStreams preview success."); 125094332d3Sopenharmony_ci } else { 126094332d3Sopenharmony_ci CAMERA_LOGE("CommitStreams preview fail, result_ = %{public}d", result_); 127094332d3Sopenharmony_ci } 128094332d3Sopenharmony_ci} 129094332d3Sopenharmony_ci 130094332d3Sopenharmony_civoid MetaDataTest::StartCapture( 131094332d3Sopenharmony_ci int streamId, int captureId, bool shutterCallback, bool isStreaming, const CaptureInfo captureInfo) 132094332d3Sopenharmony_ci{ 133094332d3Sopenharmony_ci captureInfo_.streamIds_ = {streamId}; 134094332d3Sopenharmony_ci captureInfo_.captureSetting_ = cameraBase_->ability_; 135094332d3Sopenharmony_ci captureInfo_.enableShutterCallback_ = shutterCallback; 136094332d3Sopenharmony_ci if (captureInfo.captureSetting_.size() != 0) { 137094332d3Sopenharmony_ci result_ = static_cast<CamRetCode>(cameraBase_->streamOperator->Capture(captureId, captureInfo, isStreaming)); 138094332d3Sopenharmony_ci } else { 139094332d3Sopenharmony_ci result_ = static_cast<CamRetCode>(cameraBase_->streamOperator->Capture(captureId, captureInfo_, isStreaming)); 140094332d3Sopenharmony_ci } 141094332d3Sopenharmony_ci EXPECT_EQ(result_, HDI::Camera::V1_0::NO_ERROR); 142094332d3Sopenharmony_ci if (result_ == HDI::Camera::V1_0::NO_ERROR) { 143094332d3Sopenharmony_ci CAMERA_LOGI("Capture success, captureId = %{public}d", captureId); 144094332d3Sopenharmony_ci } else { 145094332d3Sopenharmony_ci CAMERA_LOGE("check Capture: Capture fail, captureId = %{public}d, result_ = %{public}d", captureId, result_); 146094332d3Sopenharmony_ci } 147094332d3Sopenharmony_ci if (captureId == cameraBase_->CAPTURE_ID_PREVIEW) { 148094332d3Sopenharmony_ci streamCustomerPreview_->ReceiveFrameOn([this](const unsigned char *addr, const uint32_t size) { 149094332d3Sopenharmony_ci CAMERA_LOGI("preview size = %{public}u", size); 150094332d3Sopenharmony_ci }); 151094332d3Sopenharmony_ci } else if (captureId == cameraBase_->CAPTURE_ID_CAPTURE) { 152094332d3Sopenharmony_ci streamCustomerSnapshot_->ReceiveFrameOn([this](const unsigned char *addr, const uint32_t size) { 153094332d3Sopenharmony_ci CAMERA_LOGI("snapshot size = %{public}u", size); 154094332d3Sopenharmony_ci }); 155094332d3Sopenharmony_ci } else if (captureId == cameraBase_->CAPTURE_ID_VIDEO) { 156094332d3Sopenharmony_ci streamCustomerVideo_->ReceiveFrameOn([this](const unsigned char *addr, const uint32_t size) { 157094332d3Sopenharmony_ci CAMERA_LOGI("video size = %{public}u", size); 158094332d3Sopenharmony_ci }); 159094332d3Sopenharmony_ci } else { 160094332d3Sopenharmony_ci CAMERA_LOGE("StartCapture ignore command "); 161094332d3Sopenharmony_ci } 162094332d3Sopenharmony_ci} 163094332d3Sopenharmony_ci 164094332d3Sopenharmony_civoid MetaDataTest::StopStream(std::vector<int> &captureIds, std::vector<int> &streamIds) 165094332d3Sopenharmony_ci{ 166094332d3Sopenharmony_ci sleep(SLEEP_SECOND_TWO); 167094332d3Sopenharmony_ci if (captureIds.size() == 0) { 168094332d3Sopenharmony_ci return; 169094332d3Sopenharmony_ci } 170094332d3Sopenharmony_ci for (const auto &captureId : captureIds) { 171094332d3Sopenharmony_ci if (captureId == cameraBase_->CAPTURE_ID_PREVIEW) { 172094332d3Sopenharmony_ci streamCustomerPreview_->ReceiveFrameOff(); 173094332d3Sopenharmony_ci } else if (captureId == cameraBase_->CAPTURE_ID_CAPTURE) { 174094332d3Sopenharmony_ci streamCustomerSnapshot_->ReceiveFrameOff(); 175094332d3Sopenharmony_ci } else if (captureId == cameraBase_->CAPTURE_ID_VIDEO) { 176094332d3Sopenharmony_ci streamCustomerVideo_->ReceiveFrameOff(); 177094332d3Sopenharmony_ci sleep(SLEEP_SECOND_ONE); 178094332d3Sopenharmony_ci } else { 179094332d3Sopenharmony_ci CAMERA_LOGE("StopStream ignore command "); 180094332d3Sopenharmony_ci } 181094332d3Sopenharmony_ci } 182094332d3Sopenharmony_ci for (auto &captureId : captureIds) { 183094332d3Sopenharmony_ci result_ = static_cast<CamRetCode>(cameraBase_->streamOperator->CancelCapture(captureId)); 184094332d3Sopenharmony_ci sleep(SLEEP_SECOND_TWO); 185094332d3Sopenharmony_ci EXPECT_EQ(result_, HDI::Camera::V1_0::NO_ERROR); 186094332d3Sopenharmony_ci if (result_ == HDI::Camera::V1_0::NO_ERROR) { 187094332d3Sopenharmony_ci CAMERA_LOGI("check Capture: CancelCapture success, captureId = %{public}d", captureId); 188094332d3Sopenharmony_ci } else { 189094332d3Sopenharmony_ci CAMERA_LOGE("check Capture: CancelCapture fail, captureId = %{public}d, result_ = %{public}d", 190094332d3Sopenharmony_ci captureId, result_); 191094332d3Sopenharmony_ci } 192094332d3Sopenharmony_ci } 193094332d3Sopenharmony_ci sleep(SLEEP_SECOND_ONE); 194094332d3Sopenharmony_ci} 195094332d3Sopenharmony_ci 196094332d3Sopenharmony_civoid MetaDataTest::StartCustomCapture() 197094332d3Sopenharmony_ci{ 198094332d3Sopenharmony_ci CaptureInfo captureInfo = {}; 199094332d3Sopenharmony_ci StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true, captureInfo); 200094332d3Sopenharmony_ci constexpr double latitude = 27.987500; // dummy data: Qomolangma latitde 201094332d3Sopenharmony_ci constexpr double longitude = 86.927500; // dummy data: Qomolangma longituude 202094332d3Sopenharmony_ci constexpr double altitude = 8848.86; // dummy data: Qomolangma altitude 203094332d3Sopenharmony_ci std::shared_ptr<CameraSetting> captureSetting = std::make_shared<CameraSetting>(ENTRY_CAPACITY, DATA_CAPACITY); 204094332d3Sopenharmony_ci std::vector<double> gps; 205094332d3Sopenharmony_ci gps.push_back(latitude); 206094332d3Sopenharmony_ci gps.push_back(longitude); 207094332d3Sopenharmony_ci gps.push_back(altitude); 208094332d3Sopenharmony_ci captureSetting->addEntry(OHOS_JPEG_GPS_COORDINATES, gps.data(), gps.size()); 209094332d3Sopenharmony_ci 210094332d3Sopenharmony_ci captureInfo.streamIds_ = {cameraBase_->STREAM_ID_CAPTURE}; 211094332d3Sopenharmony_ci std::vector<uint8_t> snapshotSetting; 212094332d3Sopenharmony_ci MetadataUtils::ConvertMetadataToVec(captureSetting, snapshotSetting); 213094332d3Sopenharmony_ci captureInfo.captureSetting_ = snapshotSetting; 214094332d3Sopenharmony_ci captureInfo.enableShutterCallback_ = false; 215094332d3Sopenharmony_ci StartCapture(cameraBase_->STREAM_ID_CAPTURE, cameraBase_->CAPTURE_ID_CAPTURE, false, true, captureInfo); 216094332d3Sopenharmony_ci} 217094332d3Sopenharmony_ci 218094332d3Sopenharmony_civoid MetaDataTest::StartPreviewVideoStream() 219094332d3Sopenharmony_ci{ 220094332d3Sopenharmony_ci CreateStream(cameraBase_->STREAM_ID_PREVIEW, PREVIEW); 221094332d3Sopenharmony_ci CreateStream(cameraBase_->STREAM_ID_VIDEO, VIDEO); 222094332d3Sopenharmony_ci CommitStream(); 223094332d3Sopenharmony_ci} 224094332d3Sopenharmony_ci 225094332d3Sopenharmony_civoid MetaDataTest::StartPreviewCaptureStream() 226094332d3Sopenharmony_ci{ 227094332d3Sopenharmony_ci CreateStream(cameraBase_->STREAM_ID_PREVIEW, PREVIEW); 228094332d3Sopenharmony_ci CreateStream(cameraBase_->STREAM_ID_CAPTURE, STILL_CAPTURE); 229094332d3Sopenharmony_ci CommitStream(); 230094332d3Sopenharmony_ci} 231094332d3Sopenharmony_ci 232094332d3Sopenharmony_civoid MetaDataTest::StopPreviewVideoStream() 233094332d3Sopenharmony_ci{ 234094332d3Sopenharmony_ci sleep(SLEEP_SECOND_TWO); 235094332d3Sopenharmony_ci std::vector<int> captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_VIDEO}; 236094332d3Sopenharmony_ci std::vector<int> streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_VIDEO}; 237094332d3Sopenharmony_ci StopStream(captureIds, streamIds); 238094332d3Sopenharmony_ci} 239094332d3Sopenharmony_ci 240094332d3Sopenharmony_civoid MetaDataTest::StopPreviewCaptureStream() 241094332d3Sopenharmony_ci{ 242094332d3Sopenharmony_ci sleep(SLEEP_SECOND_TWO); 243094332d3Sopenharmony_ci std::vector<int> captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_CAPTURE}; 244094332d3Sopenharmony_ci std::vector<int> streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_CAPTURE}; 245094332d3Sopenharmony_ci StopStream(captureIds, streamIds); 246094332d3Sopenharmony_ci} 247094332d3Sopenharmony_ci 248094332d3Sopenharmony_civoid MetaDataTest::SetFps(std::shared_ptr<CameraSetting> &metaData, int32_t fps, bool isUpdate) 249094332d3Sopenharmony_ci{ 250094332d3Sopenharmony_ci std::vector<int32_t> fpsRange; 251094332d3Sopenharmony_ci fpsRange.push_back(fps); 252094332d3Sopenharmony_ci fpsRange.push_back(fps); 253094332d3Sopenharmony_ci 254094332d3Sopenharmony_ci if (isUpdate) { 255094332d3Sopenharmony_ci metaData->updateEntry(OHOS_CONTROL_FPS_RANGES, fpsRange.data(), fpsRange.size()); 256094332d3Sopenharmony_ci } else { 257094332d3Sopenharmony_ci metaData->addEntry(OHOS_CONTROL_FPS_RANGES, fpsRange.data(), fpsRange.size()); 258094332d3Sopenharmony_ci } 259094332d3Sopenharmony_ci} 260094332d3Sopenharmony_ci 261094332d3Sopenharmony_civoid MetaDataTest::Prepare(ResultCallbackMode mode, std::vector<MetaType> &results) 262094332d3Sopenharmony_ci{ 263094332d3Sopenharmony_ci cameraBase_->AchieveStreamOperator(); 264094332d3Sopenharmony_ci cameraBase_->cameraDevice->SetResultMode(mode); 265094332d3Sopenharmony_ci 266094332d3Sopenharmony_ci if (results.size() == 0) { 267094332d3Sopenharmony_ci CAMERA_LOGE("results size is null"); 268094332d3Sopenharmony_ci return; 269094332d3Sopenharmony_ci } 270094332d3Sopenharmony_ci cameraBase_->cameraDevice->EnableResult(results); 271094332d3Sopenharmony_ci} 272094332d3Sopenharmony_ci 273094332d3Sopenharmony_civoid MetaDataTest::UpdateSettings(std::shared_ptr<CameraSetting> &metaData) 274094332d3Sopenharmony_ci{ 275094332d3Sopenharmony_ci std::vector<uint8_t> setting; 276094332d3Sopenharmony_ci MetadataUtils::ConvertMetadataToVec(metaData, setting); 277094332d3Sopenharmony_ci cameraBase_->rc = static_cast<CamRetCode>(cameraBase_->cameraDevice->UpdateSettings(setting)); 278094332d3Sopenharmony_ci if (cameraBase_->rc != HDI::Camera::V1_0::NO_ERROR) { 279094332d3Sopenharmony_ci CAMERA_LOGE("UpdateSettings error, rc = %{public}d", cameraBase_->rc); 280094332d3Sopenharmony_ci return; 281094332d3Sopenharmony_ci } else { 282094332d3Sopenharmony_ci CAMERA_LOGI("UpdateSettings ok, rc = %{public}d", cameraBase_->rc); 283094332d3Sopenharmony_ci } 284094332d3Sopenharmony_ci} 285094332d3Sopenharmony_ci 286094332d3Sopenharmony_civoid MetaDataTest::StartPreviewVideoCapture() 287094332d3Sopenharmony_ci{ 288094332d3Sopenharmony_ci CaptureInfo captureInfo = {}; 289094332d3Sopenharmony_ci StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true, captureInfo); 290094332d3Sopenharmony_ci StartCapture(cameraBase_->STREAM_ID_VIDEO, cameraBase_->CAPTURE_ID_VIDEO, false, true, captureInfo); 291094332d3Sopenharmony_ci} 292094332d3Sopenharmony_ci 293094332d3Sopenharmony_ci/** 294094332d3Sopenharmony_ci * @tc.name: double preview 295094332d3Sopenharmony_ci * @tc.desc: Commit 2 streams together, preview and video streams, isStreaming is true. 296094332d3Sopenharmony_ci * CallbackMode is PER_FRAME, set device stream fps range value. 297094332d3Sopenharmony_ci * @tc.level: Level1 298094332d3Sopenharmony_ci * @tc.size: MediumTest 299094332d3Sopenharmony_ci * @tc.type: Function 300094332d3Sopenharmony_ci */ 301094332d3Sopenharmony_cistatic HWTEST_F(MetaDataTest, meta_data_001, TestSize.Level1) 302094332d3Sopenharmony_ci{ 303094332d3Sopenharmony_ci std::vector<MetaType> results; 304094332d3Sopenharmony_ci results.push_back(OHOS_CAMERA_STREAM_ID); 305094332d3Sopenharmony_ci results.push_back(OHOS_CONTROL_FPS_RANGES); 306094332d3Sopenharmony_ci Prepare(ResultCallbackMode::PER_FRAME, results); 307094332d3Sopenharmony_ci 308094332d3Sopenharmony_ci std::shared_ptr<CameraSetting> metaData = std::make_shared<CameraSetting>(ENTRY_CAPACITY, DATA_CAPACITY); 309094332d3Sopenharmony_ci const int32_t deviceStreamId = 0; 310094332d3Sopenharmony_ci metaData->addEntry(OHOS_CAMERA_STREAM_ID, &deviceStreamId, DATA_COUNT); 311094332d3Sopenharmony_ci 312094332d3Sopenharmony_ci SetFps(metaData, FPS_RANGE, false); 313094332d3Sopenharmony_ci 314094332d3Sopenharmony_ci StartPreviewVideoStream(); 315094332d3Sopenharmony_ci 316094332d3Sopenharmony_ci UpdateSettings(metaData); 317094332d3Sopenharmony_ci 318094332d3Sopenharmony_ci StartPreviewVideoCapture(); 319094332d3Sopenharmony_ci 320094332d3Sopenharmony_ci StopPreviewVideoStream(); 321094332d3Sopenharmony_ci} 322094332d3Sopenharmony_ci 323094332d3Sopenharmony_ci/** 324094332d3Sopenharmony_ci * @tc.name: double preview 325094332d3Sopenharmony_ci * @tc.desc: Commit 2 streams together, preview and video streams, isStreaming is true. 326094332d3Sopenharmony_ci * CallbackMode is ON_CHANGED, but the device stream fps range value has not changed. 327094332d3Sopenharmony_ci * @tc.level: Level1 328094332d3Sopenharmony_ci * @tc.size: MediumTest 329094332d3Sopenharmony_ci * @tc.type: Function 330094332d3Sopenharmony_ci */ 331094332d3Sopenharmony_cistatic HWTEST_F(MetaDataTest, meta_data_002, TestSize.Level1) 332094332d3Sopenharmony_ci{ 333094332d3Sopenharmony_ci std::vector<MetaType> results; 334094332d3Sopenharmony_ci results.push_back(OHOS_CAMERA_STREAM_ID); 335094332d3Sopenharmony_ci results.push_back(OHOS_CONTROL_FPS_RANGES); 336094332d3Sopenharmony_ci Prepare(ResultCallbackMode::ON_CHANGED, results); 337094332d3Sopenharmony_ci 338094332d3Sopenharmony_ci std::shared_ptr<CameraSetting> metaData = std::make_shared<CameraSetting>(ENTRY_CAPACITY, DATA_CAPACITY); 339094332d3Sopenharmony_ci const int32_t deviceStreamId = 0; 340094332d3Sopenharmony_ci metaData->addEntry(OHOS_CAMERA_STREAM_ID, &deviceStreamId, DATA_COUNT); 341094332d3Sopenharmony_ci 342094332d3Sopenharmony_ci SetFps(metaData, FPS_RANGE, false); 343094332d3Sopenharmony_ci 344094332d3Sopenharmony_ci StartPreviewVideoStream(); 345094332d3Sopenharmony_ci 346094332d3Sopenharmony_ci UpdateSettings(metaData); 347094332d3Sopenharmony_ci 348094332d3Sopenharmony_ci StartPreviewVideoCapture(); 349094332d3Sopenharmony_ci sleep(SLEEP_SECOND_TWO); 350094332d3Sopenharmony_ci 351094332d3Sopenharmony_ci SetFps(metaData, FPS_RANGE, true); 352094332d3Sopenharmony_ci 353094332d3Sopenharmony_ci UpdateSettings(metaData); 354094332d3Sopenharmony_ci 355094332d3Sopenharmony_ci StopPreviewVideoStream(); 356094332d3Sopenharmony_ci} 357094332d3Sopenharmony_ci 358094332d3Sopenharmony_ci/** 359094332d3Sopenharmony_ci * @tc.name: double preview 360094332d3Sopenharmony_ci * @tc.desc: Commit 2 streams together, preview and video streams, isStreaming is true. 361094332d3Sopenharmony_ci * CallbackMode is ON_CHANGED, set device stream fps range different value. 362094332d3Sopenharmony_ci * @tc.level: Level1 363094332d3Sopenharmony_ci * @tc.size: MediumTest 364094332d3Sopenharmony_ci * @tc.type: Function 365094332d3Sopenharmony_ci */ 366094332d3Sopenharmony_cistatic HWTEST_F(MetaDataTest, meta_data_003, TestSize.Level1) 367094332d3Sopenharmony_ci{ 368094332d3Sopenharmony_ci std::vector<MetaType> results; 369094332d3Sopenharmony_ci results.push_back(OHOS_CAMERA_STREAM_ID); 370094332d3Sopenharmony_ci results.push_back(OHOS_CONTROL_FPS_RANGES); 371094332d3Sopenharmony_ci Prepare(ResultCallbackMode::ON_CHANGED, results); 372094332d3Sopenharmony_ci 373094332d3Sopenharmony_ci std::shared_ptr<CameraSetting> metaData = std::make_shared<CameraSetting>(ENTRY_CAPACITY, DATA_CAPACITY); 374094332d3Sopenharmony_ci const int32_t deviceStreamId = 0; 375094332d3Sopenharmony_ci metaData->addEntry(OHOS_CAMERA_STREAM_ID, &deviceStreamId, DATA_COUNT); 376094332d3Sopenharmony_ci 377094332d3Sopenharmony_ci SetFps(metaData, FPS_RANGE, false); 378094332d3Sopenharmony_ci 379094332d3Sopenharmony_ci StartPreviewVideoStream(); 380094332d3Sopenharmony_ci 381094332d3Sopenharmony_ci UpdateSettings(metaData); 382094332d3Sopenharmony_ci 383094332d3Sopenharmony_ci StartPreviewVideoCapture(); 384094332d3Sopenharmony_ci sleep(SLEEP_SECOND_TWO); 385094332d3Sopenharmony_ci 386094332d3Sopenharmony_ci SetFps(metaData, FPS_RANGE_CHANGE, true); 387094332d3Sopenharmony_ci 388094332d3Sopenharmony_ci UpdateSettings(metaData); 389094332d3Sopenharmony_ci 390094332d3Sopenharmony_ci StopPreviewVideoStream(); 391094332d3Sopenharmony_ci} 392094332d3Sopenharmony_ci 393094332d3Sopenharmony_ci/** 394094332d3Sopenharmony_ci * @tc.name: double preview 395094332d3Sopenharmony_ci * @tc.desc: Commit 2 streams together, preview and video streams, isStreaming is true. 396094332d3Sopenharmony_ci * CallbackMode is PER_FRAME,set video stream stability mode value. 397094332d3Sopenharmony_ci * @tc.level: Level1 398094332d3Sopenharmony_ci * @tc.size: MediumTest 399094332d3Sopenharmony_ci * @tc.type: Function 400094332d3Sopenharmony_ci */ 401094332d3Sopenharmony_cistatic HWTEST_F(MetaDataTest, meta_data_004, TestSize.Level1) 402094332d3Sopenharmony_ci{ 403094332d3Sopenharmony_ci std::vector<MetaType> results; 404094332d3Sopenharmony_ci results.push_back(OHOS_CAMERA_STREAM_ID); 405094332d3Sopenharmony_ci Prepare(ResultCallbackMode::PER_FRAME, results); 406094332d3Sopenharmony_ci 407094332d3Sopenharmony_ci std::shared_ptr<CameraSetting> metaData = std::make_shared<CameraSetting>(ENTRY_CAPACITY, DATA_CAPACITY); 408094332d3Sopenharmony_ci const int32_t streamId = cameraBase_->STREAM_ID_VIDEO; 409094332d3Sopenharmony_ci metaData->addEntry(OHOS_CAMERA_STREAM_ID, &streamId, DATA_COUNT); 410094332d3Sopenharmony_ci 411094332d3Sopenharmony_ci uint8_t videoStabilizationMode = OHOS_CAMERA_VIDEO_STABILIZATION_LOW; 412094332d3Sopenharmony_ci metaData->addEntry(OHOS_CONTROL_VIDEO_STABILIZATION_MODE, &videoStabilizationMode, sizeof(videoStabilizationMode)); 413094332d3Sopenharmony_ci 414094332d3Sopenharmony_ci StartPreviewVideoStream(); 415094332d3Sopenharmony_ci 416094332d3Sopenharmony_ci UpdateSettings(metaData); 417094332d3Sopenharmony_ci 418094332d3Sopenharmony_ci StartPreviewVideoCapture(); 419094332d3Sopenharmony_ci 420094332d3Sopenharmony_ci StopPreviewVideoStream(); 421094332d3Sopenharmony_ci} 422094332d3Sopenharmony_ci 423094332d3Sopenharmony_ci/** 424094332d3Sopenharmony_ci * @tc.name: double preview 425094332d3Sopenharmony_ci * @tc.desc: Commit 2 streams together, preview and video streams, isStreaming is true. 426094332d3Sopenharmony_ci * CallbackMode is ON_CHANGED, set video stream stability mode different value. 427094332d3Sopenharmony_ci * @tc.level: Level1 428094332d3Sopenharmony_ci * @tc.size: MediumTest 429094332d3Sopenharmony_ci * @tc.type: Function 430094332d3Sopenharmony_ci */ 431094332d3Sopenharmony_cistatic HWTEST_F(MetaDataTest, meta_data_005, TestSize.Level1) 432094332d3Sopenharmony_ci{ 433094332d3Sopenharmony_ci std::vector<MetaType> results; 434094332d3Sopenharmony_ci results.push_back(OHOS_CAMERA_STREAM_ID); 435094332d3Sopenharmony_ci Prepare(ResultCallbackMode::ON_CHANGED, results); 436094332d3Sopenharmony_ci 437094332d3Sopenharmony_ci std::shared_ptr<CameraSetting> metaData = std::make_shared<CameraSetting>(ENTRY_CAPACITY, DATA_CAPACITY); 438094332d3Sopenharmony_ci const int32_t streamId = cameraBase_->STREAM_ID_VIDEO; 439094332d3Sopenharmony_ci metaData->addEntry(OHOS_CAMERA_STREAM_ID, &streamId, DATA_COUNT); 440094332d3Sopenharmony_ci 441094332d3Sopenharmony_ci uint8_t videoStabilizationMode = OHOS_CAMERA_VIDEO_STABILIZATION_LOW; 442094332d3Sopenharmony_ci metaData->addEntry(OHOS_CONTROL_VIDEO_STABILIZATION_MODE, &videoStabilizationMode, sizeof(videoStabilizationMode)); 443094332d3Sopenharmony_ci 444094332d3Sopenharmony_ci StartPreviewVideoStream(); 445094332d3Sopenharmony_ci 446094332d3Sopenharmony_ci UpdateSettings(metaData); 447094332d3Sopenharmony_ci 448094332d3Sopenharmony_ci StartPreviewVideoCapture(); 449094332d3Sopenharmony_ci sleep(SLEEP_SECOND_TWO); 450094332d3Sopenharmony_ci 451094332d3Sopenharmony_ci uint8_t videoStabilizationModeChange = OHOS_CAMERA_VIDEO_STABILIZATION_MIDDLE; 452094332d3Sopenharmony_ci metaData->updateEntry( 453094332d3Sopenharmony_ci OHOS_CONTROL_VIDEO_STABILIZATION_MODE, &videoStabilizationModeChange, sizeof(videoStabilizationModeChange)); 454094332d3Sopenharmony_ci UpdateSettings(metaData); 455094332d3Sopenharmony_ci 456094332d3Sopenharmony_ci StopPreviewVideoStream(); 457094332d3Sopenharmony_ci} 458094332d3Sopenharmony_ci 459094332d3Sopenharmony_ci/** 460094332d3Sopenharmony_ci * @tc.name: double preview 461094332d3Sopenharmony_ci * @tc.desc: Commit 2 streams together, preview and video streams, isStreaming is true. 462094332d3Sopenharmony_ci * CallbackMode is PER_FRAME, set device stream fps range value and exposure time value. 463094332d3Sopenharmony_ci * @tc.level: Level1 464094332d3Sopenharmony_ci * @tc.size: MediumTest 465094332d3Sopenharmony_ci * @tc.type: Function 466094332d3Sopenharmony_ci */ 467094332d3Sopenharmony_cistatic HWTEST_F(MetaDataTest, meta_data_006, TestSize.Level1) 468094332d3Sopenharmony_ci{ 469094332d3Sopenharmony_ci std::vector<MetaType> results; 470094332d3Sopenharmony_ci results.push_back(OHOS_CAMERA_STREAM_ID); 471094332d3Sopenharmony_ci results.push_back(OHOS_CONTROL_FPS_RANGES); 472094332d3Sopenharmony_ci results.push_back(OHOS_SENSOR_EXPOSURE_TIME); 473094332d3Sopenharmony_ci Prepare(ResultCallbackMode::PER_FRAME, results); 474094332d3Sopenharmony_ci 475094332d3Sopenharmony_ci std::shared_ptr<CameraSetting> metaData = std::make_shared<CameraSetting>(ENTRY_CAPACITY, DATA_CAPACITY); 476094332d3Sopenharmony_ci const int32_t deviceStreamId = 0; 477094332d3Sopenharmony_ci metaData->addEntry(OHOS_CAMERA_STREAM_ID, &deviceStreamId, DATA_COUNT); 478094332d3Sopenharmony_ci 479094332d3Sopenharmony_ci SetFps(metaData, FPS_RANGE, false); 480094332d3Sopenharmony_ci 481094332d3Sopenharmony_ci StartPreviewVideoStream(); 482094332d3Sopenharmony_ci 483094332d3Sopenharmony_ci UpdateSettings(metaData); 484094332d3Sopenharmony_ci 485094332d3Sopenharmony_ci StartPreviewVideoCapture(); 486094332d3Sopenharmony_ci sleep(SLEEP_SECOND_TWO); 487094332d3Sopenharmony_ci 488094332d3Sopenharmony_ci int64_t exposureTime = 10; 489094332d3Sopenharmony_ci metaData->addEntry(OHOS_SENSOR_EXPOSURE_TIME, &exposureTime, DATA_COUNT); 490094332d3Sopenharmony_ci 491094332d3Sopenharmony_ci UpdateSettings(metaData); 492094332d3Sopenharmony_ci 493094332d3Sopenharmony_ci StopPreviewVideoStream(); 494094332d3Sopenharmony_ci} 495094332d3Sopenharmony_ci 496094332d3Sopenharmony_ci/** 497094332d3Sopenharmony_ci * @tc.name: double preview 498094332d3Sopenharmony_ci * @tc.desc: Commit 2 streams together, preview and video streams, isStreaming is true. 499094332d3Sopenharmony_ci * CallbackMode is PER_FRAME, set device stream fps range different value and exposure time value. 500094332d3Sopenharmony_ci * @tc.level: Level1 501094332d3Sopenharmony_ci * @tc.size: MediumTest 502094332d3Sopenharmony_ci * @tc.type: Function 503094332d3Sopenharmony_ci */ 504094332d3Sopenharmony_cistatic HWTEST_F(MetaDataTest, meta_data_007, TestSize.Level1) 505094332d3Sopenharmony_ci{ 506094332d3Sopenharmony_ci std::vector<MetaType> results; 507094332d3Sopenharmony_ci results.push_back(OHOS_CAMERA_STREAM_ID); 508094332d3Sopenharmony_ci results.push_back(OHOS_CONTROL_FPS_RANGES); 509094332d3Sopenharmony_ci results.push_back(OHOS_SENSOR_EXPOSURE_TIME); 510094332d3Sopenharmony_ci Prepare(ResultCallbackMode::PER_FRAME, results); 511094332d3Sopenharmony_ci 512094332d3Sopenharmony_ci std::shared_ptr<CameraSetting> metaData = std::make_shared<CameraSetting>(ENTRY_CAPACITY, DATA_CAPACITY); 513094332d3Sopenharmony_ci const int32_t deviceStreamId = 0; 514094332d3Sopenharmony_ci metaData->addEntry(OHOS_CAMERA_STREAM_ID, &deviceStreamId, DATA_COUNT); 515094332d3Sopenharmony_ci 516094332d3Sopenharmony_ci SetFps(metaData, FPS_RANGE, false); 517094332d3Sopenharmony_ci 518094332d3Sopenharmony_ci StartPreviewVideoStream(); 519094332d3Sopenharmony_ci 520094332d3Sopenharmony_ci UpdateSettings(metaData); 521094332d3Sopenharmony_ci 522094332d3Sopenharmony_ci StartPreviewVideoCapture(); 523094332d3Sopenharmony_ci sleep(SLEEP_SECOND_TWO); 524094332d3Sopenharmony_ci 525094332d3Sopenharmony_ci SetFps(metaData, FPS_RANGE_CHANGE, true); 526094332d3Sopenharmony_ci 527094332d3Sopenharmony_ci UpdateSettings(metaData); 528094332d3Sopenharmony_ci sleep(SLEEP_SECOND_TWO); 529094332d3Sopenharmony_ci 530094332d3Sopenharmony_ci int64_t exposureTime = 10; 531094332d3Sopenharmony_ci metaData->addEntry(OHOS_SENSOR_EXPOSURE_TIME, &exposureTime, DATA_COUNT); 532094332d3Sopenharmony_ci 533094332d3Sopenharmony_ci UpdateSettings(metaData); 534094332d3Sopenharmony_ci 535094332d3Sopenharmony_ci StopPreviewVideoStream(); 536094332d3Sopenharmony_ci} 537094332d3Sopenharmony_ci 538094332d3Sopenharmony_ci/** 539094332d3Sopenharmony_ci * @tc.name: double preview 540094332d3Sopenharmony_ci * @tc.desc: Commit 2 streams together, preview and still picture streams, isStreaming is true. 541094332d3Sopenharmony_ci * CallbackMode is ON_CHANGED, set still picture stream exposure mode different value. 542094332d3Sopenharmony_ci * @tc.level: Level1 543094332d3Sopenharmony_ci * @tc.size: MediumTest 544094332d3Sopenharmony_ci * @tc.type: Function 545094332d3Sopenharmony_ci */ 546094332d3Sopenharmony_cistatic HWTEST_F(MetaDataTest, meta_data_008, TestSize.Level1) 547094332d3Sopenharmony_ci{ 548094332d3Sopenharmony_ci std::vector<MetaType> results; 549094332d3Sopenharmony_ci results.push_back(OHOS_CAMERA_STREAM_ID); 550094332d3Sopenharmony_ci Prepare(ResultCallbackMode::ON_CHANGED, results); 551094332d3Sopenharmony_ci 552094332d3Sopenharmony_ci std::shared_ptr<CameraSetting> metaData = std::make_shared<CameraSetting>(ENTRY_CAPACITY, DATA_CAPACITY); 553094332d3Sopenharmony_ci const int32_t deviceStreamId = cameraBase_->STREAM_ID_CAPTURE; 554094332d3Sopenharmony_ci metaData->addEntry(OHOS_CAMERA_STREAM_ID, &deviceStreamId, DATA_COUNT); 555094332d3Sopenharmony_ci 556094332d3Sopenharmony_ci uint8_t aeMode = OHOS_CAMERA_EXPOSURE_MODE_CONTINUOUS_AUTO; 557094332d3Sopenharmony_ci metaData->addEntry(OHOS_CONTROL_EXPOSURE_MODE, &aeMode, sizeof(aeMode)); 558094332d3Sopenharmony_ci 559094332d3Sopenharmony_ci StartPreviewCaptureStream(); 560094332d3Sopenharmony_ci 561094332d3Sopenharmony_ci UpdateSettings(metaData); 562094332d3Sopenharmony_ci 563094332d3Sopenharmony_ci StartCustomCapture(); 564094332d3Sopenharmony_ci sleep(SLEEP_SECOND_TWO); 565094332d3Sopenharmony_ci 566094332d3Sopenharmony_ci uint8_t aeModeChangeValue = OHOS_CAMERA_EXPOSURE_MODE_LOCKED; 567094332d3Sopenharmony_ci metaData->updateEntry(OHOS_CONTROL_EXPOSURE_MODE, &aeModeChangeValue, sizeof(aeModeChangeValue)); 568094332d3Sopenharmony_ci 569094332d3Sopenharmony_ci UpdateSettings(metaData); 570094332d3Sopenharmony_ci 571094332d3Sopenharmony_ci StopPreviewCaptureStream(); 572094332d3Sopenharmony_ci} 573094332d3Sopenharmony_ci 574094332d3Sopenharmony_ci/** 575094332d3Sopenharmony_ci * @tc.name: double preview 576094332d3Sopenharmony_ci * @tc.desc: Commit 2 streams together, preview and still picture streams, isStreaming is true. 577094332d3Sopenharmony_ci * CallbackMode is ON_CHANGED, set still picture stream exposure mode/time different value and device stream fps range 578094332d3Sopenharmony_ci * different value. 579094332d3Sopenharmony_ci * @tc.level: Level1 580094332d3Sopenharmony_ci * @tc.size: MediumTest 581094332d3Sopenharmony_ci * @tc.type: Function 582094332d3Sopenharmony_ci */ 583094332d3Sopenharmony_cistatic HWTEST_F(MetaDataTest, meta_data_009, TestSize.Level1) 584094332d3Sopenharmony_ci{ 585094332d3Sopenharmony_ci std::vector<MetaType> results; 586094332d3Sopenharmony_ci results.push_back(OHOS_CAMERA_STREAM_ID); 587094332d3Sopenharmony_ci results.push_back(OHOS_CONTROL_FPS_RANGES); 588094332d3Sopenharmony_ci Prepare(ResultCallbackMode::ON_CHANGED, results); 589094332d3Sopenharmony_ci 590094332d3Sopenharmony_ci std::shared_ptr<CameraSetting> metaDataDevice = std::make_shared<CameraSetting>(ENTRY_CAPACITY, DATA_CAPACITY); 591094332d3Sopenharmony_ci const int32_t deviceStreamId = 0; 592094332d3Sopenharmony_ci metaDataDevice->addEntry(OHOS_CAMERA_STREAM_ID, &deviceStreamId, DATA_COUNT); 593094332d3Sopenharmony_ci 594094332d3Sopenharmony_ci SetFps(metaDataDevice, FPS_RANGE, false); 595094332d3Sopenharmony_ci 596094332d3Sopenharmony_ci std::shared_ptr<CameraSetting> metaDataStream = std::make_shared<CameraSetting>(ENTRY_CAPACITY, DATA_CAPACITY); 597094332d3Sopenharmony_ci const int32_t streamId = cameraBase_->STREAM_ID_CAPTURE; 598094332d3Sopenharmony_ci metaDataStream->addEntry(OHOS_CAMERA_STREAM_ID, &streamId, DATA_COUNT); 599094332d3Sopenharmony_ci 600094332d3Sopenharmony_ci uint8_t aeMode = OHOS_CAMERA_EXPOSURE_MODE_CONTINUOUS_AUTO; 601094332d3Sopenharmony_ci metaDataStream->addEntry(OHOS_CONTROL_EXPOSURE_MODE, &aeMode, sizeof(aeMode)); 602094332d3Sopenharmony_ci 603094332d3Sopenharmony_ci int64_t exposureTime = 10; 604094332d3Sopenharmony_ci metaDataStream->addEntry(OHOS_SENSOR_EXPOSURE_TIME, &exposureTime, DATA_COUNT); 605094332d3Sopenharmony_ci 606094332d3Sopenharmony_ci StartPreviewCaptureStream(); 607094332d3Sopenharmony_ci 608094332d3Sopenharmony_ci UpdateSettings(metaDataDevice); 609094332d3Sopenharmony_ci sleep(SLEEP_SECOND_TWO); 610094332d3Sopenharmony_ci UpdateSettings(metaDataStream); 611094332d3Sopenharmony_ci StartCustomCapture(); 612094332d3Sopenharmony_ci sleep(SLEEP_SECOND_TWO); 613094332d3Sopenharmony_ci 614094332d3Sopenharmony_ci uint8_t aeModeChangeValue = OHOS_CAMERA_EXPOSURE_MODE_LOCKED; 615094332d3Sopenharmony_ci metaDataStream->updateEntry(OHOS_CONTROL_EXPOSURE_MODE, &aeModeChangeValue, sizeof(aeModeChangeValue)); 616094332d3Sopenharmony_ci 617094332d3Sopenharmony_ci UpdateSettings(metaDataStream); 618094332d3Sopenharmony_ci sleep(SLEEP_SECOND_TWO); 619094332d3Sopenharmony_ci SetFps(metaDataDevice, FPS_RANGE_CHANGE, true); 620094332d3Sopenharmony_ci UpdateSettings(metaDataDevice); 621094332d3Sopenharmony_ci 622094332d3Sopenharmony_ci StopPreviewCaptureStream(); 623094332d3Sopenharmony_ci} 624