Commit 44de0248 authored by Clément Stenac's avatar Clément Stenac

src/control: a bit of cleanup here and there

parent 5d09f600
......@@ -50,6 +50,9 @@ struct libvlc_input_t
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
}
......
......@@ -114,8 +114,10 @@ typedef struct libvlc_instance_t libvlc_instance_t;
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 );
......@@ -200,20 +202,6 @@ void libvlc_playlist_prev( libvlc_instance_t *, libvlc_exception_t * );
*/
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
......@@ -232,13 +220,20 @@ int libvlc_playlist_add( libvlc_instance_t *, const char *, const char *,
* \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 * );
......@@ -252,8 +247,6 @@ typedef struct libvlc_input_t libvlc_input_t;
libvlc_input_t *libvlc_playlist_get_input( libvlc_instance_t *,
libvlc_exception_t * );
/** @}*/
/*****************************************************************************
......@@ -277,8 +270,6 @@ void libvlc_input_set_time ( libvlc_input_t *, vlc_int64_t, libvlc_
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 *);
/** @} */
......@@ -288,6 +279,14 @@ 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
......@@ -474,8 +473,6 @@ void libvlc_vlm_set_output( libvlc_instance_t *, char *, char*,
void libvlc_vlm_set_input( libvlc_instance_t *, char *, char*,
libvlc_exception_t *);
/**
* Set output for a media
* \param p_instance the instance
......
......@@ -31,59 +31,49 @@
* 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;
......@@ -97,7 +87,7 @@ int libvlc_audio_get_volume( libvlc_instance_t *p_instance,
* 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 )
{
......@@ -106,7 +96,7 @@ void libvlc_audio_set_volume( libvlc_instance_t *p_instance, int i_volume,
}
else
{
libvlc_exception_raise( p_exception, "Volume out of range" );
libvlc_exception_raise( p_e, "Volume out of range" );
}
}
......@@ -63,14 +63,13 @@ inline void libvlc_exception_raise( libvlc_exception_t *p_exception,
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 );
......@@ -81,7 +80,7 @@ inline void libvlc_exception_raise( libvlc_exception_t *p_exception,
}
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;
......@@ -90,21 +89,14 @@ libvlc_instance_t * libvlc_new( int argc, char **argv,
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 );
......@@ -113,13 +105,9 @@ libvlc_instance_t * libvlc_new( int argc, char **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;
}
......@@ -136,4 +124,3 @@ int libvlc_get_vlc_id( libvlc_instance_t *p_instance )
{
return p_instance->i_vlc_id;
}
......@@ -29,8 +29,7 @@
void libvlc_input_free( libvlc_input_t *p_input )
{
if( p_input )
free( p_input );
if( p_input ) free( p_input );
}
/*
......@@ -42,20 +41,12 @@ input_thread_t *libvlc_get_input_thread( libvlc_input_t *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;
}
......@@ -66,15 +57,13 @@ input_thread_t *libvlc_get_input_thread( libvlc_input_t *p_input,
* 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 );
......@@ -83,72 +72,55 @@ vlc_int64_t libvlc_input_get_length( libvlc_input_t *p_input,
}
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 );
......@@ -157,17 +129,19 @@ float libvlc_input_get_position( libvlc_input_t *p_input,
}
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
{
......@@ -177,21 +151,17 @@ float libvlc_input_get_fps( libvlc_input_t *p_input,
}
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;
}
......@@ -28,24 +28,18 @@
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 );
}
......@@ -56,103 +50,94 @@ void libvlc_playlist_play( libvlc_instance_t *p_instance, int i_id,
}
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;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment