1 /* 2 * Copyright (c) 2020 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 16 #ifndef __CAMERA_MANAGER_H__ 17 #define __CAMERA_MANAGER_H__ 18 19 #include <stdio.h> 20 #include <sys/time.h> 21 #include <algorithm> 22 #include <fstream> 23 #include <iostream> 24 #include <sstream> 25 #include <errno.h> 26 27 #include "camera_kit.h" 28 #include "recorder.h" 29 30 using namespace std; 31 using namespace OHOS; 32 using namespace OHOS::Media; 33 34 typedef enum { 35 PHOTO_TYPE_NORMAL, 36 PHOTO_TYPE_VIDEO, 37 PHOTO_TYPE_TMP, 38 39 PHOTO_TYPE_NBR 40 }PHOTO_TYPE; 41 42 typedef enum { 43 MEDIA_STATE_IDLE = 0, 44 MEDIA_STATE_START, 45 MEDIA_STATE_PAUSE, 46 MEDIA_STATE_STOP 47 } CAMERA_MEDIA_STATUS; 48 49 class TestFrameStateCallback : public FrameStateCallback { 50 public: TestFrameStateCallback()51 TestFrameStateCallback() : gPhotoType_(0), gIsFinished_(false) {} ~TestFrameStateCallback()52 ~TestFrameStateCallback(){} 53 54 void OnFrameFinished(Camera &camera, FrameConfig &fc, FrameResult &result) override; 55 void SetPhotoType(int type); 56 bool IsFinish(void); 57 void GetVideoName(char *pName, size_t length) const; 58 void InitVideoName(); 59 void InitTimeStamp(); 60 private: 61 int gPhotoType_; 62 bool gIsFinished_; 63 char videoName_[256] = {0}; 64 char timeStamp_[256] = {0}; 65 }; 66 67 class SampleCameraStateMng : public CameraStateCallback { 68 public: 69 SampleCameraStateMng() = delete; SampleCameraStateMng(EventHandler & eventHdlr)70 SampleCameraStateMng(EventHandler &eventHdlr) : eventHdlr_(eventHdlr) 71 { 72 gRecordSta_ = 0; 73 gPreviewSta_ = 0; 74 gRecFd_ = -1; 75 cam_ = nullptr; 76 recorder_ = nullptr; 77 fc_ = nullptr; 78 } 79 ~SampleCameraStateMng(); 80 81 void OnCreated(Camera &c) override; OnCreateFailed(const std::string cameraId,int32_t errorCode)82 void OnCreateFailed(const std::string cameraId, int32_t errorCode) override {} OnReleased(Camera & c)83 void OnReleased(Camera &c) override {} 84 void StartRecord(Surface *mSurface); 85 void StartPreview(Surface *surface); 86 void Capture(int type); 87 void SetPause(); 88 void SetResume(Surface *mSurface); 89 void SetStop(int s); 90 bool RecordState(); 91 bool CameraIsReady(); 92 bool IsCaptureOver(void); 93 private: 94 95 int gRecordSta_; 96 int gPreviewSta_; 97 int gRecFd_; 98 EventHandler &eventHdlr_; 99 Camera *cam_; 100 Recorder *recorder_; 101 TestFrameStateCallback fsCb_; 102 FrameConfig *fc_; 103 }; 104 105 class SampleCameraManager { 106 public: SampleCameraManager()107 SampleCameraManager():camId("") 108 { 109 camKit = nullptr; 110 CamStateMng = nullptr; 111 } 112 ~SampleCameraManager(); 113 114 int SampleCameraCreate(); 115 bool SampleCameraExist(void); 116 int SampleCameraStart(Surface *surface); 117 int SampleCameraStop(void); 118 int SampleCameraCaptrue(int type); 119 int SampleCameraStartRecord(Surface *surface); 120 int SampleCameraPauseRecord(void); 121 int SampleCameraResumeRecord(Surface *mSurface); 122 int SampleCameraStopRecord(void); 123 bool SampleCameraGetRecord(void); 124 bool SampleCameraIsReady(void); 125 bool SampleCameraCaptrueIsFinish(void); 126 private: 127 CameraKit *camKit; 128 string camId; 129 SampleCameraStateMng *CamStateMng; 130 EventHandler eventHdlr_; 131 }; 132 133 #endif /* __CAMERA_MANAGER_H__ */ 134 135