• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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