1 #ifndef DALI_VIDEO_PLAYER_PLUGIN_H
2 #define DALI_VIDEO_PLAYER_PLUGIN_H
5 * Copyright (c) 2019 Samsung Electronics Co., Ltd.
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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.
22 #include <dali/public-api/signals/dali-signal.h>
23 #include <dali/public-api/math/rect.h>
24 #include <dali/public-api/actors/actor.h>
30 typedef Dali::Rect< int > DisplayArea;
33 * @brief VideoPlayerPlugin is an abstract interface, used by dali-adaptor to access video player plugin.
34 * A concrete implementation must be created for each platform and provided as dynamic library.
37 class VideoPlayerPlugin
41 typedef Signal< void () > VideoPlayerSignalType;
44 * @brief Video display rotation option
46 * @remarks The option is needed only for window surface rendering target
50 ROTATION_NONE, ///< Display isn't rotated. @SINCE_1_1.38
51 ROTATION_90, ///< Display is rotated 90 degree. @SINCE_1_1.38
52 ROTATION_180, ///< Display is rotated 180 degree. @SINCE_1_1.38
53 ROTATION_270 ///< Display is rotated 270 degree. @SINCE_1_1.38
57 * @brief Enumeration for video codec type
61 DEFAULT, ///< Codec which has higher priority as default. Platform selects it. Usually the H/W codec has higher priority than S/W codec if it exist.
67 * @brief The values of this enum determine how the video should be display mode to the view
73 LETTER_BOX = 0, /**< Letter box */
74 ORIGIN_SIZE, /**< Origin size */
75 FULL_SCREEN, /**< Full-screen */
76 CROPPED_FULL, /**< Cropped full-screen */
77 ORIGIN_OR_LETTER, /**< Origin size (if surface size is larger than video size(width/height)) or Letter box (if video size(width/height) is larger than surface size) */
78 DST_ROI /**< Region of Interest */
92 virtual ~VideoPlayerPlugin(){}
95 * @brief Sets a URL of the video file to play.
98 * @param [in] url The url of video file
100 virtual void SetUrl( const std::string& url ) = 0;
103 * @brief Returns the URL of the video file.
105 * @return Url of string type
107 virtual std::string GetUrl() = 0;
110 * @brief Sets the player looping status.
113 * @param [in] looping The new looping status: true or false
115 virtual void SetLooping(bool looping) = 0;
118 * @brief Returns the player looping status.
121 * @return True if player is looping, false otherwise.
123 virtual bool IsLooping() = 0;
126 * @brief Starts the video playback.
129 virtual void Play() = 0;
132 * @brief Pauses the video playback.
135 virtual void Pause() = 0;
138 * @brief Stops the video playback.
141 virtual void Stop() = 0;
144 * @brief Sets the player mute status.
146 * @param[in] mute The new mute status, true is mute.
148 virtual void SetMute( bool mute ) = 0;
151 * @brief Returns the player mute status.
153 * @return True if player is mute.
155 virtual bool IsMuted() = 0;
158 * @brief Sets the player volume.
160 * @param[in] left The left volume scalar
161 * @param[in] right The right volume scalar
163 virtual void SetVolume( float left, float right ) = 0;
166 * @brief Gets current volume factor.
168 * @param[out] left The current left volume scalar
169 * @param[out] right The current right volume scalar
171 virtual void GetVolume( float& left, float& right ) = 0;
174 * @brief Sets video rendering target.
176 * @param[in] target The target for video rendering, window surface or native image source
178 virtual void SetRenderingTarget( Any target ) = 0;
181 * @brief Sets the position for playback.
184 * @param[in] millisecond The position for playback
186 virtual void SetPlayPosition( int millisecond ) = 0;
189 * @brief Returns the current position in milliseconds.
192 * @return The current position of playback
194 virtual int GetPlayPosition() = 0;
197 * @brief Sets the area of video display.
199 * param[in] area The left-top position and size of the video display area
201 virtual void SetDisplayArea( DisplayArea area ) = 0;
204 * @brief Sets video display rotation
206 * @param[in] rotation The rotation of display
208 virtual void SetDisplayRotation( Dali::VideoPlayerPlugin::DisplayRotation rotation ) = 0;
211 * @brief Returns rotation of current video display
213 * @return The rotation of current display
215 virtual Dali::VideoPlayerPlugin::DisplayRotation GetDisplayRotation() = 0;
218 * @brief Connect to this signal to be notified when a video playback have finished.
221 * @return A signal object to connect with.
223 virtual VideoPlayerSignalType& FinishedSignal() = 0;
226 * @brief Seeks forward by the specified number of milliseconds.
229 * @param[in] millisecond The position for forward playback
231 virtual void Forward( int millisecond ) = 0;
234 * @brief Seeks backward by the specified number of milliseconds.
237 * @param[in] millisecond The position for backward playback
239 virtual void Backward( int millisecond ) = 0;
242 * @brief Checks whether the video texture is supported
243 * @return True if supported, otherwise false.
245 virtual bool IsVideoTextureSupported() = 0;
248 * @brief Sets codec type
249 * @param[in] type The CodecType
251 virtual void SetCodecType( VideoPlayerPlugin::CodecType type ) = 0;
254 * @brief Gets codec type
257 virtual VideoPlayerPlugin::CodecType GetCodecType() const = 0;
260 * @brief Sets the display mode for playback.
261 * @param[in] mode of playback
263 virtual void SetDisplayMode( VideoPlayerPlugin::DisplayMode::Type mode ) = 0;
266 * @brief Returns the current display mode.
267 * @return The current display mode of playback
269 virtual VideoPlayerPlugin::DisplayMode::Type GetDisplayMode() const = 0;
272 * @brief Returns the current internal media player.
273 * @return The current internal media player of video player
275 virtual Any GetMediaPlayer() = 0;
278 * @brief calls synchronization function in window system
279 * This function is called, the synchronization is started between UI(transparent hole) and video player.
281 virtual void StartSynchronization() = 0;
284 * @brief calls desynchronization function in window system
285 * This function is called, the synchronization is finished between UI(transparent hole) and video player.
287 virtual void FinishSynchronization() = 0;
293 #endif // DALI_VIDEO_PLAYER_PLUGIN_H