#include <vlc/intf.h>
#include <vlc/vout.h>
#include <vlc/aout.h>
+#include <vlc_demux.h>
-#include <osd.h>
+#include <vlc_osd.h>
#define HAS_SNAPSHOT 1
#endif
#include <sys/types.h>
-#define RAISE(c, m) exception->code = c; \
- exception->message = strdup(m);
+#define RAISE( c, m ) exception->code = c; \
+ exception->message = strdup(m);
-long long mediacontrol_unit_convert (input_thread_t *p_input,
- mediacontrol_PositionKey from,
- mediacontrol_PositionKey to,
- long long value)
+long long mediacontrol_unit_convert( input_thread_t *p_input,
+ mediacontrol_PositionKey from,
+ mediacontrol_PositionKey to,
+ long long value )
{
- if (to == from)
- return value;
+ if( to == from )
+ return value;
- /* For all conversions, we need data from p_input */
- if (!p_input)
- return 0;
+ /* For all conversions, we need data from p_input */
+ if( !p_input )
+ return 0;
- switch (from)
+ switch( from )
{
case mediacontrol_MediaTime:
- if (to == mediacontrol_ByteCount)
- return value * 50 * p_input->stream.i_mux_rate / 1000;
-
- if (to == mediacontrol_SampleCount)
- {
- double f_fps;
-
- if (demux_Control( p_input, DEMUX_GET_FPS, &f_fps ) || f_fps < 0.1)
- return 0;
- else
- return (value * f_fps / 1000.0);
- }
- /* Cannot happen */
- /* See http://catb.org/~esr/jargon/html/entry/can't-happen.html */
- break;
+ if( to == mediacontrol_ByteCount )
+ {
+ /* FIXME */
+ /* vlc < 0.8 API */
+ /* return value * 50 * p_input->stream.i_mux_rate / 1000; */
+ return 0;
+ }
+ if( to == mediacontrol_SampleCount )
+ {
+ double f_fps;
+
+ if( demux2_Control( p_input->input.p_demux, DEMUX_GET_FPS, &f_fps ) || f_fps < 0.1 )
+ return 0;
+ else
+ return( value * f_fps / 1000.0 );
+ }
+ /* Cannot happen */
+ /* See http://catb.org/~esr/jargon/html/entry/can't-happen.html */
+ break;
case mediacontrol_SampleCount:
- {
- double f_fps;
-
- if (demux_Control( p_input, DEMUX_GET_FPS, &f_fps ) || f_fps < 0.1)
- return 0;
-
- if (to == mediacontrol_ByteCount)
- return (long long)(value * 50 * p_input->stream.i_mux_rate / f_fps);
-
- if (to == mediacontrol_MediaTime)
- return (long long)(value * 1000.0 / (double)f_fps );
-
- /* Cannot happen */
- break;
- }
+ {
+ double f_fps;
+
+ if( demux2_Control( p_input->input.p_demux, DEMUX_GET_FPS, &f_fps ) || f_fps < 0.1 )
+ return 0;
+
+ if( to == mediacontrol_ByteCount )
+ {
+ /* FIXME */
+ /* vlc < 0.8 API */
+/* return ( long long )( value * 50 * p_input->stream.i_mux_rate / f_fps ); */
+ return 0;
+ }
+
+ if( to == mediacontrol_MediaTime )
+ return( long long )( value * 1000.0 / ( double )f_fps );
+
+ /* Cannot happen */
+ break;
+ }
case mediacontrol_ByteCount:
- if (p_input->stream.i_mux_rate == 0)
- return 0;
-
- /* Convert an offset into milliseconds. Taken from input_ext-intf.c.
- The 50 hardcoded constant comes from the definition of i_mux_rate :
- i_mux_rate : the rate we read the stream (in units of 50 bytes/s) ;
- 0 if undef */
- if (to == mediacontrol_MediaTime)
- return (long long) (1000 * value / 50 / p_input->stream.i_mux_rate);
-
- if (to == mediacontrol_SampleCount)
- {
- double f_fps;
- if (demux_Control( p_input, DEMUX_GET_FPS, &f_fps ) || f_fps < 0.1)
- return 0;
- else
- return (long long)(value * f_fps / 50 / p_input->stream.i_mux_rate);
- }
- /* Cannot happen */
- break;
- }
- /* Cannot happen */
- return 0;
+ /* FIXME */
+ return 0;
+/* vlc < 0.8 API: */
+
+// if( p_input->stream.i_mux_rate == 0 )
+// return 0;
+//
+// /* Convert an offset into milliseconds. Taken from input_ext-intf.c.
+// The 50 hardcoded constant comes from the definition of i_mux_rate :
+// i_mux_rate : the rate we read the stream (in units of 50 bytes/s) ;
+// 0 if undef */
+// if( to == mediacontrol_MediaTime )
+// return ( long long )( 1000 * value / 50 / p_input->stream.i_mux_rate );
+//
+// if( to == mediacontrol_SampleCount )
+// {
+// double f_fps;
+// if( demux2_Control( p_input->input.p_demux, DEMUX_GET_FPS, &f_fps ) || f_fps < 0.1 )
+// return 0;
+// else
+// return ( long long )( value * f_fps / 50 / p_input->stream.i_mux_rate );
+// }
+ /* Cannot happen */
+ break;
+ }
+ /* Cannot happen */
+ return 0;
}
/* Converts a mediacontrol_Position into a time in microseconds in
movie clock time */
long long
-mediacontrol_position2microsecond (input_thread_t* p_input, const mediacontrol_Position * pos)
+mediacontrol_position2microsecond( input_thread_t* p_input, const mediacontrol_Position * pos )
{
- switch (pos->origin)
+ switch( pos->origin )
{
case mediacontrol_AbsolutePosition:
- return (1000 * mediacontrol_unit_convert(p_input,
- pos->key, /* from */
- mediacontrol_MediaTime, /* to */
- pos->value));
- break;
+ return ( 1000 * mediacontrol_unit_convert( p_input,
+ pos->key, /* from */
+ mediacontrol_MediaTime, /* to */
+ pos->value ) );
+ break;
case mediacontrol_RelativePosition:
- {
- off_t l_offset;
- long long l_current;
- long long l_pos;
-
- vlc_mutex_lock( &p_input->stream.stream_lock );
- l_offset = p_input->stream.p_selected_area->i_tell;
- vlc_mutex_unlock( &p_input->stream.stream_lock );
-
- l_current = 1000 * mediacontrol_unit_convert(p_input,
- mediacontrol_ByteCount,
- mediacontrol_MediaTime,
- l_offset);
- l_pos = 1000 * mediacontrol_unit_convert(p_input,
- pos->key,
- mediacontrol_MediaTime,
- pos->value);
- return l_current + l_pos;
- break;
- }
+ {
+ long long l_pos;
+ vlc_value_t val;
+
+ val.i_time = 0;
+ if( p_input )
+ {
+ var_Get( p_input, "time", &val );
+ }
+
+ l_pos = 1000 * mediacontrol_unit_convert( p_input,
+ pos->key,
+ mediacontrol_MediaTime,
+ pos->value );
+ return val.i_time + l_pos;
+ break;
+ }
case mediacontrol_ModuloPosition:
- {
- long long l_duration;
- long long l_pos;
-
- l_duration = 1000 * mediacontrol_unit_convert(p_input,
- mediacontrol_ByteCount,
- mediacontrol_MediaTime,
- p_input->stream.p_selected_area->i_size);
- l_pos = (1000 * mediacontrol_unit_convert(p_input,
- pos->key, /* from */
- mediacontrol_MediaTime, /* to */
- pos->value));
- return l_pos % l_duration;
- break;
- }
- }
- return 0;
+ {
+ long long l_pos;
+ vlc_value_t val;
+
+ val.i_time = 0;
+ if( p_input )
+ {
+ var_Get( p_input, "length", &val );
+ }
+
+ if( val.i_time > 0)
+ {
+ l_pos = ( 1000 * mediacontrol_unit_convert( p_input,
+ pos->key,
+ mediacontrol_MediaTime,
+ pos->value ) );
+ }
+ else
+ l_pos = 0;
+
+ return l_pos % val.i_time;
+ break;
+ }
+ }
+ return 0;
}
mediacontrol_RGBPicture*
-mediacontrol_RGBPicture__alloc (int datasize)
+mediacontrol_RGBPicture__alloc( int datasize )
{
- mediacontrol_RGBPicture* pic;
-
- pic = (mediacontrol_RGBPicture*)malloc(sizeof(mediacontrol_RGBPicture));
- if (! pic)
- return NULL;
-
- pic->size = datasize;
- pic->data = (char*)malloc(datasize);
- return pic;
+ mediacontrol_RGBPicture* pic;
+
+ pic = ( mediacontrol_RGBPicture * )malloc( sizeof( mediacontrol_RGBPicture ) );
+ if( ! pic )
+ return NULL;
+
+ pic->size = datasize;
+ pic->data = ( char* )malloc( datasize );
+ return pic;
}
void
-mediacontrol_RGBPicture__free (mediacontrol_RGBPicture* pic)
+mediacontrol_RGBPicture__free( mediacontrol_RGBPicture* pic )
{
- if (pic)
- free(pic->data);
- free(pic);
+ if( pic )
+ free( pic->data );
+ free( pic );
}
mediacontrol_PlaylistSeq*
-mediacontrol_PlaylistSeq__alloc (int size)
+mediacontrol_PlaylistSeq__alloc( int size )
{
- mediacontrol_PlaylistSeq* ps;
-
- ps = (mediacontrol_PlaylistSeq*)malloc(sizeof(mediacontrol_PlaylistSeq));
- if (! ps)
- return NULL;
-
- ps->size = size;
- ps->data = (char**)malloc(size * sizeof(char*));
- return ps;
+ mediacontrol_PlaylistSeq* ps;
+
+ ps =( mediacontrol_PlaylistSeq* )malloc( sizeof( mediacontrol_PlaylistSeq ) );
+ if( ! ps )
+ return NULL;
+
+ ps->size = size;
+ ps->data = ( char** )malloc( size * sizeof( char* ) );
+ return ps;
}
void
-mediacontrol_PlaylistSeq__free (mediacontrol_PlaylistSeq* ps)
+mediacontrol_PlaylistSeq__free( mediacontrol_PlaylistSeq* ps )
{
- if (ps)
+ if( ps )
{
- int i;
- for (i = 0; i < ps->size; i++)
- free(ps->data[i]);
+ int i;
+ for( i = 0 ; i < ps->size ; i++ )
+ free( ps->data[i] );
}
- free(ps->data);
- free(ps);
+ free( ps->data );
+ free( ps );
}
mediacontrol_Exception*
-mediacontrol_exception_init(mediacontrol_Exception *exception)
+mediacontrol_exception_init( mediacontrol_Exception *exception )
{
- if (exception == NULL)
+ if( exception == NULL )
{
- exception = (mediacontrol_Exception*)malloc(sizeof(mediacontrol_Exception));
+ exception = ( mediacontrol_Exception* )malloc( sizeof( mediacontrol_Exception ) );
}
- exception->code = 0;
- exception->message = NULL;
- return exception;
+ exception->code = 0;
+ exception->message = NULL;
+ return exception;
}
void
-mediacontrol_exception_free(mediacontrol_Exception *exception)
+mediacontrol_exception_free( mediacontrol_Exception *exception )
{
- if (! exception)
- return;
+ if( ! exception )
+ return;
- free(exception->message);
- free(exception);
+ free( exception->message );
+ free( exception );
}
-mediacontrol_Instance* mediacontrol_new_from_object(vlc_object_t* p_object,
- mediacontrol_Exception *exception)
+mediacontrol_Instance* mediacontrol_new_from_object( vlc_object_t* p_object,
+ mediacontrol_Exception *exception )
{
- mediacontrol_Instance* retval;
- vlc_object_t *p_vlc;
+ mediacontrol_Instance* retval;
+ vlc_object_t *p_vlc;
- p_vlc = vlc_object_find(p_object, VLC_OBJECT_ROOT, FIND_PARENT);
- if (! p_vlc)
+ p_vlc = vlc_object_find( p_object, VLC_OBJECT_ROOT, FIND_PARENT );
+ if( ! p_vlc )
{
- RAISE(mediacontrol_InternalException, "Unable to initialize VLC");
- return NULL;
+ RAISE( mediacontrol_InternalException, "Unable to initialize VLC" );
+ return NULL;
}
- retval = (mediacontrol_Instance*)malloc(sizeof(mediacontrol_Instance));
- retval->p_vlc = p_vlc;
- retval->vlc_object_id = p_vlc->i_object_id;
+ retval = ( mediacontrol_Instance* )malloc( sizeof( mediacontrol_Instance ) );
+ retval->p_vlc = p_vlc;
+ retval->vlc_object_id = p_vlc->i_object_id;
- /* We can keep references on these, which should not change. Is it true ? */
- retval->p_playlist = vlc_object_find(p_vlc, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE);
- retval->p_intf = vlc_object_find(p_vlc, VLC_OBJECT_INTF, FIND_ANYWHERE);
+ /* We can keep references on these, which should not change. Is it true ? */
+ retval->p_playlist = vlc_object_find( p_vlc, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE );
+ retval->p_intf = vlc_object_find( p_vlc, VLC_OBJECT_INTF, FIND_ANYWHERE );
- if (! retval->p_playlist || ! retval->p_intf)
+ if( ! retval->p_playlist || ! retval->p_intf )
{
- RAISE(mediacontrol_InternalException, "No available interface");
- return NULL;
+ RAISE( mediacontrol_InternalException, "No available interface" );
+ return NULL;
}
- return retval;
+ return retval;
};
/* Returns the current position in the stream. The returned value can
- be relative or absolute (according to PositionOrigin) and the unit
+ be relative or absolute( according to PositionOrigin ) and the unit
is set by PositionKey */
mediacontrol_Position*
-mediacontrol_get_media_position(mediacontrol_Instance *self,
- const mediacontrol_PositionOrigin an_origin,
- const mediacontrol_PositionKey a_key,
- mediacontrol_Exception *exception)
+mediacontrol_get_media_position( mediacontrol_Instance *self,
+ const mediacontrol_PositionOrigin an_origin,
+ const mediacontrol_PositionKey a_key,
+ mediacontrol_Exception *exception )
{
- mediacontrol_Position* retval;
- off_t l_offset;
- input_thread_t * p_input = self->p_playlist->p_input;;
+ mediacontrol_Position* retval;
+ vlc_value_t val;
+ input_thread_t * p_input = self->p_playlist->p_input;
- exception=mediacontrol_exception_init(exception);
+ exception = mediacontrol_exception_init( exception );
- retval = (mediacontrol_Position*)malloc(sizeof(mediacontrol_Position));
- retval->origin = an_origin;
- retval->key = a_key;
-
- if (! p_input)
+ retval = ( mediacontrol_Position* )malloc( sizeof( mediacontrol_Position ) );
+ retval->origin = an_origin;
+ retval->key = a_key;
+
+ if( ! p_input )
{
- /*
- RAISE(mediacontrol_InternalException, "No input thread.");
- return(NULL);
- */
- retval->value = 0;
- return retval;
+ /*
+ RAISE( mediacontrol_InternalException, "No input thread." );
+ return( NULL );
+ */
+ retval->value = 0;
+ return retval;
}
- if ( an_origin == mediacontrol_RelativePosition
- || an_origin == mediacontrol_ModuloPosition )
+ if( an_origin == mediacontrol_RelativePosition
+ || an_origin == mediacontrol_ModuloPosition )
{
- /* Relative or ModuloPosition make no sense */
- retval->value = 0;
- return retval;
+ /* Relative or ModuloPosition make no sense */
+ retval->value = 0;
+ return retval;
}
- /* We are asked for an AbsolutePosition. */
- vlc_mutex_lock( &p_input->stream.stream_lock );
- l_offset = p_input->stream.p_selected_area->i_tell;
- vlc_mutex_unlock( &p_input->stream.stream_lock );
+ /* We are asked for an AbsolutePosition. */
+ val.i_time = 0;
+ var_Get( p_input, "time", &val );
+ /* FIXME: check val.i_time > 0 */
- retval->value = mediacontrol_unit_convert(p_input,
- mediacontrol_ByteCount,
- a_key,
- l_offset);
- return retval;
+ retval->value = mediacontrol_unit_convert( p_input,
+ mediacontrol_MediaTime,
+ a_key,
+ val.i_time / 1000 );
+ return retval;
}
/* Sets the media position */
void
-mediacontrol_set_media_position(mediacontrol_Instance *self,
- const mediacontrol_Position * a_position,
- mediacontrol_Exception *exception)
+mediacontrol_set_media_position( mediacontrol_Instance *self,
+ const mediacontrol_Position * a_position,
+ mediacontrol_Exception *exception )
{
- off_t l_offset_destination = 0;
- int i_whence = 0;
+ vlc_value_t val;
input_thread_t * p_input = self->p_playlist->p_input;
- exception=mediacontrol_exception_init(exception);
- if (! p_input)
+ exception=mediacontrol_exception_init( exception );
+ if( ! p_input )
{
- RAISE(mediacontrol_InternalException, "No input thread.");
+ RAISE( mediacontrol_InternalException, "No input thread." );
return;
}
- if ( !p_input->stream.b_seekable )
+ if( !var_GetBool( p_input, "seekable" ) )
{
- RAISE(mediacontrol_InvalidPosition, "Stream not seekable");
+ RAISE( mediacontrol_InvalidPosition, "Stream not seekable" );
return;
}
- /* FIXME FIXME FIXME input_Seek is deprecated, and I don't know how to fix that --fenrir */
- /* You need to do a var_SetFloat( p_input, pos ); where pos is a float between 0.0 and 1.0 */
- RAISE(mediacontrol_InvalidPosition, "mediacontrol_set_media_position is not usable for now");
- return
-#if 0
- l_offset_destination = a_position->value;
-
- i_whence |= INPUT_SEEK_BYTES;
- l_offset_destination = mediacontrol_unit_convert(p_input,
- a_position->key,
- mediacontrol_ByteCount,
- l_offset_destination);
-
- switch ( a_position->origin)
- {
- case mediacontrol_RelativePosition:
- i_whence |= INPUT_SEEK_CUR;
- break;
- case mediacontrol_ModuloPosition:
- i_whence |= INPUT_SEEK_END;
- break;
- case mediacontrol_AbsolutePosition:
- i_whence |= INPUT_SEEK_SET;
- break;
- default:
- i_whence |= INPUT_SEEK_SET;
- break;
- }
-
- /* Now we can set the position. The lock is taken in the input_Seek
- function (cf input_ext-intf.c) */
- input_Seek (p_input, l_offset_destination, i_whence);
- return;
-#endif
+ val.i_time = mediacontrol_position2microsecond( p_input, a_position );
+ var_Set( p_input, "time", val );
+ return;
}
/* Starts playing a stream */
void
-mediacontrol_start(mediacontrol_Instance *self,
- const mediacontrol_Position * a_position,
- mediacontrol_Exception *exception)
+mediacontrol_start( mediacontrol_Instance *self,
+ const mediacontrol_Position * a_position,
+ mediacontrol_Exception *exception )
{
- playlist_t * p_playlist = self->p_playlist;
+ playlist_t * p_playlist = self->p_playlist;
- exception=mediacontrol_exception_init(exception);
- if (! p_playlist)
+ exception = mediacontrol_exception_init( exception );
+ if( ! p_playlist )
{
- RAISE(mediacontrol_PlaylistException, "No available playlist");
- return;
+ RAISE( mediacontrol_PlaylistException, "No available playlist" );
+ return;
}
- vlc_mutex_lock( &p_playlist->object_lock );
- if (p_playlist->i_size)
+ vlc_mutex_lock( &p_playlist->object_lock );
+ if( p_playlist->i_size )
{
- vlc_value_t val;
+ vlc_value_t val;
- vlc_mutex_unlock( &p_playlist->object_lock );
+ vlc_mutex_unlock( &p_playlist->object_lock );
- /* Set start time */
- val.i_int = mediacontrol_position2microsecond(p_playlist->p_input, a_position) / 1000000;
- var_Set (p_playlist, "start-time", val);
+ /* Set start time */
+ val.i_int = mediacontrol_position2microsecond( p_playlist->p_input, a_position ) / 1000000;
+ var_Set( p_playlist, "start-time", val );
- playlist_Play( p_playlist );
+ playlist_Play( p_playlist );
}
else
{
- RAISE(mediacontrol_PlaylistException, "Empty playlist.");
- vlc_mutex_unlock( &p_playlist->object_lock );
- return;
+ RAISE( mediacontrol_PlaylistException, "Empty playlist." );
+ vlc_mutex_unlock( &p_playlist->object_lock );
+ return;
}
- return;
+ return;
}
void
-mediacontrol_pause(mediacontrol_Instance *self,
- const mediacontrol_Position * a_position,
- mediacontrol_Exception *exception)
+mediacontrol_pause( mediacontrol_Instance *self,
+ const mediacontrol_Position * a_position,
+ mediacontrol_Exception *exception )
{
input_thread_t *p_input = self->p_playlist->p_input;;
/* FIXME: use the a_position parameter */
- exception=mediacontrol_exception_init(exception);
- if (p_input != NULL)
+ exception=mediacontrol_exception_init( exception );
+ if( p_input != NULL )
{
var_SetInteger( p_input, "state", PAUSE_S );
}
else
{
- RAISE(mediacontrol_InternalException, "No input");
+ RAISE( mediacontrol_InternalException, "No input" );
}
+
+ return;
}
void
-mediacontrol_resume(mediacontrol_Instance *self,
- const mediacontrol_Position * a_position,
- mediacontrol_Exception *exception)
+mediacontrol_resume( mediacontrol_Instance *self,
+ const mediacontrol_Position * a_position,
+ mediacontrol_Exception *exception )
{
input_thread_t *p_input = self->p_playlist->p_input;
/* FIXME: use the a_position parameter */
- exception=mediacontrol_exception_init(exception);
- if (p_input != NULL)
+ exception=mediacontrol_exception_init( exception );
+ if( p_input != NULL )
{
var_SetInteger( p_input, "state", PAUSE_S );
}
else
{
- RAISE(mediacontrol_InternalException, "No input");
+ RAISE( mediacontrol_InternalException, "No input" );
}
}
void
-mediacontrol_stop(mediacontrol_Instance *self,
- const mediacontrol_Position * a_position,
- mediacontrol_Exception *exception)
+mediacontrol_stop( mediacontrol_Instance *self,
+ const mediacontrol_Position * a_position,
+ mediacontrol_Exception *exception )
{
- /* FIXME: use the a_position parameter */
- exception=mediacontrol_exception_init(exception);
- if (!self->p_playlist)
+ /* FIXME: use the a_position parameter */
+ exception=mediacontrol_exception_init( exception );
+ if( !self->p_playlist )
{
- RAISE(mediacontrol_PlaylistException, "No playlist");
- return;
+ RAISE( mediacontrol_PlaylistException, "No playlist" );
+ return;
}
- playlist_Stop( self->p_playlist );
+ playlist_Stop( self->p_playlist );
+}
- return;
+void
+mediacontrol_playlist_add_item( mediacontrol_Instance *self,
+ const char * psz_file,
+ mediacontrol_Exception *exception )
+{
+ exception=mediacontrol_exception_init( exception );
+ if( !self->p_playlist )
+ {
+ RAISE( mediacontrol_InternalException, "No playlist" );
+ return;
+ }
+
+ playlist_Add( self->p_playlist, psz_file, psz_file , PLAYLIST_REPLACE, 0 );
}
void
-mediacontrol_playlist_add_item(mediacontrol_Instance *self,
- const char * psz_file,
- mediacontrol_Exception *exception)
+mediacontrol_playlist_clear( mediacontrol_Instance *self,
+ mediacontrol_Exception *exception )
{
- exception=mediacontrol_exception_init(exception);
- if (!self->p_playlist)
+ exception=mediacontrol_exception_init( exception );
+ if( !self->p_playlist )
{
- RAISE(mediacontrol_InternalException, "No playlist");
- return;
+ RAISE( mediacontrol_PlaylistException, "No playlist" );
+ return;
}
- playlist_Add (self->p_playlist, psz_file, psz_file , PLAYLIST_REPLACE, 0);
+ playlist_Clear( self->p_playlist );
- return;
+ return;
}
-void
-mediacontrol_playlist_clear(mediacontrol_Instance *self,
- mediacontrol_Exception *exception)
+mediacontrol_PlaylistSeq *
+mediacontrol_playlist_get_list( mediacontrol_Instance *self,
+ mediacontrol_Exception *exception )
{
- int i_index;
+ mediacontrol_PlaylistSeq *retval;
+ int i_index;
+ playlist_t * p_playlist = self->p_playlist;;
+ int i_playlist_size;
- exception=mediacontrol_exception_init(exception);
- if (!self->p_playlist)
+ exception=mediacontrol_exception_init( exception );
+ if( !p_playlist )
{
- RAISE(mediacontrol_PlaylistException, "No playlist");
- return;
+ RAISE( mediacontrol_PlaylistException, "No playlist" );
+ return NULL;
}
- for (i_index = 0 ; i_index < self->p_playlist->i_size ; i_index++)
+ vlc_mutex_lock( &p_playlist->object_lock );
+ i_playlist_size = p_playlist->i_size;
+
+ retval = mediacontrol_PlaylistSeq__alloc( i_playlist_size );
+
+ for( i_index = 0 ; i_index < i_playlist_size ; i_index++ )
{
- playlist_Delete (self->p_playlist, i_index);
+ retval->data[i_index] = strdup( p_playlist->pp_items[i_index]->input.psz_uri );
}
-
- return;
-}
+ vlc_mutex_unlock( &p_playlist->object_lock );
-mediacontrol_PlaylistSeq *
-mediacontrol_playlist_get_list(mediacontrol_Instance *self,
- mediacontrol_Exception *exception)
-{
- mediacontrol_PlaylistSeq *retval;
- int i_index;
- playlist_t * p_playlist = self->p_playlist;;
- int i_playlist_size;
-
- exception=mediacontrol_exception_init(exception);
- if (!p_playlist)
- {
- RAISE(mediacontrol_PlaylistException, "No playlist");
- return NULL;
- }
-
- vlc_mutex_lock( &p_playlist->object_lock );
- i_playlist_size = p_playlist->i_size;
-
- retval = mediacontrol_PlaylistSeq__alloc(i_playlist_size);
-
- for (i_index = 0 ; i_index < i_playlist_size ; i_index++)
- {
- retval->data[i_index] = strdup (p_playlist->pp_items[i_index]->input.psz_uri);
- }
- vlc_mutex_unlock( &p_playlist->object_lock );
-
- return retval;
+ return retval;
}
mediacontrol_RGBPicture*
-_mediacontrol_createRGBPicture (int i_width, int i_height, long i_chroma, long long l_date,
- char* p_data, int i_datasize)
+_mediacontrol_createRGBPicture( int i_width, int i_height, long i_chroma, long long l_date,
+ char* p_data, int i_datasize )
{
- mediacontrol_RGBPicture *retval;
-
- retval = mediacontrol_RGBPicture__alloc (i_datasize);
- if (retval)
- {
- retval->width = i_width;
- retval->height = i_height;
- retval->type = i_chroma;
- retval->date = l_date;
- retval->size = i_datasize;
- memcpy (retval->data, p_data, i_datasize);
- }
- return retval;
+ mediacontrol_RGBPicture *retval;
+
+ retval = mediacontrol_RGBPicture__alloc( i_datasize );
+ if( retval )
+ {
+ retval->width = i_width;
+ retval->height = i_height;
+ retval->type = i_chroma;
+ retval->date = l_date;
+ retval->size = i_datasize;
+ memcpy( retval->data, p_data, i_datasize );
+ }
+ return retval;
}
mediacontrol_RGBPicture *
-mediacontrol_snapshot(mediacontrol_Instance *self,
- const mediacontrol_Position * a_position,
- mediacontrol_Exception *exception)
+mediacontrol_snapshot( mediacontrol_Instance *self,
+ const mediacontrol_Position * a_position,
+ mediacontrol_Exception *exception )
{
- mediacontrol_RGBPicture *retval = NULL;
- input_thread_t* p_input = self->p_playlist->p_input;
- vout_thread_t *p_vout = NULL;
- int i_datasize;
- snapshot_t **pointer;
- vlc_value_t val;
- int i_index;
- snapshot_t *p_best_snapshot;
- long searched_date;
+ mediacontrol_RGBPicture *retval = NULL;
+ input_thread_t* p_input = self->p_playlist->p_input;
+ vout_thread_t *p_vout = NULL;
+ int i_datasize;
+ snapshot_t **pointer;
+ vlc_value_t val;
+ int i_index;
+ snapshot_t *p_best_snapshot;
+ long searched_date;
#ifdef HAS_SNAPSHOT
- int i_cachesize;
+ int i_cachesize;
#endif
- exception=mediacontrol_exception_init(exception);
-
- /*
- if (var_Get (self->p_vlc, "snapshot-id", &val) == VLC_SUCCESS)
- p_vout = vlc_object_get (self->p_vlc, val.i_int);
- */
-
- /* FIXME: if in p_libvlc, we cannot have multiple video outputs */
- /* Once corrected, search for snapshot-id to modify all instances */
- if (var_Get (p_input, "snapshot-id", &val) != VLC_SUCCESS)
- {
- RAISE(mediacontrol_InternalException, "No snapshot-id in p_input");
- return NULL;
- }
- p_vout = vlc_object_get (self->p_vlc, val.i_int);
-
- if (! p_vout)
- {
- RAISE(mediacontrol_InternalException, "No snapshot module");
- return NULL;
- }
-
-#ifdef HAS_SNAPSHOT
- /* We test if the vout is a snapshot module. We cannot test
- pvout_psz_object_name (which is NULL). But we can check if
- there are snapshot-specific variables */
- if (var_Get( p_vout, "snapshot-datasize", &val ) != VLC_SUCCESS)
- {
- RAISE(mediacontrol_InternalException, "No snapshot module");
- vlc_object_release(p_vout);
- return NULL;
- }
- i_datasize = val.i_int;
-
- /* Handle the a_position parameter */
- if (! (a_position->origin == mediacontrol_RelativePosition
- && a_position->value == 0))
- {
- /* The position is not the current one. Go to it. */
- mediacontrol_set_media_position (self, (mediacontrol_Position*)a_position, exception);
- if (exception->code)
- {
- vlc_object_release(p_vout);
- return NULL;
- }
- }
-
- /* FIXME: We should not go further until we got past the position
- (which means that we had the possibility to capture the right
- picture). */
-
- vlc_mutex_lock( &p_vout->picture_lock );
-
- searched_date = mediacontrol_position2microsecond (p_input,
- (mediacontrol_Position *)a_position);
-
- var_Get( p_vout, "snapshot-cache-size", &val );
- i_cachesize = val.i_int ;
-
- var_Get( p_vout, "snapshot-list-pointer", &val );
- pointer = (snapshot_t **)val.p_address;
-
- if (! pointer)
- {
- RAISE(mediacontrol_InternalException, "No available snapshot");
-
- vlc_mutex_unlock( &p_vout->picture_lock );
- vlc_object_release( p_vout );
- return NULL;
- }
-
- /* Find the more appropriate picture, based on date */
- p_best_snapshot = pointer[0];
-
- for (i_index = 1 ; i_index < i_cachesize ; i_index++)
- {
- long l_diff = pointer[i_index]->date - searched_date;
- if (l_diff > 0 && l_diff < abs(p_best_snapshot->date - searched_date))
- {
- /* This one is closer, and _after_ the requested position */
- p_best_snapshot = pointer[i_index];
- }
- }
-
- /* FIXME: add a test for the case that no picture matched the test
- (we have p_best_snapshot == pointer[0] */
- retval = _mediacontrol_createRGBPicture (p_best_snapshot->i_width,
- p_best_snapshot->i_height,
- p_vout->output.i_chroma,
- p_best_snapshot->date,
- p_best_snapshot->p_data,
- i_datasize);
-
- vlc_mutex_unlock( &p_vout->picture_lock );
- vlc_object_release( p_vout );
+ exception=mediacontrol_exception_init( exception );
+
+ /*
+ if( var_Get( self->p_vlc, "snapshot-id", &val ) == VLC_SUCCESS )
+ p_vout = vlc_object_get( self->p_vlc, val.i_int );
+ */
+
+ /* FIXME: if in p_libvlc, we cannot have multiple video outputs */
+ /* Once corrected, search for snapshot-id to modify all instances */
+ if( var_Get( p_input, "snapshot-id", &val ) != VLC_SUCCESS )
+ {
+ RAISE( mediacontrol_InternalException, "No snapshot-id in p_input" );
+ return NULL;
+ }
+ p_vout = vlc_object_get( self->p_vlc, val.i_int );
+
+ if( ! p_vout )
+ {
+ RAISE( mediacontrol_InternalException, "No snapshot module" );
+ return NULL;
+ }
+
+#ifdef HAS_SNAPSHOT
+ /* We test if the vout is a snapshot module. We cannot test
+ pvout_psz_object_name( which is NULL ). But we can check if
+ there are snapshot-specific variables */
+ if( var_Get( p_vout, "snapshot-datasize", &val ) != VLC_SUCCESS )
+ {
+ RAISE( mediacontrol_InternalException, "No snapshot module" );
+ vlc_object_release( p_vout );
+ return NULL;
+ }
+ i_datasize = val.i_int;
+
+ /* Handle the a_position parameter */
+ if( ! ( a_position->origin == mediacontrol_RelativePosition
+ && a_position->value == 0 ) )
+ {
+ /* The position is not the current one. Go to it. */
+ mediacontrol_set_media_position( self,
+ ( mediacontrol_Position* ) a_position,
+ exception );
+ if( exception->code )
+ {
+ vlc_object_release( p_vout );
+ return NULL;
+ }
+ }
+
+ /* FIXME: We should not go further until we got past the position
+ ( which means that we had the possibility to capture the right
+ picture ). */
+
+ vlc_mutex_lock( &p_vout->picture_lock );
+
+ searched_date = mediacontrol_position2microsecond( p_input,
+ ( mediacontrol_Position * ) a_position );
+
+ var_Get( p_vout, "snapshot-cache-size", &val );
+ i_cachesize = val.i_int ;
+
+ var_Get( p_vout, "snapshot-list-pointer", &val );
+ pointer = ( snapshot_t ** )val.p_address;
+
+ if( ! pointer )
+ {
+ RAISE( mediacontrol_InternalException, "No available snapshot" );
+
+ vlc_mutex_unlock( &p_vout->picture_lock );
+ vlc_object_release( p_vout );
+ return NULL;
+ }
+
+ /* Find the more appropriate picture, based on date */
+ p_best_snapshot = pointer[0];
+
+ for( i_index = 1 ; i_index < i_cachesize ; i_index++ )
+ {
+ long l_diff = pointer[i_index]->date - searched_date;
+ if( l_diff > 0 && l_diff < abs( p_best_snapshot->date - searched_date ))
+ {
+ /* This one is closer, and _after_ the requested position */
+ p_best_snapshot = pointer[i_index];
+ }
+ }
+
+ /* FIXME: add a test for the case that no picture matched the test
+ ( we have p_best_snapshot == pointer[0] */
+ retval = _mediacontrol_createRGBPicture( p_best_snapshot->i_width,
+ p_best_snapshot->i_height,
+ p_vout->output.i_chroma,
+ p_best_snapshot->date,
+ p_best_snapshot->p_data,
+ i_datasize );
+
+ vlc_mutex_unlock( &p_vout->picture_lock );
+ vlc_object_release( p_vout );
#endif
- return retval;
+ return retval;
}
mediacontrol_RGBPicture **
-mediacontrol_all_snapshots(mediacontrol_Instance *self,
- mediacontrol_Exception *exception)
+mediacontrol_all_snapshots( mediacontrol_Instance *self,
+ mediacontrol_Exception *exception )
{
- mediacontrol_RGBPicture **retval = NULL;
- vout_thread_t *p_vout = NULL;
- int i_datasize;
- int i_cachesize;
- vlc_value_t val;
- int i_index;
+ mediacontrol_RGBPicture **retval = NULL;
+ vout_thread_t *p_vout = NULL;
+ int i_datasize;
+ int i_cachesize;
+ vlc_value_t val;
+ int i_index;
#ifdef HAS_SNAPSHOT
- snapshot_t **pointer;
+ snapshot_t **pointer;
#endif
- exception=mediacontrol_exception_init(exception);
+ exception=mediacontrol_exception_init( exception );
- if (var_Get (self->p_playlist->p_input, "snapshot-id", &val) == VLC_SUCCESS)
- p_vout = vlc_object_get (self->p_vlc, val.i_int);
+ if( var_Get( self->p_playlist->p_input, "snapshot-id", &val ) == VLC_SUCCESS )
+ p_vout = vlc_object_get( self->p_vlc, val.i_int );
- if (! p_vout)
- {
- RAISE(mediacontrol_InternalException, "No snapshot module");
- return NULL;
- }
+ if( ! p_vout )
+ {
+ RAISE( mediacontrol_InternalException, "No snapshot module" );
+ return NULL;
+ }
#ifdef HAS_SNAPSHOT
- /* We test if the vout is a snapshot module. We cannot test
- pvout_psz_object_name (which is NULL). But we can check if
- there are snapshot-specific variables */
- if (var_Get( p_vout, "snapshot-datasize", &val ) != VLC_SUCCESS)
- {
- RAISE(mediacontrol_InternalException, "No snapshot module");
- vlc_object_release(p_vout);
- return NULL;
- }
- i_datasize = val.i_int;
-
- vlc_mutex_lock( &p_vout->picture_lock );
-
- var_Get( p_vout, "snapshot-cache-size", &val );
- i_cachesize = val.i_int ;
-
- var_Get( p_vout, "snapshot-list-pointer", &val );
- pointer = (snapshot_t **)val.p_address;
-
- if (! pointer)
- {
- RAISE(mediacontrol_InternalException, "No available picture");
-
- vlc_mutex_unlock( &p_vout->picture_lock );
- vlc_object_release( p_vout );
- return NULL;
- }
-
- retval = (mediacontrol_RGBPicture**)malloc((i_cachesize + 1) * sizeof(char*));
-
- for (i_index = 0 ; i_index < i_cachesize ; i_index++)
- {
- snapshot_t *p_s = pointer[i_index];
- mediacontrol_RGBPicture *p_rgb;
-
- p_rgb = _mediacontrol_createRGBPicture (p_s->i_width,
- p_s->i_height,
- p_vout->output.i_chroma,
- p_s->date,
- p_s->p_data,
- i_datasize);
-
- retval[i_index] = p_rgb;
- }
-
- retval[i_cachesize] = NULL;
-
- vlc_mutex_unlock( &p_vout->picture_lock );
- vlc_object_release( p_vout );
+ /* We test if the vout is a snapshot module. We cannot test
+ pvout_psz_object_name( which is NULL ). But we can check if
+ there are snapshot-specific variables */
+ if( var_Get( p_vout, "snapshot-datasize", &val ) != VLC_SUCCESS )
+ {
+ RAISE( mediacontrol_InternalException, "No snapshot module" );
+ vlc_object_release( p_vout );
+ return NULL;
+ }
+ i_datasize = val.i_int;
+
+ vlc_mutex_lock( &p_vout->picture_lock );
+
+ var_Get( p_vout, "snapshot-cache-size", &val );
+ i_cachesize = val.i_int ;
+
+ var_Get( p_vout, "snapshot-list-pointer", &val );
+ pointer = ( snapshot_t ** )val.p_address;
+
+ if( ! pointer )
+ {
+ RAISE( mediacontrol_InternalException, "No available picture" );
+
+ vlc_mutex_unlock( &p_vout->picture_lock );
+ vlc_object_release( p_vout );
+ return NULL;
+ }
+
+ retval = ( mediacontrol_RGBPicture** )malloc( (i_cachesize + 1 ) * sizeof( char* ));
+
+ for( i_index = 0 ; i_index < i_cachesize ; i_index++ )
+ {
+ snapshot_t *p_s = pointer[i_index];
+ mediacontrol_RGBPicture *p_rgb;
+
+ p_rgb = _mediacontrol_createRGBPicture( p_s->i_width,
+ p_s->i_height,
+ p_vout->output.i_chroma,
+ p_s->date,
+ p_s->p_data,
+ i_datasize );
+
+ retval[i_index] = p_rgb;
+ }
+
+ retval[i_cachesize] = NULL;
+
+ vlc_mutex_unlock( &p_vout->picture_lock );
+ vlc_object_release( p_vout );
#endif
- return retval;
+ return retval;
}
void
-mediacontrol_display_text(mediacontrol_Instance *self,
- const char * message,
- const mediacontrol_Position * begin,
- const mediacontrol_Position * end,
- mediacontrol_Exception *exception)
+mediacontrol_display_text( mediacontrol_Instance *self,
+ const char * message,
+ const mediacontrol_Position * begin,
+ const mediacontrol_Position * end,
+ mediacontrol_Exception *exception )
{
- input_thread_t *p_input = NULL;
- vout_thread_t *p_vout = NULL;
-
- p_vout = vlc_object_find( self->p_vlc, VLC_OBJECT_VOUT, FIND_ANYWHERE );
- if (! p_vout)
- {
- RAISE(mediacontrol_InternalException, "No video output");
- return;
- }
-
- if (begin->origin == mediacontrol_RelativePosition &&
- begin->value == 0 &&
- end->origin == mediacontrol_RelativePosition)
- {
- mtime_t i_duration = 0;
-
- i_duration = 1000 * mediacontrol_unit_convert(self->p_playlist->p_input,
- end->key,
- mediacontrol_MediaTime,
- end->value);
-
- vout_ShowTextRelative( p_vout, (char*)message, NULL,
- OSD_ALIGN_BOTTOM|OSD_ALIGN_LEFT, 20, 20,
- i_duration );
- }
- else
- {
- mtime_t i_debut, i_fin, i_now;
-
- p_input = self->p_playlist->p_input;
- if (! p_input)
- {
- RAISE(mediacontrol_InternalException, "No input");
- vlc_object_release(p_vout);
- return;
- }
-
- i_now = input_ClockGetTS (p_input, NULL, 0);
-
- i_debut = mediacontrol_position2microsecond (p_input, (mediacontrol_Position *) begin);
- i_debut += i_now;
-
- i_fin = mediacontrol_position2microsecond (p_input, (mediacontrol_Position *) end);
- i_fin += i_now;
-
- vout_ShowTextAbsolute( p_vout, (char*)message, NULL,
- OSD_ALIGN_BOTTOM|OSD_ALIGN_LEFT, 20, 20,
- i_debut, i_fin );
- }
-
- vlc_object_release( p_vout );
+ input_thread_t *p_input = NULL;
+ vout_thread_t *p_vout = NULL;
+
+ p_vout = vlc_object_find( self->p_playlist, VLC_OBJECT_VOUT, FIND_CHILD );
+ if( ! p_vout )
+ {
+ RAISE( mediacontrol_InternalException, "No video output" );
+ return;
+ }
+
+ if( begin->origin == mediacontrol_RelativePosition &&
+ begin->value == 0 &&
+ end->origin == mediacontrol_RelativePosition )
+ {
+ mtime_t i_duration = 0;
+
+ i_duration = 1000 * mediacontrol_unit_convert( self->p_playlist->p_input,
+ end->key,
+ mediacontrol_MediaTime,
+ end->value );
+
+ vout_ShowTextRelative( p_vout, DEFAULT_CHAN, ( char* ) message, NULL,
+ OSD_ALIGN_BOTTOM | OSD_ALIGN_LEFT, 20, 20,
+ i_duration );
+ }
+ else
+ {
+ mtime_t i_debut, i_fin, i_now;
+
+ p_input = self->p_playlist->p_input;
+ if( ! p_input )
+ {
+ RAISE( mediacontrol_InternalException, "No input" );
+ vlc_object_release( p_vout );
+ return;
+ }
+
+ /* FIXME */
+ /* i_now = input_ClockGetTS( p_input, NULL, 0 ); */
+ i_now = 0;
+
+ i_debut = mediacontrol_position2microsecond( p_input,
+ ( mediacontrol_Position* ) begin );
+ i_debut += i_now;
+
+ i_fin = mediacontrol_position2microsecond( p_input,
+ ( mediacontrol_Position * ) end );
+ i_fin += i_now;
+
+ vout_ShowTextAbsolute( p_vout, DEFAULT_CHAN, ( char* ) message, NULL,
+ OSD_ALIGN_BOTTOM | OSD_ALIGN_LEFT, 20, 20,
+ i_debut, i_fin );
+ }
+
+ vlc_object_release( p_vout );
}
mediacontrol_StreamInformation *
-mediacontrol_get_stream_information(mediacontrol_Instance *self,
- mediacontrol_PositionKey a_key,
- mediacontrol_Exception *exception)
+mediacontrol_get_stream_information( mediacontrol_Instance *self,
+ mediacontrol_PositionKey a_key,
+ mediacontrol_Exception *exception )
{
- mediacontrol_StreamInformation *retval;
- input_thread_t *p_input = self->p_playlist->p_input;
-
- retval = (mediacontrol_StreamInformation*)malloc(sizeof(mediacontrol_StreamInformation));
- if (! retval)
- {
- RAISE(mediacontrol_InternalException, "Out of memory");
- return NULL;
- }
-
- if (! p_input)
- {
- /* No p_input defined */
- retval->streamstatus = mediacontrol_UndefinedStatus;
- retval->url = strdup ("None");
- retval->position = 0;
- retval->length = 0;
- }
- else
- {
- switch (p_input->stream.control.i_status)
- {
- case UNDEF_S :
- retval->streamstatus = mediacontrol_UndefinedStatus;
- break;
- case PLAYING_S :
- retval->streamstatus = mediacontrol_PlayingStatus;
- break;
- case PAUSE_S :
- retval->streamstatus = mediacontrol_PauseStatus;
- break;
- case FORWARD_S :
- retval->streamstatus = mediacontrol_ForwardStatus;
- break;
- case BACKWARD_S :
- retval->streamstatus = mediacontrol_BackwardStatus;
- break;
- case INIT_S :
- retval->streamstatus = mediacontrol_InitStatus;
- break;
- case END_S :
- retval->streamstatus = mediacontrol_EndStatus;
- break;
- default :
- retval->streamstatus = mediacontrol_UndefinedStatus;
- break;
- }
-
- retval->url = strdup (p_input->psz_source);
-
- demux_Control(p_input, DEMUX_GET_TIME, &(retval->position));
- demux_Control(p_input, DEMUX_GET_LENGTH, &(retval->length));
- /* TIME and LENGTH are in microseconds. We want them in ms */
- retval->position /= 1000;
- retval->length /= 1000;
-
- retval->position = mediacontrol_unit_convert(p_input,
- mediacontrol_MediaTime, a_key,
- retval->position);
- retval->length = mediacontrol_unit_convert(p_input,
- mediacontrol_MediaTime, a_key,
- retval->length);
- }
- return retval;
+ mediacontrol_StreamInformation *retval;
+ input_thread_t *p_input = self->p_playlist->p_input;
+ vlc_value_t val;
+
+ retval = ( mediacontrol_StreamInformation* )malloc( sizeof( mediacontrol_StreamInformation ) );
+ if( ! retval )
+ {
+ RAISE( mediacontrol_InternalException, "Out of memory" );
+ return NULL;
+ }
+
+ if( ! p_input )
+ {
+ /* No p_input defined */
+ retval->streamstatus = mediacontrol_UndefinedStatus;
+ retval->url = strdup( "None" );
+ retval->position = 0;
+ retval->length = 0;
+ }
+ else
+ {
+ switch( var_GetInteger( p_input, "state" ) )
+ {
+ case PLAYING_S :
+ retval->streamstatus = mediacontrol_PlayingStatus;
+ break;
+ case PAUSE_S :
+ retval->streamstatus = mediacontrol_PauseStatus;
+ break;
+ case INIT_S :
+ retval->streamstatus = mediacontrol_InitStatus;
+ break;
+ case END_S :
+ retval->streamstatus = mediacontrol_EndStatus;
+ break;
+ default :
+ retval->streamstatus = mediacontrol_UndefinedStatus;
+ break;
+ }
+
+ retval->url = strdup( p_input->input.p_item->psz_uri );
+
+ /* TIME and LENGTH are in microseconds. We want them in ms */
+ var_Get( p_input, "time", &val);
+ retval->position = val.i_time / 1000;
+
+ var_Get( p_input, "length", &val);
+ retval->length = val.i_time / 1000;
+
+ retval->position = mediacontrol_unit_convert( p_input,
+ mediacontrol_MediaTime, a_key,
+ retval->position );
+ retval->length = mediacontrol_unit_convert( p_input,
+ mediacontrol_MediaTime, a_key,
+ retval->length );
+ }
+ return retval;
}
unsigned short
-mediacontrol_sound_get_volume(mediacontrol_Instance *self,
- mediacontrol_Exception *exception)
+mediacontrol_sound_get_volume( mediacontrol_Instance *self,
+ mediacontrol_Exception *exception )
{
- short retval;
- audio_volume_t i_volume;
-
- if (!self->p_intf)
- {
- RAISE(mediacontrol_InternalException, "No interface module");
- return 0;
- }
- aout_VolumeGet( self->p_intf, &i_volume );
- retval = i_volume;
- return retval;
+ short retval;
+ audio_volume_t i_volume;
+
+ if( !self->p_intf )
+ {
+ RAISE( mediacontrol_InternalException, "No interface module" );
+ return 0;
+ }
+ aout_VolumeGet( self->p_intf, &i_volume );
+ retval = i_volume;
+ return retval;
}
void
-mediacontrol_sound_set_volume(mediacontrol_Instance *self,
- const unsigned short volume,
- mediacontrol_Exception *exception)
+mediacontrol_sound_set_volume( mediacontrol_Instance *self,
+ const unsigned short volume,
+ mediacontrol_Exception *exception )
{
- if (!self->p_intf)
- {
- RAISE(mediacontrol_InternalException, "No interface module");
- return;
- }
- aout_VolumeSet( self->p_intf, (audio_volume_t)volume );
+ if( !self->p_intf )
+ {
+ RAISE( mediacontrol_InternalException, "No interface module" );
+ return;
+ }
+ aout_VolumeSet( self->p_intf,( audio_volume_t )volume );
}