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