4bbcc0424b583149dcba60510d9aa0253be8ae86
[platform/core/uifw/dali-adaptor.git] / adaptors / devel-api / adaptor-framework / video-player-plugin.h
1 #ifndef __DALI_VIDEO_PLAYER_PLUGIN_H__
2 #define __DALI_VIDEO_PLAYER_PLUGIN_H__
3
4 /*
5  * Copyright (c) 2016 Samsung Electronics Co., Ltd.
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  */
20
21 // EXTERNAL INCLUDES
22 #include <dali/public-api/signals/dali-signal.h>
23 #include <dali/public-api/math/rect.h>
24
25 namespace Dali
26 {
27
28 class Any;
29 typedef Dali::Rect< int > DisplayArea;
30
31 /**
32  * @brief VideoPlayerPlugin is an abstract interface, used by dali-adaptor to access video player plugin.
33  * A concrete implementation must be created for each platform and provided as dynamic library.
34  * @SINCE_1_1.38
35  */
36 class VideoPlayerPlugin
37 {
38 public:
39
40   typedef Signal< void () > VideoPlayerSignalType;
41
42   /**
43    * @brief Video display rotation option
44    * @SINCE_1_1.38
45    * @remarks The option is needed only for window surface rendering target
46    */
47   enum DisplayRotation
48   {
49     ROTATION_NONE,   ///< Display isn't rotated. @SINCE_1_1.38
50     ROTATION_90,     ///< Display is rotated 90 degree. @SINCE_1_1.38
51     ROTATION_180,    ///< Display is rotated 180 degree. @SINCE_1_1.38
52     ROTATION_270     ///< Display is rotated 270 degree. @SINCE_1_1.38
53   };
54
55   /**
56    * @brief Constructor.
57    * @SINCE_1_1.38
58    */
59   VideoPlayerPlugin(){}
60
61   /**
62    * @brief Destructor.
63    * @SINCE_1_1.38
64    */
65   virtual ~VideoPlayerPlugin(){}
66
67   /**
68    * @brief Sets a URL of the video file to play.
69    *
70    * @SINCE_1_1.38
71    * @param [in] url The url of video file
72    */
73   virtual void SetUrl( const std::string& url ) = 0;
74
75   /**
76    * @brief Returns the URL of the video file.
77    * @SINCE_1_1.38
78    * @return Url of string type
79    */
80   virtual std::string GetUrl() = 0;
81
82   /**
83    * @brief Sets the player looping status.
84    * @SINCE_1_1.38
85    *
86    * @param [in] looping The new looping status: true or false
87    */
88   virtual void SetLooping(bool looping) = 0;
89
90   /**
91    * @brief Returns the player looping status.
92    * @SINCE_1_1.38
93    *
94    * @return True if player is looping, false otherwise.
95    */
96   virtual bool IsLooping() = 0;
97
98   /**
99    * @brief Starts the video playback.
100    * @SINCE_1_1.38
101    */
102   virtual void Play() = 0;
103
104   /**
105    * @brief Pauses the video playback.
106    * @SINCE_1_1.38
107    */
108   virtual void Pause() = 0;
109
110   /**
111    * @brief Stops the video playback.
112    * @SINCE_1_1.38
113    */
114   virtual void Stop() = 0;
115
116   /**
117    * @brief Sets the player mute status.
118    * @SINCE_1_1.38
119    * @param[in] mute The new mute status, true is mute.
120    */
121   virtual void SetMute( bool mute ) = 0;
122
123   /**
124    * @brief Returns the player mute status.
125    * @SINCE_1_1.38
126    * @return True if player is mute.
127    */
128   virtual bool IsMuted() = 0;
129
130   /**
131    * @brief Sets the player volume.
132    * @SINCE_1_1.38
133    * @param[in] left The left volume scalar
134    * @param[in] right The right volume scalar
135    */
136   virtual void SetVolume( float left, float right ) = 0;
137
138   /**
139    * @brief Gets current volume factor.
140    * @SINCE_1_1.38
141    * @param[out] left The current left volume scalar
142    * @param[out] right The current right volume scalar
143    */
144   virtual void GetVolume( float& left, float& right ) = 0;
145
146   /**
147    * @brief Sets video rendering target.
148    * @SINCE_1_1.38
149    * @param[in] target The target for video rendering, window surface or native image source
150    */
151   virtual void SetRenderingTarget( Any target ) = 0;
152
153   /**
154    * @brief Sets the position for playback.
155    * @SINCE_1_1.38
156    *
157    * @param[in] millisecond The position for playback
158    */
159   virtual void SetPlayPosition( int millisecond ) = 0;
160
161   /**
162    * @brief Returns the current position in milliseconds.
163    * @SINCE_1_1.38
164    *
165    * @return The current position of playback
166    */
167   virtual int GetPlayPosition() = 0;
168
169   /**
170    * @brief Sets the area of video display.
171    * @SINCE_1_2.46
172    * param[in] area The left-top position and size of the video display area
173    */
174   virtual void SetDisplayArea( DisplayArea area ) = 0;
175
176   /**
177    * @brief Sets video display rotation
178    * @SINCE_1_1.38
179    * @param[in] rotation The rotation of display
180    */
181   virtual void SetDisplayRotation( Dali::VideoPlayerPlugin::DisplayRotation rotation ) = 0;
182
183   /**
184    * @brief Returns rotation of current video display
185    * @SINCE_1_1.38
186    * @return The rotation of current display
187    */
188   virtual Dali::VideoPlayerPlugin::DisplayRotation GetDisplayRotation() = 0;
189
190   /**
191    * @brief Connect to this signal to be notified when a video playback have finished.
192    *
193    * @SINCE_1_1.38
194    * @return A signal object to connect with.
195    */
196   virtual VideoPlayerSignalType& FinishedSignal() = 0;
197
198   /**
199    * @brief Seeks forward by the specified number of milliseconds.
200    *
201    * @SINCE_1_2.46
202    * @param[in] millisecond The position for forward playback
203    */
204   virtual void Forward( int millisecond ) = 0;
205
206   /**
207    * @brief Seeks backward by the specified number of milliseconds.
208    *
209    * @SINCE_1_2.46
210    * @param[in] millisecond The position for backward playback
211    */
212   virtual void Backward( int millisecond ) = 0;
213
214 };
215
216 } // namespace Dali;
217
218 #endif