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