1 /* 2 * Copyright (c) 2021-2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 #ifndef CAMERA_TEST_COMMON_H 16 #define CAMERA_TEST_COMMON_H 17 18 #include "camera_output_capability.h" 19 #include "input/camera_manager.h" 20 21 namespace OHOS { 22 namespace CameraStandard { 23 class PictureIntf; 24 enum class VideoSaveMode { 25 CREATE = 0, 26 APPEND, 27 CLOSE 28 }; 29 30 enum class SurfaceType { 31 INVALID = 0, 32 PREVIEW, 33 SECOND_PREVIEW, 34 PHOTO, 35 VIDEO, 36 SKETCH 37 }; 38 39 enum HostDeviceType { 40 /** 41 * Indicates an unknown device type. 42 */ 43 UNKNOWN = 0x00, 44 /** 45 * Indicates a smart phone. 46 */ 47 PHONE = 0x0E, 48 /** 49 * Indicates a smart pad. 50 */ 51 TABLET = 0x11, 52 }; 53 54 55 class TestUtils { 56 public: 57 static const std::int32_t FILE_PERMISSIONS_FLAG = 00766; 58 static const std::int32_t PREVIEW_SKIP_FRAMES = 10; 59 60 static camera_format_t GetCameraMetadataFormat(CameraFormat format); 61 static uint64_t GetCurrentLocalTimeStamp(); 62 static int32_t SaveYUV(const char* buffer, int32_t size, SurfaceType type); 63 static int32_t SaveJpeg(const char* buffer, int32_t size); 64 static bool IsNumber(const char number[]); 65 static int32_t SaveVideoFile(const char* buffer, int32_t size, VideoSaveMode operationMode, int32_t &fd); 66 }; 67 68 class TestCameraMngerCallback : public CameraManagerCallback { 69 public: 70 explicit TestCameraMngerCallback(const char* testName); 71 virtual ~TestCameraMngerCallback() = default; 72 void OnCameraStatusChanged(const CameraStatusInfo &cameraStatusInfo) const override; 73 void OnFlashlightStatusChanged(const std::string &cameraID, 74 const FlashStatus flashStatus) const override; 75 76 private: 77 const char* testName_; 78 }; 79 80 class TestDeviceCallback : public ErrorCallback { 81 public: 82 explicit TestDeviceCallback(const char* testName); 83 virtual ~TestDeviceCallback() = default; 84 void OnError(const int32_t errorType, const int32_t errorMsg) const override; 85 86 private: 87 const char* testName_; 88 }; 89 90 class TestOnResultCallback : public ResultCallback { 91 public: 92 explicit TestOnResultCallback(const char* testName); 93 virtual ~TestOnResultCallback() = default; 94 void OnResult(const uint64_t timestamp, const std::shared_ptr<OHOS::Camera::CameraMetadata> &result) const; 95 96 private: 97 const char* testName_; 98 }; 99 100 class TestPhotoOutputCallback : public PhotoStateCallback { 101 public: 102 explicit TestPhotoOutputCallback(const char* testName); 103 virtual ~TestPhotoOutputCallback() = default; 104 void OnCaptureStarted(const int32_t captureID) const override; 105 void OnCaptureStarted(const int32_t captureID, uint32_t exposureTime) const override; 106 void OnCaptureEnded(const int32_t captureID, const int32_t frameCount) const override; 107 void OnFrameShutter(const int32_t captureId, const uint64_t timestamp) const override; 108 void OnCaptureError(const int32_t captureId, const int32_t errorCode) const override; 109 void OnFrameShutterEnd(const int32_t captureId, const uint64_t timestamp) const override; 110 void OnCaptureReady(const int32_t captureId, const uint64_t timestamp) const override; 111 void OnEstimatedCaptureDuration(const int32_t duration) const override; 112 void OnOfflineDeliveryFinished(const int32_t captureId) const override; 113 114 private: 115 const char* testName_; 116 }; 117 118 class TestPreviewOutputCallback : public PreviewStateCallback { 119 public: 120 explicit TestPreviewOutputCallback(const char* testName); 121 virtual ~TestPreviewOutputCallback() = default; 122 void OnFrameStarted() const override; 123 void OnFrameEnded(const int32_t frameCount) const override; 124 void OnError(const int32_t errorCode) const override; 125 void OnSketchStatusDataChanged(const SketchStatusData& statusData) const override; 126 127 private: 128 const char* testName_; 129 }; 130 131 class TestVideoOutputCallback : public VideoStateCallback { 132 public: 133 explicit TestVideoOutputCallback(const char* testName); 134 virtual ~TestVideoOutputCallback() = default; 135 void OnFrameStarted() const override; 136 void OnFrameEnded(const int32_t frameCount) const override; 137 void OnError(const int32_t errorCode) const override; 138 void OnDeferredVideoEnhancementInfo(const CaptureEndedInfoExt info) const override; 139 140 private: 141 const char* testName_; 142 }; 143 144 class TestMetadataOutputObjectCallback : public MetadataObjectCallback { 145 public: 146 explicit TestMetadataOutputObjectCallback(const char* testName); 147 virtual ~TestMetadataOutputObjectCallback() = default; 148 void OnMetadataObjectsAvailable(std::vector<sptr<MetadataObject>> metaObjects) const override; 149 private: 150 const char* testName_; 151 }; 152 153 class TestDeferredPhotoProcSessionCallback : public IDeferredPhotoProcSessionCallback { 154 public: 155 void OnProcessImageDone(const std::string& imageId, const uint8_t* addr, const long bytes, 156 uint32_t cloudImageEnhanceFlag); 157 void OnProcessImageDone(const std::string &imageId, std::shared_ptr<PictureIntf> picture, 158 uint32_t cloudImageEnhanceFlag); 159 void OnDeliveryLowQualityImage(const std::string &imageId, std::shared_ptr<PictureIntf> picture); 160 void OnError(const std::string& imageId, const DpsErrorCode errorCode); 161 void OnStateChanged(const DpsStatusCode status); 162 }; 163 164 class TestDeferredVideoProcSessionCallback : public IDeferredVideoProcSessionCallback { 165 public: 166 void OnProcessVideoDone(const std::string& videoId, const sptr<IPCFileDescriptor> ipcFd); 167 void OnError(const std::string& videoId, const DpsErrorCode errorCode); 168 void OnStateChanged(const DpsStatusCode status); 169 }; 170 171 class SurfaceListener : public IBufferConsumerListener { 172 public: 173 SurfaceListener(const char* testName, SurfaceType surfaceType, int32_t &fd, sptr<IConsumerSurface> surface); 174 virtual ~SurfaceListener() = default; 175 void OnBufferAvailable() override; 176 177 private: 178 const char* testName_; 179 SurfaceType surfaceType_; 180 int32_t &fd_; 181 sptr<IConsumerSurface> surface_; 182 int32_t previewIndex_ = 0; 183 int32_t secondPreviewIndex_ = 0; 184 }; 185 186 std::shared_ptr<PictureIntf> GetPictureIntfInstance(); 187 } // namespace CameraStandard 188 } // namespace OHOS 189 #endif // CAMERA_TEST_COMMON_H 190 191