/**
* Retain a reference to a media descriptor object (libvlc_media_t). Use
- * libvlc_media_release() to decrement the reference count of a
+ * libvlc_media_release() to decrement the reference count of a
* media descriptor object.
*
* \param p_meta_desc a media descriptor object.
libvlc_exception_t * p_e );
/**
- * Sets media descriptor's user_data. user_data is specialized data
- * accessed by the host application, VLC.framework uses it as a pointer to
+ * Sets media descriptor's user_data. user_data is specialized data
+ * accessed by the host application, VLC.framework uses it as a pointer to
* an native object that references a libvlc_media_t pointer
*
* \param p_md media descriptor object
libvlc_exception_t * p_e);
/**
- * Get media descriptor's user_data. user_data is specialized data
- * accessed by the host application, VLC.framework uses it as a pointer to
+ * Get media descriptor's user_data. user_data is specialized data
+ * accessed by the host application, VLC.framework uses it as a pointer to
* an native object that references a libvlc_media_t pointer
*
* \param p_md media descriptor object
/**
* Release a media_player after use
* Decrement the reference count of a media player object. If the
- * reference count is 0, then libvlc_media_player_release() will
- * release the media player object. If the media player object
+ * reference count is 0, then libvlc_media_player_release() will
+ * release the media player object. If the media player object
* has been released, then it should not be used again.
*
* \param p_mi the Media Player to free
*/
VLC_PUBLIC_API void libvlc_media_player_retain( libvlc_media_player_t * );
-/**
+/**
* Set the media that will be used by the media_player. If any,
* previous md will be released.
*
VLC_PUBLIC_API int libvlc_media_player_get_chapter_count( libvlc_media_player_t *, libvlc_exception_t *);
VLC_PUBLIC_API int libvlc_media_player_will_play ( libvlc_media_player_t *, libvlc_exception_t *);
+/**
+ * Get title chapter count
+ *
+ * \param p_mi the Media Player
+ * \param i_title title
+ * \param p_e an initialized exception pointer
+ * \return number of chapters in title
+ */
+VLC_PUBLIC_API int libvlc_media_player_get_chapter_count_for_title(
+ libvlc_media_player_t *, int, libvlc_exception_t *);
+
+/**
+ * Set movie title
+ *
+ * \param p_mi the Media Player
+ * \param i_title title number to play
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_media_player_set_title( libvlc_media_player_t *, int, libvlc_exception_t *);
+
+/**
+ * Get movie title
+ *
+ * \param p_mi the Media Player
+ * \param p_e an initialized exception pointer
+ * \return title number currently playing
+ */
+VLC_PUBLIC_API int libvlc_media_player_get_title( libvlc_media_player_t *, libvlc_exception_t *);
+
+/**
+ * Get movie title count
+ *
+ * \param p_mi the Media Player
+ * \param p_e an initialized exception pointer
+ * \return title number count
+ */
+VLC_PUBLIC_API int libvlc_media_player_get_title_count( libvlc_media_player_t *, libvlc_exception_t *);
+
+/**
+ * Set previous chapter
+ *
+ * \param p_mi the Media Player
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_media_player_previous_chapter( libvlc_media_player_t *, libvlc_exception_t *);
+
+/**
+ * Set next chapter
+ *
+ * \param p_mi the Media Player
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_media_player_next_chapter( libvlc_media_player_t *, libvlc_exception_t *);
+
/**
* Get movie play rate
*
/**
* Retain a reference to a media library object. This function will
- * increment the reference counting for this object. Use
+ * increment the reference counting for this object. Use
* libvlc_media_library_release() to decrement the reference count.
*
* \param p_mlib media library object
libvlc_MediaListPlayerStopped,
libvlc_MediaDiscovererStarted,
- libvlc_MediaDiscovererEnded
+ libvlc_MediaDiscovererEnded,
+
+ libvlc_MediaPlayerTitleChanged
} libvlc_event_type_t;
libvlc_time_t new_time;
} media_player_time_changed;
struct
+ {
+ int new_title;
+ } media_player_title_changed;
+ struct
{
libvlc_time_t new_seekable;
} media_player_seekable_changed;
EVENT(libvlc_MediaPlayerBackward),
EVENT(libvlc_MediaPlayerEndReached),
EVENT(libvlc_MediaPlayerTimeChanged),
+ EVENT(libvlc_MediaPlayerTitleChanged),
EVENT(libvlc_MediaPlayerPositionChanged),
EVENT(libvlc_MediaPlayerSeekableChanged),
EVENT(libvlc_MediaPlayerPausableChanged),
libvlc_MediaPlayerPositionChanged, p_e );
libvlc_event_manager_register_event_type( p_mi->p_event_manager,
libvlc_MediaPlayerTimeChanged, p_e );
+ libvlc_event_manager_register_event_type( p_mi->p_event_manager,
+ libvlc_MediaPlayerTitleChanged, p_e );
libvlc_event_manager_register_event_type( p_mi->p_event_manager,
libvlc_MediaPlayerSeekableChanged, p_e );
libvlc_event_manager_register_event_type( p_mi->p_event_manager,
p_input_thread = libvlc_get_input_thread ( p_mi, p_e );
if( !p_input_thread )
- return -1.0;
+ return -1;
var_Get( p_input_thread, "chapter", &val );
vlc_object_release( p_input_thread );
p_input_thread = libvlc_get_input_thread ( p_mi, p_e );
if( !p_input_thread )
- return -1.0;
+ return -1;
var_Change( p_input_thread, "chapter", VLC_VAR_CHOICESCOUNT, &val, NULL );
vlc_object_release( p_input_thread );
return val.i_int;
}
+int libvlc_media_player_get_chapter_count_for_title(
+ libvlc_media_player_t *p_mi,
+ int i_title,
+ libvlc_exception_t *p_e )
+{
+ input_thread_t *p_input_thread;
+ vlc_value_t val;
+
+ p_input_thread = libvlc_get_input_thread ( p_mi, p_e );
+ if( !p_input_thread )
+ return -1;
+
+ char *psz_name = NULL;
+ if( asprintf( psz_name, "title %2i", i_title ) == -1 )
+ {
+ vlc_object_release( p_input_thread );
+ return -1;
+ }
+ var_Change( p_input_thread, psz_name, VLC_VAR_CHOICESCOUNT, &val, NULL );
+ vlc_object_release( p_input_thread );
+ free( psz_name );
+
+ return val.i_int;
+}
+
+void libvlc_media_player_set_title(
+ libvlc_media_player_t *p_mi,
+ int i_title,
+ libvlc_exception_t *p_e )
+{
+ input_thread_t *p_input_thread;
+ vlc_value_t val;
+ val.i_int = i_title;
+
+ p_input_thread = libvlc_get_input_thread ( p_mi, p_e);
+ if( !p_input_thread )
+ return;
+
+ var_Set( p_input_thread, "title", val );
+ vlc_object_release( p_input_thread );
+
+ //send event
+ libvlc_event_t event;
+ event.type = libvlc_MediaPlayerTitleChanged;
+ event.u.media_player_title_changed.new_title = i_title;
+ libvlc_event_send( p_mi->p_event_manager, &event );
+}
+
+int libvlc_media_player_get_title(
+ libvlc_media_player_t *p_mi,
+ libvlc_exception_t *p_e )
+{
+ input_thread_t *p_input_thread;
+ vlc_value_t val;
+
+ p_input_thread = libvlc_get_input_thread ( p_mi, p_e );
+ if( !p_input_thread )
+ return -1;
+
+ var_Get( p_input_thread, "title", &val );
+ vlc_object_release( p_input_thread );
+
+ return val.i_int;
+}
+
+int libvlc_media_player_get_title_count(
+ libvlc_media_player_t *p_mi,
+ libvlc_exception_t *p_e )
+{
+ input_thread_t *p_input_thread;
+ vlc_value_t val;
+
+ p_input_thread = libvlc_get_input_thread ( p_mi, p_e );
+ if( !p_input_thread )
+ return -1;
+
+ var_Change( p_input_thread, "title", VLC_VAR_CHOICESCOUNT, &val, NULL );
+ vlc_object_release( p_input_thread );
+
+ return val.i_int;
+}
+
+void libvlc_media_player_next_chapter(
+ libvlc_media_player_t *p_mi,
+ libvlc_exception_t *p_e )
+{
+ input_thread_t *p_input_thread;
+
+ p_input_thread = libvlc_get_input_thread ( p_mi, p_e);
+ if( !p_input_thread )
+ return;
+
+ int i_type = var_Type( p_input_thread, "next-chapter" );
+ vlc_value_t val;
+ val.b_bool = true;
+ var_Set( p_input_thread, (i_type & VLC_VAR_TYPE) != 0 ?
+ "next-chapter":"next-title", val );
+
+ vlc_object_release( p_input_thread );
+}
+
+void libvlc_media_player_previous_chapter(
+ libvlc_media_player_t *p_mi,
+ libvlc_exception_t *p_e )
+{
+ input_thread_t *p_input_thread;
+
+ p_input_thread = libvlc_get_input_thread ( p_mi, p_e);
+ if( !p_input_thread )
+ return;
+
+ int i_type = var_Type( p_input_thread, "next-chapter" );
+ vlc_value_t val;
+ val.b_bool = true;
+ var_Set( p_input_thread, (i_type & VLC_VAR_TYPE) != 0 ?
+ "prev-chapter":"prev-title", val );
+
+ vlc_object_release( p_input_thread );
+}
+
float libvlc_media_player_get_fps(
libvlc_media_player_t *p_mi,
libvlc_exception_t *p_e)
libvlc_media_player_event_manager
libvlc_media_player_get_chapter
libvlc_media_player_get_chapter_count
+libvlc_media_player_get_chapter_count_for_title
libvlc_media_player_get_drawable
libvlc_media_player_get_fps
libvlc_media_player_get_length
libvlc_media_player_get_rate
libvlc_media_player_get_state
libvlc_media_player_get_time
+libvlc_media_player_get_title
+libvlc_media_player_get_title_count
libvlc_media_player_has_vout
libvlc_media_player_is_seekable
libvlc_media_player_new
libvlc_media_player_new_from_input_thread
libvlc_media_player_new_from_media
+libvlc_media_player_next_chapter
libvlc_media_player_pause
libvlc_media_player_play
+libvlc_media_player_previous_chapter
libvlc_media_player_release
libvlc_media_player_retain
libvlc_media_player_set_chapter
libvlc_media_player_set_position
libvlc_media_player_set_rate
libvlc_media_player_set_time
+libvlc_media_player_set_title
libvlc_media_player_stop
libvlc_media_player_will_play
libvlc_media_release