Tizen 2.1 base
[sdk/ide/native-sample.git] / samples / native / cpp / Sample / Tizen C++ / MediaApp / MediaApp / project / src / Player / VideoRecorderPlayerForm.h
1 //
2 // Tizen C++ SDK
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Flora License, Version 1.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //     http://www.tizenopensource.org/license
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an AS IS BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17
18 #ifndef _VIDEO_RECORDER_PLAYER_FORM_H_
19 #define _VIDEO_RECORDER_PLAYER_FORM_H_
20
21 #include <FBase.h>
22 #include <FUi.h>
23 #include <FMedia.h>
24 #include <FUixSensorManager.h>
25 #include <FUixISensorEventListener.h>
26 #include "MultiForm.h"
27
28
29 using namespace Osp::Media;
30 using namespace Osp::Ui::Controls;
31 using namespace Osp::Base::Collection;
32 using namespace Osp::Graphics;
33
34 class VideoRecorderPlayerForm
35         : public MultiForm
36         , public ICameraEventListener
37         , public Osp::Media::IPlayerEventListener
38         , public Osp::Ui::ITouchEventListener
39         , public Osp::Media::IVideoRecorderEventListener
40         , public Osp::Base::Runtime::ITimerEventListener
41 {
42 // Construction
43 public:
44         VideoRecorderPlayerForm(void);
45         virtual ~VideoRecorderPlayerForm(void);
46         bool Initialize(void);
47
48 // Implementation
49 protected:
50         virtual result OnInitializing(void);
51         virtual result OnTerminating(void);
52         virtual result OnActivate(void* activateParam);
53         virtual void OnCameraAutoFocused(bool completeCondition);
54         virtual void OnCameraCaptured(Osp::Base::ByteBuffer& capturedData, result r);
55         virtual void OnCameraErrorOccurred(CameraErrorReason r);
56         virtual void OnCameraPreviewed(Osp::Base::ByteBuffer& previewedData, result r);
57
58         virtual void OnTimerExpired(Osp::Base::Runtime::Timer& timer);
59
60         virtual void OnVideoRecorderCanceled(result r);
61         virtual void OnVideoRecorderClosed(result r);
62         virtual void OnVideoRecorderEndReached(Osp::Media::RecordingEndCondition endCondition);
63         virtual void OnVideoRecorderErrorOccurred(Osp::Media::RecorderErrorReason r);
64         virtual void OnVideoRecorderPaused(result r);
65         virtual void OnVideoRecorderStarted(result r);
66         virtual void OnVideoRecorderStopped(result r);
67         virtual void OnUserEventReceivedN(RequestId requestId, Osp::Base::Collection::IList* pArgs);
68
69         virtual void OnPlayerOpened(result r);
70         virtual void OnPlayerEndOfClip(void);
71         virtual void OnPlayerBuffering(int percent);
72         virtual void OnPlayerErrorOccurred(Osp::Media::PlayerErrorReason r);
73         virtual void OnPlayerInterrupted(void);
74         virtual void OnPlayerReleased(void);
75         virtual void OnPlayerSeekCompleted(result r);
76
77         virtual void OnActionPerformed(const Osp::Ui::Control& source, int actionId);
78         virtual void OnBatteryLevelChanged(Osp::System::BatteryLevel batteryLevel);
79         virtual void OnBackground(void);
80         virtual void OnForeground(void);
81
82         result EnableFooterItem(int actionId, bool enable);
83
84         virtual void OnTouchDoublePressed(const Osp::Ui::Control& source, const Osp::Graphics::Point& currentPosition, const Osp::Ui::TouchEventInfo& touchInfo){}
85         virtual void OnTouchFocusIn(const Osp::Ui::Control& source, const Osp::Graphics::Point& currentPosition, const Osp::Ui::TouchEventInfo& touchInfo){}
86         virtual void OnTouchFocusOut(const Osp::Ui::Control& source, const Osp::Graphics::Point& currentPosition, const Osp::Ui::TouchEventInfo& touchInfo){}
87         virtual void OnTouchLongPressed(const Osp::Ui::Control& source, const Osp::Graphics::Point& currentPosition, const Osp::Ui::TouchEventInfo& touchInfo){}
88         virtual void OnTouchMoved(const Osp::Ui::Control& source, const Osp::Graphics::Point& currentPosition, const Osp::Ui::TouchEventInfo& touchInfo){}
89         virtual void OnTouchPressed(const Osp::Ui::Control& source, const Osp::Graphics::Point& currentPosition, const Osp::Ui::TouchEventInfo& touchInfo){}
90         virtual void OnTouchReleased(const Osp::Ui::Control& source, const Osp::Graphics::Point& currentPosition, const Osp::Ui::TouchEventInfo& touchInfo){}
91
92         result CreateOverlayRegionForCamera(void);
93         result CreateOverlayRegionForPlayer(void);
94         result CreateCamera(void);
95         result CreatePlayer(void);
96         result CreateVideoRecorder(void);
97         result StartCamera(void);
98         result StopCamera(void);
99         result StartRecording(void);
100         result StartVideoRecorder(void);
101         result StopVideoRecorder(void);
102         result StartPlayer(void);
103         result StopPlayer(void);
104
105         void GetAudioCodecFormat(String& audioCodecType, CodecType& audioCodec);
106         void GetVideoCodecFormat(String& videoCodecType, CodecType& videoCodec);
107         void GetFileFormat(String& fileFormatType, MediaContainerType& fileformat);
108
109         void LaunchMediaPlayer(bool flag);
110
111         void FreeVideoRecorderResource(void);
112         void FreeCameraResource(void);
113         void FreePlayerResource(void);
114         void GetCameraToForeground(void);
115         void GetVideoRecorderToForeground(void);
116         void GetPlayerToForeground(void);
117         void SendVideoRecorderToBackground(void);
118         void SendCameraToBackground(void);
119         void SendPlayerToBackground(void);
120         void PlayerPause();
121
122         result ShowPopUp(Popup* pPopUp);
123         void HidePopUp(Popup* pPopUp);
124
125         void DeletePopup(Popup** pPopup);
126         result CreatePopUp(Popup** pPopupCtrl, String title, Dimension dimension, bool hasTitle);
127
128         void ShowError(result r, const char* pMethod, const char* pSrcfileName, int lineNo);
129         void FreeResources(void);
130
131         void OnFormBackRequested(Osp::Ui::Controls::Form& source);
132 private:
133         enum
134         {
135                 ID_BUTTON_BACK = 100,
136                 ID_BUTTON_START,
137                 ID_BUTTON_STOP,
138         };
139
140         static const int START_RECORDING = 100;
141         static const int STOP_RECORDING = 101;
142         static const int RECORDER_ON_STOP = 102;
143         static const int RECORDER_ON_CLOSE = 103;
144
145 private:
146         Osp::Graphics::BufferInfo __bufferInfoCamera;
147         Camera* __pCamera;
148         Player* __pPlayer;
149         OverlayRegion* __pCameraOverlay;
150         OverlayRegion* __pPlayerOverlay;
151         bool __batteryLevelFlag;
152         bool __backGroundFlag;
153         bool __cameraErrorFlag;
154         VideoRecorder* __pVideoRecorder;
155         Osp::Base::String __filePath;
156         Osp::Base::Runtime::Timer* __pTimer;
157         AppConfig* __pConfig;
158         Progress* __pProgress;
159         int __maxRecordingTime;
160
161 };
162
163
164 #endif // _VIDEO_RECORDER_PLAYER_FORM_H_