11c1b0f19Sopenharmony_ci/* 21c1b0f19Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 31c1b0f19Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 41c1b0f19Sopenharmony_ci * you may not use this file except in compliance with the License. 51c1b0f19Sopenharmony_ci * You may obtain a copy of the License at 61c1b0f19Sopenharmony_ci * 71c1b0f19Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 81c1b0f19Sopenharmony_ci * 91c1b0f19Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 101c1b0f19Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 111c1b0f19Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 121c1b0f19Sopenharmony_ci * See the License for the specific language governing permissions and 131c1b0f19Sopenharmony_ci * limitations under the License. 141c1b0f19Sopenharmony_ci */ 151c1b0f19Sopenharmony_ci 161c1b0f19Sopenharmony_ci#ifndef OHOS_DCAMERA_CLIENT_DEMO_H 171c1b0f19Sopenharmony_ci#define OHOS_DCAMERA_CLIENT_DEMO_H 181c1b0f19Sopenharmony_ci 191c1b0f19Sopenharmony_ci#include <fstream> 201c1b0f19Sopenharmony_ci 211c1b0f19Sopenharmony_ci#include "anonymous_string.h" 221c1b0f19Sopenharmony_ci#include "camera_device_ability_items.h" 231c1b0f19Sopenharmony_ci#include "camera_input.h" 241c1b0f19Sopenharmony_ci#include "camera_manager.h" 251c1b0f19Sopenharmony_ci#include "camera_metadata_operator.h" 261c1b0f19Sopenharmony_ci#include "camera_output_capability.h" 271c1b0f19Sopenharmony_ci#include "capture_input.h" 281c1b0f19Sopenharmony_ci#include "capture_output.h" 291c1b0f19Sopenharmony_ci#include "capture_session.h" 301c1b0f19Sopenharmony_ci#include "dcamera_capture_info_cmd.h" 311c1b0f19Sopenharmony_ci#include "dcamera_utils_tools.h" 321c1b0f19Sopenharmony_ci#include "distributed_camera_constants.h" 331c1b0f19Sopenharmony_ci#include "distributed_camera_errno.h" 341c1b0f19Sopenharmony_ci#include "distributed_hardware_log.h" 351c1b0f19Sopenharmony_ci#include "metadata_utils.h" 361c1b0f19Sopenharmony_ci#include "photo_output.h" 371c1b0f19Sopenharmony_ci#include "preview_output.h" 381c1b0f19Sopenharmony_ci#include "surface.h" 391c1b0f19Sopenharmony_ci#include "video_output.h" 401c1b0f19Sopenharmony_ci 411c1b0f19Sopenharmony_cinamespace OHOS { 421c1b0f19Sopenharmony_cinamespace DistributedHardware { 431c1b0f19Sopenharmony_ciclass DemoDCameraBufferConsumerListener : public IBufferConsumerListener { 441c1b0f19Sopenharmony_cipublic: 451c1b0f19Sopenharmony_ci explicit DemoDCameraBufferConsumerListener(const sptr<IConsumerSurface>& surface) : surface_(surface) 461c1b0f19Sopenharmony_ci { 471c1b0f19Sopenharmony_ci } 481c1b0f19Sopenharmony_ci 491c1b0f19Sopenharmony_ci void OnBufferAvailable() 501c1b0f19Sopenharmony_ci { 511c1b0f19Sopenharmony_ci DHLOGI("DemoDCameraBufferConsumerListener::OnBufferAvailable"); 521c1b0f19Sopenharmony_ci if (surface_ == nullptr) { 531c1b0f19Sopenharmony_ci DHLOGE("DemoDCameraBufferConsumerListener surface is null"); 541c1b0f19Sopenharmony_ci return; 551c1b0f19Sopenharmony_ci } 561c1b0f19Sopenharmony_ci 571c1b0f19Sopenharmony_ci int32_t flushFence = 0; 581c1b0f19Sopenharmony_ci int64_t timestamp = 0; 591c1b0f19Sopenharmony_ci OHOS::Rect damage; 601c1b0f19Sopenharmony_ci OHOS::sptr<OHOS::SurfaceBuffer> buffer = nullptr; 611c1b0f19Sopenharmony_ci surface_->AcquireBuffer(buffer, flushFence, timestamp, damage); 621c1b0f19Sopenharmony_ci if (buffer == nullptr) { 631c1b0f19Sopenharmony_ci DHLOGE("DemoDCameraBufferConsumerListener AcquireBuffer failed"); 641c1b0f19Sopenharmony_ci return; 651c1b0f19Sopenharmony_ci } 661c1b0f19Sopenharmony_ci 671c1b0f19Sopenharmony_ci width_ = buffer->GetWidth(); 681c1b0f19Sopenharmony_ci height_ = buffer->GetHeight(); 691c1b0f19Sopenharmony_ci size_ = buffer->GetSize(); 701c1b0f19Sopenharmony_ci address_ = static_cast<char *>(buffer->GetVirAddr()); 711c1b0f19Sopenharmony_ci buffer->GetExtraData()->ExtraGet("dataSize", dataSize_); 721c1b0f19Sopenharmony_ci 731c1b0f19Sopenharmony_ci#ifdef DCAMERA_COMMON 741c1b0f19Sopenharmony_ci actualSize_ = width_ * height_ * RGB_BYTES_PER_PIXEL; 751c1b0f19Sopenharmony_ci#else 761c1b0f19Sopenharmony_ci actualSize_ = width_ * height_ * YUV_BYTES_PER_PIXEL / Y2UV_RATIO; 771c1b0f19Sopenharmony_ci#endif 781c1b0f19Sopenharmony_ci 791c1b0f19Sopenharmony_ci SaveFile(); 801c1b0f19Sopenharmony_ci surface_->ReleaseBuffer(buffer, -1); 811c1b0f19Sopenharmony_ci } 821c1b0f19Sopenharmony_ci 831c1b0f19Sopenharmony_ciprotected: 841c1b0f19Sopenharmony_ci virtual void SaveFile() const = 0; 851c1b0f19Sopenharmony_ci 861c1b0f19Sopenharmony_ciprotected: 871c1b0f19Sopenharmony_ci constexpr static int32_t Y2UV_RATIO = 2; 881c1b0f19Sopenharmony_ci constexpr static int32_t YUV_BYTES_PER_PIXEL = 3; 891c1b0f19Sopenharmony_ci constexpr static int32_t RGB_BYTES_PER_PIXEL = 4; 901c1b0f19Sopenharmony_ci 911c1b0f19Sopenharmony_ci char *address_ = nullptr; 921c1b0f19Sopenharmony_ci int32_t actualSize_ = 0; 931c1b0f19Sopenharmony_ci int32_t dataSize_ = 0; 941c1b0f19Sopenharmony_ci int32_t height_ = 0; 951c1b0f19Sopenharmony_ci int32_t width_ = 0; 961c1b0f19Sopenharmony_ci int32_t size_ = 0; 971c1b0f19Sopenharmony_ci sptr<IConsumerSurface> surface_; 981c1b0f19Sopenharmony_ci}; 991c1b0f19Sopenharmony_ci 1001c1b0f19Sopenharmony_ciclass DemoDCameraPhotoSurfaceListener : public DemoDCameraBufferConsumerListener { 1011c1b0f19Sopenharmony_cipublic: 1021c1b0f19Sopenharmony_ci explicit DemoDCameraPhotoSurfaceListener(const sptr<IConsumerSurface>& surface) 1031c1b0f19Sopenharmony_ci : DemoDCameraBufferConsumerListener(surface) 1041c1b0f19Sopenharmony_ci { 1051c1b0f19Sopenharmony_ci } 1061c1b0f19Sopenharmony_ci 1071c1b0f19Sopenharmony_ciprotected: 1081c1b0f19Sopenharmony_ci void SaveFile() const override 1091c1b0f19Sopenharmony_ci { 1101c1b0f19Sopenharmony_ci DHLOGI("DemoDCameraPhotoSurfaceListener::SaveFile width: %{public}d, height: %{public}d, size: %{public}d, " 1111c1b0f19Sopenharmony_ci "dataSize: %{public}d, actualSize: %{public}d", width_, height_, size_, dataSize_, actualSize_); 1121c1b0f19Sopenharmony_ci if ((address_ == nullptr) || (dataSize_ <= 0)) { 1131c1b0f19Sopenharmony_ci DHLOGE("DemoDCameraPhotoSurfaceListener invalid params, dataSize: %{public}d", dataSize_); 1141c1b0f19Sopenharmony_ci return; 1151c1b0f19Sopenharmony_ci } 1161c1b0f19Sopenharmony_ci 1171c1b0f19Sopenharmony_ci std::ofstream ofs; 1181c1b0f19Sopenharmony_ci std::cout << "saving photo ..." << std::endl; 1191c1b0f19Sopenharmony_ci std::string fileName = "/data/log/dcamera_photo_" + std::to_string(GetNowTimeStampMs()) + ".jpg"; 1201c1b0f19Sopenharmony_ci ofs.open(fileName, std::ios::binary | std::ios::out); 1211c1b0f19Sopenharmony_ci if (!ofs.is_open()) { 1221c1b0f19Sopenharmony_ci DHLOGE("DemoDCameraPhotoSurfaceListener open file failed"); 1231c1b0f19Sopenharmony_ci return; 1241c1b0f19Sopenharmony_ci } 1251c1b0f19Sopenharmony_ci ofs.write(address_, dataSize_); 1261c1b0f19Sopenharmony_ci ofs.close(); 1271c1b0f19Sopenharmony_ci std::cout << "saving photo success" << std::endl; 1281c1b0f19Sopenharmony_ci } 1291c1b0f19Sopenharmony_ci}; 1301c1b0f19Sopenharmony_ci 1311c1b0f19Sopenharmony_ciclass DemoDCameraPreviewSurfaceListener : public DemoDCameraBufferConsumerListener { 1321c1b0f19Sopenharmony_cipublic: 1331c1b0f19Sopenharmony_ci explicit DemoDCameraPreviewSurfaceListener(const sptr<IConsumerSurface>& surface) 1341c1b0f19Sopenharmony_ci : DemoDCameraBufferConsumerListener(surface) 1351c1b0f19Sopenharmony_ci { 1361c1b0f19Sopenharmony_ci } 1371c1b0f19Sopenharmony_ci 1381c1b0f19Sopenharmony_ciprotected: 1391c1b0f19Sopenharmony_ci void SaveFile() const override 1401c1b0f19Sopenharmony_ci { 1411c1b0f19Sopenharmony_ci DHLOGI("DemoDCameraPreviewSurfaceListener::SaveFile width: %{public}d, height: %{public}d, size: %{public}d, " 1421c1b0f19Sopenharmony_ci "dataSize: %{public}d, actualSize: %{public}d", width_, height_, size_, dataSize_, actualSize_); 1431c1b0f19Sopenharmony_ci if ((address_ == nullptr) || (actualSize_ <= 0)) { 1441c1b0f19Sopenharmony_ci DHLOGE("DemoDCameraPreviewSurfaceListener invalid params, actualSize: %{public}d", actualSize_); 1451c1b0f19Sopenharmony_ci return; 1461c1b0f19Sopenharmony_ci } 1471c1b0f19Sopenharmony_ci 1481c1b0f19Sopenharmony_ci std::ofstream ofs; 1491c1b0f19Sopenharmony_ci std::cout << "saving preview ..." << std::endl; 1501c1b0f19Sopenharmony_ci std::string resolution = std::to_string(width_) + "_" + std::to_string(height_); 1511c1b0f19Sopenharmony_ci std::string fileName = "/data/log/dcamera_preview_" + resolution + ".yuv"; 1521c1b0f19Sopenharmony_ci ofs.open(fileName, std::ios::binary | std::ios::out | std::ios::app); 1531c1b0f19Sopenharmony_ci if (!ofs.is_open()) { 1541c1b0f19Sopenharmony_ci DHLOGE("DemoDCameraPreviewSurfaceListener open file failed"); 1551c1b0f19Sopenharmony_ci return; 1561c1b0f19Sopenharmony_ci } 1571c1b0f19Sopenharmony_ci ofs.write(address_, actualSize_); 1581c1b0f19Sopenharmony_ci ofs.close(); 1591c1b0f19Sopenharmony_ci std::cout << "saving preview success" << std::endl; 1601c1b0f19Sopenharmony_ci } 1611c1b0f19Sopenharmony_ci}; 1621c1b0f19Sopenharmony_ci 1631c1b0f19Sopenharmony_ciclass DemoDCameraVideoSurfaceListener : public DemoDCameraBufferConsumerListener { 1641c1b0f19Sopenharmony_cipublic: 1651c1b0f19Sopenharmony_ci explicit DemoDCameraVideoSurfaceListener(const sptr<IConsumerSurface>& surface) 1661c1b0f19Sopenharmony_ci : DemoDCameraBufferConsumerListener(surface) 1671c1b0f19Sopenharmony_ci { 1681c1b0f19Sopenharmony_ci } 1691c1b0f19Sopenharmony_ci 1701c1b0f19Sopenharmony_ciprotected: 1711c1b0f19Sopenharmony_ci void SaveFile() const override 1721c1b0f19Sopenharmony_ci { 1731c1b0f19Sopenharmony_ci DHLOGI("DemoDCameraVideoSurfaceListener::SaveFile width: %{public}d, height: %{public}d, size: %{public}d, " 1741c1b0f19Sopenharmony_ci "dataSize: %{public}d, actualSize: %{public}d", width_, height_, size_, dataSize_, actualSize_); 1751c1b0f19Sopenharmony_ci if ((address_ == nullptr) || (actualSize_ <= 0)) { 1761c1b0f19Sopenharmony_ci DHLOGE("DemoDCameraVideoSurfaceListener invalid params, actualSize: %{public}d", actualSize_); 1771c1b0f19Sopenharmony_ci return; 1781c1b0f19Sopenharmony_ci } 1791c1b0f19Sopenharmony_ci 1801c1b0f19Sopenharmony_ci std::ofstream ofs; 1811c1b0f19Sopenharmony_ci std::cout << "saving video ..." << std::endl; 1821c1b0f19Sopenharmony_ci std::string resolution = std::to_string(width_) + "_" + std::to_string(height_); 1831c1b0f19Sopenharmony_ci std::string fileName = "/data/log/dcamera_video_" + resolution + ".yuv"; 1841c1b0f19Sopenharmony_ci ofs.open(fileName, std::ios::binary | std::ios::out | std::ios::app); 1851c1b0f19Sopenharmony_ci if (!ofs.is_open()) { 1861c1b0f19Sopenharmony_ci DHLOGE("DemoDCameraVideoSurfaceListener open file failed"); 1871c1b0f19Sopenharmony_ci return; 1881c1b0f19Sopenharmony_ci } 1891c1b0f19Sopenharmony_ci ofs.write(address_, actualSize_); 1901c1b0f19Sopenharmony_ci ofs.close(); 1911c1b0f19Sopenharmony_ci std::cout << "saving video success" << std::endl; 1921c1b0f19Sopenharmony_ci } 1931c1b0f19Sopenharmony_ci}; 1941c1b0f19Sopenharmony_ci 1951c1b0f19Sopenharmony_ciclass DemoDCameraPhotoCallback : public CameraStandard::PhotoStateCallback { 1961c1b0f19Sopenharmony_cipublic: 1971c1b0f19Sopenharmony_ci void OnCaptureStarted(const int32_t captureID) const 1981c1b0f19Sopenharmony_ci { 1991c1b0f19Sopenharmony_ci DHLOGI("DemoDCameraPhotoCallback::OnCaptureStarted captureID: %{public}d", captureID); 2001c1b0f19Sopenharmony_ci } 2011c1b0f19Sopenharmony_ci 2021c1b0f19Sopenharmony_ci void OnCaptureStarted(const int32_t captureID, uint32_t exposureTime) const 2031c1b0f19Sopenharmony_ci { 2041c1b0f19Sopenharmony_ci DHLOGI("DemoDCameraPhotoCallback::OnCaptureStarted captureID: %{public}d, exposureTime: %{public}u", 2051c1b0f19Sopenharmony_ci captureID, exposureTime); 2061c1b0f19Sopenharmony_ci } 2071c1b0f19Sopenharmony_ci 2081c1b0f19Sopenharmony_ci void OnCaptureEnded(const int32_t captureID, int32_t frameCount) const 2091c1b0f19Sopenharmony_ci { 2101c1b0f19Sopenharmony_ci DHLOGI("DemoDCameraPhotoCallback::OnCaptureEnded captureID: %{public}d frameCount: %{public}d", 2111c1b0f19Sopenharmony_ci captureID, frameCount); 2121c1b0f19Sopenharmony_ci } 2131c1b0f19Sopenharmony_ci 2141c1b0f19Sopenharmony_ci void OnFrameShutter(const int32_t captureId, const uint64_t timestamp) const 2151c1b0f19Sopenharmony_ci { 2161c1b0f19Sopenharmony_ci DHLOGI("DemoDCameraPhotoCallback::OnFrameShutter captureID: %{public}d timestamp: %{public}" PRIu64, 2171c1b0f19Sopenharmony_ci captureId, timestamp); 2181c1b0f19Sopenharmony_ci } 2191c1b0f19Sopenharmony_ci 2201c1b0f19Sopenharmony_ci void OnFrameShutterEnd(const int32_t captureId, const uint64_t timestamp) const 2211c1b0f19Sopenharmony_ci { 2221c1b0f19Sopenharmony_ci DHLOGI("DemoDCameraPhotoCallback::OnFrameShutterEnd captureID: %{public}d timestamp: %{public}" PRIu64, 2231c1b0f19Sopenharmony_ci captureId, timestamp); 2241c1b0f19Sopenharmony_ci } 2251c1b0f19Sopenharmony_ci 2261c1b0f19Sopenharmony_ci void OnCaptureReady(const int32_t captureId, const uint64_t timestamp) const 2271c1b0f19Sopenharmony_ci { 2281c1b0f19Sopenharmony_ci DHLOGI("DemoDCameraPhotoCallback::OnFrameShutterEnd captureID: %{public}d timestamp: %{public}" PRIu64, 2291c1b0f19Sopenharmony_ci captureId, timestamp); 2301c1b0f19Sopenharmony_ci } 2311c1b0f19Sopenharmony_ci 2321c1b0f19Sopenharmony_ci void OnEstimatedCaptureDuration(const int32_t duration) const 2331c1b0f19Sopenharmony_ci { 2341c1b0f19Sopenharmony_ci DHLOGI("DemoDCameraPhotoCallback::OnEstimatedCaptureDuration duration: %{public}d", duration); 2351c1b0f19Sopenharmony_ci } 2361c1b0f19Sopenharmony_ci 2371c1b0f19Sopenharmony_ci void OnCaptureError(const int32_t captureId, const int32_t errorCode) const 2381c1b0f19Sopenharmony_ci { 2391c1b0f19Sopenharmony_ci DHLOGI("DemoDCameraPhotoCallback::OnCaptureError captureID: %{public}d errorCode: %{public}d", 2401c1b0f19Sopenharmony_ci captureId, errorCode); 2411c1b0f19Sopenharmony_ci } 2421c1b0f19Sopenharmony_ci}; 2431c1b0f19Sopenharmony_ci 2441c1b0f19Sopenharmony_ciclass DemoDCameraPreviewCallback : public CameraStandard::PreviewStateCallback { 2451c1b0f19Sopenharmony_cipublic: 2461c1b0f19Sopenharmony_ci void OnFrameStarted() const 2471c1b0f19Sopenharmony_ci { 2481c1b0f19Sopenharmony_ci DHLOGI("DemoDCameraPreviewCallback::OnFrameStarted."); 2491c1b0f19Sopenharmony_ci } 2501c1b0f19Sopenharmony_ci 2511c1b0f19Sopenharmony_ci void OnFrameEnded(const int32_t frameCount) const 2521c1b0f19Sopenharmony_ci { 2531c1b0f19Sopenharmony_ci DHLOGI("DemoDCameraPreviewCallback::OnFrameEnded frameCount: %{public}d", frameCount); 2541c1b0f19Sopenharmony_ci } 2551c1b0f19Sopenharmony_ci 2561c1b0f19Sopenharmony_ci void OnError(const int32_t errorCode) const 2571c1b0f19Sopenharmony_ci { 2581c1b0f19Sopenharmony_ci DHLOGI("DemoDCameraPreviewCallback::OnError errorCode: %{public}d", errorCode); 2591c1b0f19Sopenharmony_ci } 2601c1b0f19Sopenharmony_ci 2611c1b0f19Sopenharmony_ci void OnSketchStatusDataChanged(const CameraStandard::SketchStatusData& statusData) const 2621c1b0f19Sopenharmony_ci { 2631c1b0f19Sopenharmony_ci DHLOGI("DemoDCameraPreviewCallback::OnSketchStatusDataChanged."); 2641c1b0f19Sopenharmony_ci } 2651c1b0f19Sopenharmony_ci}; 2661c1b0f19Sopenharmony_ci 2671c1b0f19Sopenharmony_ciclass DemoDCameraVideoCallback : public CameraStandard::VideoStateCallback { 2681c1b0f19Sopenharmony_cipublic: 2691c1b0f19Sopenharmony_ci void OnFrameStarted() const 2701c1b0f19Sopenharmony_ci { 2711c1b0f19Sopenharmony_ci DHLOGI("DemoDCameraVideoCallback::OnFrameStarted."); 2721c1b0f19Sopenharmony_ci } 2731c1b0f19Sopenharmony_ci 2741c1b0f19Sopenharmony_ci void OnFrameEnded(const int32_t frameCount) const 2751c1b0f19Sopenharmony_ci { 2761c1b0f19Sopenharmony_ci DHLOGI("DemoDCameraVideoCallback::OnFrameEnded frameCount: %{public}d", frameCount); 2771c1b0f19Sopenharmony_ci } 2781c1b0f19Sopenharmony_ci 2791c1b0f19Sopenharmony_ci void OnError(const int32_t errorCode) const 2801c1b0f19Sopenharmony_ci { 2811c1b0f19Sopenharmony_ci DHLOGI("DemoDCameraVideoCallback::OnError errorCode: %{public}d", errorCode); 2821c1b0f19Sopenharmony_ci } 2831c1b0f19Sopenharmony_ci}; 2841c1b0f19Sopenharmony_ci 2851c1b0f19Sopenharmony_ciclass DemoDCameraInputCallback : public CameraStandard::ErrorCallback { 2861c1b0f19Sopenharmony_cipublic: 2871c1b0f19Sopenharmony_ci void OnError(const int32_t errorType, const int32_t errorMsg) const 2881c1b0f19Sopenharmony_ci { 2891c1b0f19Sopenharmony_ci DHLOGI("DemoDCameraInputCallback::OnError errorType: %{public}d errorMsg: %{public}d", errorType, errorMsg); 2901c1b0f19Sopenharmony_ci } 2911c1b0f19Sopenharmony_ci}; 2921c1b0f19Sopenharmony_ci 2931c1b0f19Sopenharmony_ciclass DemoDCameraManagerCallback : public CameraStandard::CameraManagerCallback { 2941c1b0f19Sopenharmony_cipublic: 2951c1b0f19Sopenharmony_ci void OnCameraStatusChanged(const CameraStandard::CameraStatusInfo &cameraStatusInfo) const 2961c1b0f19Sopenharmony_ci { 2971c1b0f19Sopenharmony_ci DHLOGI("DemoDCameraManagerCallback::OnCameraStatusChanged cameraStatus: %{public}d", 2981c1b0f19Sopenharmony_ci cameraStatusInfo.cameraStatus); 2991c1b0f19Sopenharmony_ci } 3001c1b0f19Sopenharmony_ci 3011c1b0f19Sopenharmony_ci void OnFlashlightStatusChanged(const std::string &cameraID, 3021c1b0f19Sopenharmony_ci const CameraStandard::FlashStatus flashStatus) const 3031c1b0f19Sopenharmony_ci { 3041c1b0f19Sopenharmony_ci DHLOGI("DemoDCameraManagerCallback::OnFlashlightStatusChanged cameraID: %{public}s, flashStatus: %{public}d", 3051c1b0f19Sopenharmony_ci GetAnonyString(cameraID).c_str(), flashStatus); 3061c1b0f19Sopenharmony_ci } 3071c1b0f19Sopenharmony_ci}; 3081c1b0f19Sopenharmony_ci 3091c1b0f19Sopenharmony_ciclass DemoDCameraSessionCallback : public CameraStandard::SessionCallback, public CameraStandard::FocusCallback { 3101c1b0f19Sopenharmony_cipublic: 3111c1b0f19Sopenharmony_ci void OnError(int32_t errorCode) 3121c1b0f19Sopenharmony_ci { 3131c1b0f19Sopenharmony_ci DHLOGI("DemoDCameraSessionCallback::OnError errorCode: %{public}d", errorCode); 3141c1b0f19Sopenharmony_ci } 3151c1b0f19Sopenharmony_ci 3161c1b0f19Sopenharmony_ci void OnFocusState(FocusState state) 3171c1b0f19Sopenharmony_ci { 3181c1b0f19Sopenharmony_ci DHLOGI("DemoDCameraSessionCallback::OnFocusState state: %{public}d", state); 3191c1b0f19Sopenharmony_ci } 3201c1b0f19Sopenharmony_ci}; 3211c1b0f19Sopenharmony_ci 3221c1b0f19Sopenharmony_ciint32_t InitCameraStandard(OHOS::CameraStandard::CameraPosition position); 3231c1b0f19Sopenharmony_civoid InitCaptureInfo(int32_t width, int32_t height); 3241c1b0f19Sopenharmony_civoid InitPhotoOutput(void); 3251c1b0f19Sopenharmony_civoid InitPreviewOutput(void); 3261c1b0f19Sopenharmony_civoid InitVideoOutput(void); 3271c1b0f19Sopenharmony_civoid ConfigCaptureSession(void); 3281c1b0f19Sopenharmony_civoid ReleaseResource(void); 3291c1b0f19Sopenharmony_ciint32_t Capture(); 3301c1b0f19Sopenharmony_ciint32_t Video(); 3311c1b0f19Sopenharmony_cistd::shared_ptr<OHOS::CameraStandard::PhotoCaptureSetting> ConfigPhotoCaptureSetting(); 3321c1b0f19Sopenharmony_civoid ConfigFocusFlashAndExposure(bool isVideo); 3331c1b0f19Sopenharmony_ciint32_t GetPreviewProfiles(std::vector<OHOS::CameraStandard::Size> &previewResolution); 3341c1b0f19Sopenharmony_cibool IsValid(const OHOS::CameraStandard::Size& size); 3351c1b0f19Sopenharmony_ci} // namespace DistributedHardware 3361c1b0f19Sopenharmony_ci} // namespace OHOS 3371c1b0f19Sopenharmony_ci#endif // OHOS_DCAMERA_CLIENT_DEMO_H