struct libvlc_instance_t *p_instance; ///< Parent instance
};
+#define RAISENULL( psz ) { libvlc_exception_raise( p_e, psz ); return NULL; }
+#define RAISEVOID( psz ) { libvlc_exception_raise( p_e, psz ); return; }
+#define RAISEZERO( psz ) { libvlc_exception_raise( p_e, psz ); return 0; }
# ifdef __cplusplus
}
libvlc_instance_t * libvlc_new( int , char **, libvlc_exception_t *);
/**
- * returns a libvlc instance identifier for legacy APIs
- * \param p_instance the instance to destroy
+ * Returns a libvlc instance identifier for legacy APIs. Use of this
+ * function is discouraged, you should convert your program to use the
+ * new API.
+ * \param p_instance the instance
*/
int libvlc_get_vlc_id( libvlc_instance_t *p_instance );
*/
void libvlc_playlist_clear( libvlc_instance_t *, libvlc_exception_t * );
-/**
- * Go to next playlist item
- * \param p_instance the instance
- * \param p_exception an initialized exception
- */
-void libvlc_playlist_next( libvlc_instance_t *, libvlc_exception_t * );
-
-/**
- * Go to Previous playlist item
- * \param p_instance the instance
- * \param p_exception an initialized exception
- */
-void libvlc_playlist_prev( libvlc_instance_t *, libvlc_exception_t * );
-
/**
* Add an item at the end of the playlist
* If you need more advanced options, \see libvlc_playlist_add_extended
* \param psz_name a name that you might want to give or NULL
* \param i_options the number of options to add
* \param ppsz_options strings representing the options to add
+ * \param p_exception an initialized exception
* \return the identifier of the new item
*/
int libvlc_playlist_add_extended( libvlc_instance_t *, const char *,
const char *, int, const char **,
libvlc_exception_t * );
-
+/**
+ * Delete the playlist item with the given ID.
+ * \param p_instance the instance
+ * \param i_id the id to remove
+ * \param p_exception an initialized exception
+ * \return
+ */
int libvlc_playlist_delete_item( libvlc_instance_t *, int,
libvlc_exception_t * );
libvlc_input_t *libvlc_playlist_get_input( libvlc_instance_t *,
libvlc_exception_t * );
-
-
/** @}*/
/*****************************************************************************
float libvlc_input_get_position ( libvlc_input_t *, libvlc_exception_t *);
void libvlc_input_set_position ( libvlc_input_t *, float, libvlc_exception_t *);
vlc_bool_t libvlc_input_will_play ( libvlc_input_t *, libvlc_exception_t *);
-vlc_bool_t libvlc_input_has_vout ( libvlc_input_t *, libvlc_exception_t *);
-float libvlc_input_get_fps ( libvlc_input_t *, libvlc_exception_t *);
/** @} */
* @{
*/
+/**
+ * Does this input have a video output ?
+ * \param p_input the input
+ * \param p_exception an initialized exception
+ */
+vlc_bool_t libvlc_input_has_vout ( libvlc_input_t *, libvlc_exception_t *);
+float libvlc_input_get_fps ( libvlc_input_t *, libvlc_exception_t *);
+
/**
* Toggle fullscreen status on video output
* \param p_input the input
void libvlc_vlm_set_input( libvlc_instance_t *, char *, char*,
libvlc_exception_t *);
-
-
/**
* Set output for a media
* \param p_instance the instance
* libvlc_audio_get_mute : Get the volume state, true if muted
*****************************************************************************/
void libvlc_audio_toggle_mute( libvlc_instance_t *p_instance,
- libvlc_exception_t *p_exception )
+ libvlc_exception_t *p_e )
{
aout_VolumeMute( p_instance->p_vlc, NULL );
}
vlc_bool_t libvlc_audio_get_mute( libvlc_instance_t *p_instance,
- libvlc_exception_t *p_exception )
+ libvlc_exception_t *p_e )
{
/*
* If the volume level is 0, then the channel is muted
*/
audio_volume_t i_volume;
- i_volume = libvlc_audio_get_volume(p_instance, p_exception);
+ i_volume = libvlc_audio_get_volume(p_instance, p_e);
if ( i_volume == 0 )
return VLC_TRUE;
-
return VLC_FALSE;
}
void libvlc_audio_set_mute( libvlc_instance_t *p_instance, vlc_bool_t status,
- libvlc_exception_t *p_exception )
+ libvlc_exception_t *p_e )
{
if ( status )
{
- /*
- * Check if the volume is already muted
- */
- if (! libvlc_audio_get_volume( p_instance, p_exception ) )
+ /* Check if the volume is already muted */
+ if (! libvlc_audio_get_volume( p_instance, p_e ) )
{
return;
}
-
aout_VolumeMute( p_instance->p_vlc, NULL );
- return;
-
}
else
{
- /*
- * the aout_VolumeMute is a toggle function, so this is enough.
- */
+ /* the aout_VolumeMute is a toggle function, so this is enough. */
aout_VolumeMute( p_instance->p_vlc, NULL );
- return;
}
}
-
/*****************************************************************************
* libvlc_audio_get_volume : Get the current volume (range 0-200 %)
*****************************************************************************/
int libvlc_audio_get_volume( libvlc_instance_t *p_instance,
- libvlc_exception_t *p_exception )
+ libvlc_exception_t *p_e )
{
audio_volume_t i_volume;
* libvlc_audio_set_volume : Set the current volume
*****************************************************************************/
void libvlc_audio_set_volume( libvlc_instance_t *p_instance, int i_volume,
- libvlc_exception_t *p_exception )
+ libvlc_exception_t *p_e )
{
if( i_volume >= 0 && i_volume <= 200 )
{
}
else
{
- libvlc_exception_raise( p_exception, "Volume out of range" );
+ libvlc_exception_raise( p_e, "Volume out of range" );
}
}
va_list args;
/* does caller care about exceptions ? */
- if( p_exception == NULL )
- return;
+ if( p_exception == NULL ) return;
/* remove previous exception if it wasn't cleared */
if( p_exception->b_raised && p_exception->psz_message )
{
- free(p_exception->psz_message);
- p_exception->psz_message = NULL;
+ free(p_exception->psz_message);
+ p_exception->psz_message = NULL;
}
va_start( args, psz_format );
}
libvlc_instance_t * libvlc_new( int argc, char **argv,
- libvlc_exception_t *p_exception )
+ libvlc_exception_t *p_e )
{
int i_vlc_id;
libvlc_instance_t *p_new;
i_vlc_id = VLC_Create();
p_vlc = (vlc_t* ) vlc_current_object( i_vlc_id );
- if( !p_vlc )
- {
- libvlc_exception_raise( p_exception, "VLC initialization failed" );
- return NULL;
- }
+ if( !p_vlc ) RAISENULL( "VLC initialization failed" );
+
p_new = (libvlc_instance_t *)malloc( sizeof( libvlc_instance_t ) );
+ if( !p_new ) RAISENULL( "Out of memory" );
/** \todo Look for interface settings. If we don't have any, add -I dummy */
/* Because we probably don't want a GUI by default */
- if( !p_new )
- {
- libvlc_exception_raise( p_exception, "Out of memory" );
- return NULL;
- }
VLC_Init( i_vlc_id, argc, argv );
VLC_OBJECT_PLAYLIST, FIND_CHILD );
p_new->p_vlm = NULL;
- if( !p_new->p_playlist )
- {
- libvlc_exception_raise( p_exception, "Playlist creation failed" );
- return NULL;
- }
+ if( !p_new->p_playlist ) RAISENULL( "Playlist creation failed" );
+
p_new->i_vlc_id = i_vlc_id;
-
return p_new;
}
{
return p_instance->i_vlc_id;
}
-
void libvlc_input_free( libvlc_input_t *p_input )
{
- if( p_input )
- free( p_input );
+ if( p_input ) free( p_input );
}
/*
{
input_thread_t *p_input_thread;
- if( !p_input )
- {
- libvlc_exception_raise( p_e, "Input is NULL" );
- return NULL;
- }
+ if( !p_input ) RAISENULL( "Input is NULL" );
p_input_thread = (input_thread_t*)vlc_object_get(
- p_input->p_instance->p_vlc,
- p_input->i_input_id );
- if( !p_input_thread )
- {
- libvlc_exception_raise( p_e, "Input does not exist" );
- return NULL;
- }
+ p_input->p_instance->p_vlc,
+ p_input->i_input_id );
+ if( !p_input_thread ) RAISENULL( "Input does not exist" );
return p_input_thread;
}
* Getters for stream information
**************************************************************************/
vlc_int64_t libvlc_input_get_length( libvlc_input_t *p_input,
- libvlc_exception_t *p_exception )
+ libvlc_exception_t *p_e )
{
input_thread_t *p_input_thread;
vlc_value_t val;
- p_input_thread = libvlc_get_input_thread ( p_input, p_exception);
-
- if ( libvlc_exception_raised( p_exception ) )
- return -1.0;
+ p_input_thread = libvlc_get_input_thread ( p_input, p_e);
+ if( libvlc_exception_raised( p_e ) ) return -1.0;
var_Get( p_input_thread, "length", &val );
vlc_object_release( p_input_thread );
}
vlc_int64_t libvlc_input_get_time( libvlc_input_t *p_input,
- libvlc_exception_t *p_exception )
+ libvlc_exception_t *p_e )
{
input_thread_t *p_input_thread;
vlc_value_t val;
-
- p_input_thread = libvlc_get_input_thread ( p_input, p_exception);
-
- if ( libvlc_exception_raised( p_exception ) )
- return -1.0;
+ p_input_thread = libvlc_get_input_thread ( p_input, p_e );
+ if( libvlc_exception_raised( p_e ) ) return -1.0;
var_Get( p_input_thread , "time", &val );
vlc_object_release( p_input_thread );
-
return val.i_time / 1000;
}
-void libvlc_input_set_time( libvlc_input_t *p_input, vlc_int64_t time, libvlc_exception_t *p_exception )
+void libvlc_input_set_time( libvlc_input_t *p_input, vlc_int64_t time,
+ libvlc_exception_t *p_e )
{
input_thread_t *p_input_thread;
vlc_value_t value;
- p_input_thread = libvlc_get_input_thread ( p_input, p_exception);
-
- if ( libvlc_exception_raised( p_exception ) )
- return;
+ p_input_thread = libvlc_get_input_thread ( p_input, p_e );
+ if( libvlc_exception_raised( p_e ) ) return;
value.i_time = time;
var_Set( p_input_thread, "time", value );
vlc_object_release( p_input_thread );
-
- return;
-
}
-void libvlc_input_set_position( libvlc_input_t *p_input, float position, libvlc_exception_t *p_exception )
+void libvlc_input_set_position( libvlc_input_t *p_input, float position,
+ libvlc_exception_t *p_e )
{
input_thread_t *p_input_thread;
vlc_value_t val;
-
val.f_float = position;
- p_input_thread = libvlc_get_input_thread ( p_input, p_exception);
-
- if ( libvlc_exception_raised( p_exception ) )
- return;
+ p_input_thread = libvlc_get_input_thread ( p_input, p_e);
+ if ( libvlc_exception_raised( p_e ) ) return;
var_Set( p_input_thread, "position", val );
vlc_object_release( p_input_thread );
-
- return;
-
}
-
-
float libvlc_input_get_position( libvlc_input_t *p_input,
- libvlc_exception_t *p_exception )
+ libvlc_exception_t *p_e )
{
input_thread_t *p_input_thread;
vlc_value_t val;
- p_input_thread = libvlc_get_input_thread ( p_input, p_exception);
-
- if ( libvlc_exception_raised( p_exception ) )
- return -1.0;
+ p_input_thread = libvlc_get_input_thread ( p_input, p_e);
+ if ( libvlc_exception_raised( p_e ) ) return -1.0;
var_Get( p_input_thread, "position", &val );
vlc_object_release( p_input_thread );
}
float libvlc_input_get_fps( libvlc_input_t *p_input,
- libvlc_exception_t *p_exception)
+ libvlc_exception_t *p_e)
{
double f_fps;
input_thread_t *p_input_thread;
- p_input_thread = libvlc_get_input_thread ( p_input, p_exception);
+ p_input_thread = libvlc_get_input_thread ( p_input, p_e );
+ if ( libvlc_exception_raised( p_e ) ) return 0.0;
- if( demux2_Control( p_input_thread->input.p_demux, DEMUX_GET_FPS, &f_fps ) || f_fps < 0.1 )
+ if( demux2_Control( p_input_thread->input.p_demux, DEMUX_GET_FPS, &f_fps )
+ || f_fps < 0.1 )
{
vlc_object_release( p_input_thread );
- return 0;
+ return 0.0;
}
else
{
}
vlc_bool_t libvlc_input_will_play( libvlc_input_t *p_input,
- libvlc_exception_t *p_exception)
+ libvlc_exception_t *p_e)
{
- input_thread_t *p_input_thread;
-
- p_input_thread = libvlc_get_input_thread ( p_input, p_exception);
-
- if ( libvlc_exception_raised( p_exception ) )
- return VLC_FALSE;
+ input_thread_t *p_input_thread =
+ libvlc_get_input_thread ( p_input, p_e);
+ if ( libvlc_exception_raised( p_e ) ) return VLC_FALSE;
if ( !p_input_thread->b_die && !p_input_thread->b_dead )
{
vlc_object_release( p_input_thread );
return VLC_TRUE;
}
-
vlc_object_release( p_input_thread );
return VLC_FALSE;
}
void libvlc_playlist_play( libvlc_instance_t *p_instance, int i_id,
int i_options, char **ppsz_options,
- libvlc_exception_t *p_exception )
+ libvlc_exception_t *p_e )
{
+ assert( p_instance->p_playlist );
///\todo Handle additionnal options
- if( p_instance->p_playlist->i_size == 0 )
- {
- libvlc_exception_raise( p_exception, "Empty playlist" );
- return;
- }
+ if( p_instance->p_playlist->i_size == 0 ) RAISEVOID( "Empty playlist" );
if( i_id > 0 )
{
- playlist_item_t *p_item = playlist_ItemGetById( p_instance->p_playlist, i_id );
+ playlist_item_t *p_item = playlist_ItemGetById( p_instance->p_playlist,
+ i_id );
+ if( !p_item ) RAISEVOID( "Unable to find item" );
- if( !p_item )
- {
- libvlc_exception_raise( p_exception, "Unable to find item " );
- return;
- }
playlist_LockControl( p_instance->p_playlist, PLAYLIST_VIEWPLAY,
p_instance->p_playlist->status.p_node, p_item );
}
}
void libvlc_playlist_pause( libvlc_instance_t *p_instance,
- libvlc_exception_t *p_exception )
+ libvlc_exception_t *p_e )
{
+ assert( p_instance->p_playlist );
if( playlist_Pause( p_instance->p_playlist ) != VLC_SUCCESS )
- {
- libvlc_exception_raise( p_exception, "Empty playlist" );
- }
+ RAISEVOID( "Empty playlist" );
}
void libvlc_playlist_stop( libvlc_instance_t *p_instance,
- libvlc_exception_t *p_exception )
+ libvlc_exception_t *p_e )
{
+ assert( p_instance->p_playlist );
if( playlist_Stop( p_instance->p_playlist ) != VLC_SUCCESS )
- {
- libvlc_exception_raise( p_exception, "Empty playlist" );
- }
+ RAISEVOID( "Empty playlist" );
}
void libvlc_playlist_clear( libvlc_instance_t *p_instance,
- libvlc_exception_t *p_exception )
+ libvlc_exception_t *p_e )
{
+ assert( p_instance->p_playlist );
playlist_Clear( p_instance->p_playlist );
}
void libvlc_playlist_next( libvlc_instance_t *p_instance,
- libvlc_exception_t *p_exception )
+ libvlc_exception_t *p_e )
{
+ assert( p_instance->p_playlist );
if( playlist_Next( p_instance->p_playlist ) != VLC_SUCCESS )
- {
- libvlc_exception_raise( p_exception, "Empty playlist" );
- }
+ RAISEVOID( "Empty playlist" );
}
void libvlc_playlist_prev( libvlc_instance_t *p_instance,
- libvlc_exception_t *p_exception )
+ libvlc_exception_t *p_e )
{
if( playlist_Prev( p_instance->p_playlist ) != VLC_SUCCESS )
- {
- libvlc_exception_raise( p_exception, "Empty playlist" );
- }
+ RAISEVOID( "Empty playlist" );
}
int libvlc_playlist_add( libvlc_instance_t *p_instance, const char *psz_uri,
- const char *psz_name, libvlc_exception_t *p_exception )
+ const char *psz_name, libvlc_exception_t *p_e )
{
return libvlc_playlist_add_extended( p_instance, psz_uri, psz_name,
- 0, NULL, p_exception );
+ 0, NULL, p_e );
}
int libvlc_playlist_add_extended( libvlc_instance_t *p_instance,
const char *psz_uri, const char *psz_name,
int i_options, const char **ppsz_options,
- libvlc_exception_t *p_exception )
+ libvlc_exception_t *p_e )
{
+ assert( p_instance->p_playlist );
return playlist_PlaylistAddExt( p_instance->p_playlist, psz_uri, psz_name,
PLAYLIST_INSERT, PLAYLIST_END, -1, ppsz_options,
i_options );
}
int libvlc_playlist_delete_item( libvlc_instance_t *p_instance, int i_id,
- libvlc_exception_t *p_exception )
+ libvlc_exception_t *p_e )
{
+ assert( p_instance->p_playlist );
return playlist_DeleteFromItemId( p_instance->p_playlist, i_id );
}
int libvlc_playlist_isplaying( libvlc_instance_t *p_instance,
- libvlc_exception_t *p_exception )
+ libvlc_exception_t *p_e )
{
- if( !p_instance->p_playlist )
- {
- libvlc_exception_raise( p_exception, "No playlist" );
- return 0;
- }
+ assert( p_instance->p_playlist );
return playlist_IsPlaying( p_instance->p_playlist );
}
int libvlc_playlist_items_count( libvlc_instance_t *p_instance,
- libvlc_exception_t *p_exception )
+ libvlc_exception_t *p_e )
{
- if( !p_instance->p_playlist )
- {
- libvlc_exception_raise( p_exception, "No playlist" );
- return 0;
- }
+ assert( p_instance->p_playlist );
return p_instance->p_playlist->i_size;
}
libvlc_input_t * libvlc_playlist_get_input( libvlc_instance_t *p_instance,
- libvlc_exception_t *p_exception )
+ libvlc_exception_t *p_e )
{
libvlc_input_t *p_input;
+ assert( p_instance->p_playlist );
vlc_mutex_lock( &p_instance->p_playlist->object_lock );
if( p_instance->p_playlist->p_input == NULL )
{
- libvlc_exception_raise( p_exception, "No active input" );
+ libvlc_exception_raise( p_e, "No active input" );
vlc_mutex_unlock( &p_instance->p_playlist->object_lock );
return NULL;
}