]> git.sesse.net Git - vlc/blobdiff - include/vlc/libvlc_media_player.h
libvlc_set_*_input also works on Win32 nowadays
[vlc] / include / vlc / libvlc_media_player.h
index d8c930b940c265f11ed3fe728e9c571fdf2485e8..788197129b97a544ef5be06a4c601e31720d90c6 100644 (file)
@@ -38,10 +38,9 @@ extern "C" {
 /*****************************************************************************
  * Media Player
  *****************************************************************************/
-/** \defgroup libvlc_media_player libvlc_media_player
+/** \defgroup libvlc_media_player LibVLC media player
  * \ingroup libvlc
- * LibVLC Media Player, object that let you play a media
- * in a custom drawable
+ * A LibVLC media player plays one media (usually in a custom drawable).
  * @{
  */
 
@@ -194,18 +193,36 @@ VLC_PUBLIC_API void libvlc_media_player_stop ( libvlc_media_player_t *p_mi );
 /**
  * Set the NSView handler where the media player should render its video output.
  *
- * The object minimal_macosx expects is of kind NSObject and should
- * respect the protocol:
+ * Use the vout called "macosx".
  *
- * @protocol VLCOpenGLVideoViewEmbedding <NSObject>
+ * The drawable is an NSObject that follow the VLCOpenGLVideoViewEmbedding
+ * protocol:
+ *
+ * @begincode
+ * \@protocol VLCOpenGLVideoViewEmbedding <NSObject>
  * - (void)addVoutSubview:(NSView *)view;
  * - (void)removeVoutSubview:(NSView *)view;
- * @end
+ * \@end
+ * @endcode
+ *
+ * Or it can be an NSView object.
+ *
+ * If you want to use it along with Qt4 see the QMacCocoaViewContainer. Then
+ * the following code should work:
+ * @begincode
+ * {
+ *     NSView *video = [[NSView alloc] init];
+ *     QMacCocoaViewContainer *container = new QMacCocoaViewContainer(video, parent);
+ *     libvlc_media_player_set_nsobject(mp, video);
+ *     [video release];
+ * }
+ * @endcode
  *
  * You can find a live example in VLCVideoView in VLCKit.framework.
  *
  * \param p_mi the Media Player
- * \param drawable the NSView handler
+ * \param drawable the drawable that is either an NSView or an object following
+ * the VLCOpenGLVideoViewEmbedding protocol.
  */
 VLC_PUBLIC_API void libvlc_media_player_set_nsobject ( libvlc_media_player_t *p_mi, void * drawable );
 
@@ -409,10 +426,12 @@ VLC_PUBLIC_API void libvlc_media_player_previous_chapter( libvlc_media_player_t
 VLC_PUBLIC_API void libvlc_media_player_next_chapter( libvlc_media_player_t *p_mi );
 
 /**
- * Get movie play rate
+ * Get the requested movie play rate.
+ * @warning Depending on the underlying media, the requested rate may be
+ * different from the real playback rate.
  *
  * \param p_mi the Media Player
- * \return movie play rate, or zero in case of error
+ * \return movie play rate
  */
 VLC_PUBLIC_API float libvlc_media_player_get_rate( libvlc_media_player_t *p_mi );
 
@@ -430,6 +449,7 @@ VLC_PUBLIC_API int libvlc_media_player_set_rate( libvlc_media_player_t *p_mi, fl
  * Get current movie state
  *
  * \param p_mi the Media Player
+ * \return the current state of the media player (playing, paused, ...) \see libvlc_state_t
  */
 VLC_PUBLIC_API libvlc_state_t libvlc_media_player_get_state( libvlc_media_player_t *p_mi );
 
@@ -455,6 +475,7 @@ VLC_PUBLIC_API unsigned libvlc_media_player_has_vout( libvlc_media_player_t *p_m
  * Is this media player seekable?
  *
  * \param p_mi the media player
+ * \return true if the media player can seek
  */
 VLC_PUBLIC_API int libvlc_media_player_is_seekable( libvlc_media_player_t *p_mi );
 
@@ -462,6 +483,7 @@ VLC_PUBLIC_API int libvlc_media_player_is_seekable( libvlc_media_player_t *p_mi
  * Can this media player be paused?
  *
  * \param p_mi the media player
+ * \return true if the media player can pause
  */
 VLC_PUBLIC_API int libvlc_media_player_can_pause( libvlc_media_player_t *p_mi );
 
@@ -482,9 +504,7 @@ VLC_PUBLIC_API void libvlc_media_player_next_frame( libvlc_media_player_t *p_mi
  */
 VLC_PUBLIC_API void libvlc_track_description_release( libvlc_track_description_t *p_track_description );
 
-/** \defgroup libvlc_video libvlc_video
- * \ingroup libvlc_media_player
- * LibVLC Video handling
+/** \defgroup libvlc_video LibVLC video controls
  * @{
  */
 
@@ -499,15 +519,14 @@ VLC_PUBLIC_API void libvlc_track_description_release( libvlc_track_description_t
 VLC_PUBLIC_API void libvlc_toggle_fullscreen( libvlc_media_player_t *p_mi );
 
 /**
- * Enable or disable fullscreen on non-embedded video outputs.
+ * Enable or disable fullscreen.
  *
- * @warning With most window managers, only a top-level windows can switch to
+ * @warning With most window managers, only a top-level windows can be in
  * full-screen mode. Hence, this function will not operate properly if
- * libvlc_media_player_set_xid() or libvlc_media_player_set_hwnd() was
- * used to embed the video in a non-LibVLC widget. If you want to to render an
- * embedded LibVLC video full-screen, the parent embedding widget must expanded
- * to full screen (LibVLC cannot take care of that).
- * LibVLC will then automatically resize the video as appropriate.
+ * libvlc_media_player_set_xid() was used to embed the video in a non-top-level
+ * window. In that case, the embedding window must be reparented to the root
+ * window <b>before</b> fullscreen mode is enabled. You will want to reparent
+ * it back to its normal parent when disabling fullscreen.
  *
  * \param p_mi the media player
  * \param b_fullscreen boolean for fullscreen status
@@ -532,7 +551,7 @@ VLC_PUBLIC_API int libvlc_get_fullscreen( libvlc_media_player_t *p_mi );
  * for the X window ID of the video widget, then LibVLC will not be able to
  * handle key presses and mouse clicks in any case.
  *
- * \warning This function is only implemented for X11 at the moment.
+ * \warning This function is only implemented for X11 and Win32 at the moment.
  *
  * \param p_mi the media player
  * \param on true to handle key press events, false to ignore them.
@@ -547,7 +566,7 @@ void libvlc_video_set_key_input( libvlc_media_player_t *p_mi, unsigned on );
  *
  * \note See also libvlc_video_set_key_input().
  *
- * \warning This function is only implemented for X11 at the moment.
+ * \warning This function is only implemented for X11 and Win32 at the moment.
  *
  * \param p_mi the media player
  * \param on true to handle mouse click events, false to ignore them.
@@ -588,6 +607,32 @@ int libvlc_video_get_height( libvlc_media_player_t *p_mi );
 VLC_DEPRECATED_API
 int libvlc_video_get_width( libvlc_media_player_t *p_mi );
 
+/**
+ * Get the mouse pointer coordinates over a video.
+ * Coordinates are expressed in terms of the decoded video resolution,
+ * <b>not</b> in terms of pixels on the screen/viewport (to get the latter,
+ * you can query your windowing system directly).
+ *
+ * Either of the coordinates may be negative or larger than the corresponding
+ * dimension of the video, if the cursor is outside the rendering area.
+ *
+ * @warning The coordinates may be out-of-date if the pointer is not located
+ * on the video rendering area. LibVLC does not track the pointer if it is
+ * outside of the video widget.
+ *
+ * @note LibVLC does not support multiple pointers (it does of course support
+ * multiple input devices sharing the same pointer) at the moment.
+ *
+ * \param p_mi media player
+ * \param num number of the video (starting from, and most commonly 0)
+ * \param px pointer to get the abscissa [OUT]
+ * \param py pointer to get the ordinate [OUT]
+ * \return 0 on success, -1 if the specified video does not exist
+ */
+VLC_PUBLIC_API
+int libvlc_video_get_cursor( libvlc_media_player_t *p_mi, unsigned num,
+                             int *px, int *py );
+
 /**
  * Get the current video scaling factor.
  * See also libvlc_video_set_scale().
@@ -616,7 +661,7 @@ VLC_PUBLIC_API void libvlc_video_set_scale( libvlc_media_player_t *p_mi, float f
  *
  * \param p_mi the media player
  * \return the video aspect ratio or NULL if unspecified
- * (the result must be released with free() or libvlc_free()).
+ * (the result must be released with free()).
  */
 VLC_PUBLIC_API char *libvlc_video_get_aspect_ratio( libvlc_media_player_t *p_mi );
 
@@ -882,9 +927,7 @@ VLC_PUBLIC_API void libvlc_video_set_logo_string( libvlc_media_player_t *p_mi,
 
 /** @} video */
 
-/** \defgroup libvlc_audio libvlc_audio
- * \ingroup libvlc_media_player
- * LibVLC Audio handling
+/** \defgroup libvlc_audio LibVLC audio controls
  * @{
  */