void mediacontrol_set_mrl( mediacontrol_Instance *self, const char * psz_file, mediacontrol_Exception *exception ) { libvlc_media_t * p_media; libvlc_exception_t ex; mediacontrol_exception_init( exception ); libvlc_exception_init( &ex ); p_media = libvlc_media_new( self->p_instance, psz_file, &ex ); HANDLE_LIBVLC_EXCEPTION_VOID( &ex ); libvlc_media_player_set_media( self->p_media_player, p_media, &ex ); HANDLE_LIBVLC_EXCEPTION_VOID( &ex ); }
void mediacontrol_stop( mediacontrol_Instance *self, mediacontrol_Exception *exception ) { libvlc_exception_t ex; mediacontrol_exception_init( exception ); libvlc_exception_init( &ex ); libvlc_media_player_stop( self->p_media_player, &ex ); HANDLE_LIBVLC_EXCEPTION_VOID( &ex ); }
void mediacontrol_set_fullscreen( mediacontrol_Instance *self, const int b_fullscreen, mediacontrol_Exception *exception ) { libvlc_exception_t ex; mediacontrol_exception_init( exception ); libvlc_exception_init( &ex ); libvlc_set_fullscreen( self->p_media_player, b_fullscreen, &ex ); HANDLE_LIBVLC_EXCEPTION_VOID( &ex ); }
/* Sets the media position */ void mediacontrol_set_media_position( mediacontrol_Instance *self, const mediacontrol_Position * a_position, mediacontrol_Exception *exception ) { libvlc_exception_t ex; int64_t i_pos; libvlc_exception_init( &ex ); mediacontrol_exception_init( exception ); i_pos = private_mediacontrol_position2microsecond( self->p_media_player, a_position ); libvlc_media_player_set_time( self->p_media_player, i_pos / 1000, &ex ); HANDLE_LIBVLC_EXCEPTION_VOID( &ex ); }
/* * Known issues: since moving in the playlist using playlist_Next * or playlist_Prev implies starting to play items, the a_position * argument will be only honored for the 1st item in the list. * * XXX:FIXME split moving in the playlist and playing items two * different actions or make playlist_<Next|Prev> accept a time * value to start to play from. */ void mediacontrol_start( mediacontrol_Instance *self, const mediacontrol_Position * a_position, mediacontrol_Exception *exception ) { libvlc_media_t * p_media; char * psz_name; libvlc_exception_t ex; mediacontrol_exception_init( exception ); libvlc_exception_init( &ex ); p_media = libvlc_media_player_get_media( self->p_media_player, &ex ); HANDLE_LIBVLC_EXCEPTION_VOID( &ex ); if ( ! p_media ) { /* No media was defined. */ RAISE( mediacontrol_PlaylistException, "No defined media." ); } else { /* A media was defined. Get its mrl to reuse it, but reset the options (because start-time may have been set on the previous invocation */ psz_name = libvlc_media_get_mrl( p_media, &ex ); HANDLE_LIBVLC_EXCEPTION_VOID( &ex ); /* Create a new media */ p_media = libvlc_media_new( self->p_instance, psz_name, &ex ); HANDLE_LIBVLC_EXCEPTION_VOID( &ex ); if( a_position->value ) { char * psz_from; libvlc_time_t i_from; /* A start position was specified. Add it to media options */ psz_from = ( char * )malloc( 20 * sizeof( char ) ); i_from = private_mediacontrol_position2microsecond( self->p_media_player, a_position ) / 1000000; snprintf( psz_from, 20, "start-time=%"PRId64, i_from ); libvlc_media_add_option( p_media, psz_from, &ex ); HANDLE_LIBVLC_EXCEPTION_VOID( &ex ); } libvlc_media_player_set_media( self->p_media_player, p_media, &ex ); HANDLE_LIBVLC_EXCEPTION_VOID( &ex ); libvlc_media_player_play( self->p_media_player, &ex ); HANDLE_LIBVLC_EXCEPTION_VOID( &ex ); } }