X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fcontrol%2Fmediacontrol_audio_video.c;h=047f05fe4898b04c25d4713d53ca00d870fa4099;hb=d253749f68a85d8c720e66e4a0f7ad9693ba84e3;hp=212dc274be182a941bc7866538bc3137abc74973;hpb=f85de941b2b2ac1952638ff335dc315c568a431c;p=vlc diff --git a/src/control/mediacontrol_audio_video.c b/src/control/mediacontrol_audio_video.c index 212dc274be..047f05fe48 100644 --- a/src/control/mediacontrol_audio_video.c +++ b/src/control/mediacontrol_audio_video.c @@ -21,15 +21,15 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif #include "mediacontrol_internal.h" +#include "libvlc_internal.h" #include #include -#include - -#include - #include #include @@ -57,43 +57,54 @@ mediacontrol_snapshot( mediacontrol_Instance *self, { vlc_object_t* p_cache; vout_thread_t* p_vout; + input_thread_t *p_input; mediacontrol_RGBPicture *p_pic = NULL; char path[256]; snapshot_t *p_snapshot; + libvlc_exception_t ex; + libvlc_exception_init( &ex ); mediacontrol_exception_init( exception ); - p_vout = vlc_object_find( self->p_playlist, VLC_OBJECT_VOUT, FIND_CHILD ); + p_input = libvlc_get_input_thread( self->p_media_player, &ex ); + if( ! p_input ) + { + RAISE_NULL( mediacontrol_InternalException, "No input" ); + } + p_vout = vlc_object_find( p_input, VLC_OBJECT_VOUT, FIND_CHILD ); if( ! p_vout ) { RAISE_NULL( mediacontrol_InternalException, "No video output" ); } - p_cache = vlc_object_create( self->p_playlist, VLC_OBJECT_GENERIC ); + p_cache = vlc_object_create( p_input, sizeof( vlc_object_t ) ); if( p_cache == NULL ) { vlc_object_release( p_vout ); + vlc_object_release( p_input ); RAISE_NULL( mediacontrol_InternalException, "Out of memory" ); } snprintf( path, 255, "object:%d", p_cache->i_object_id ); var_SetString( p_vout, "snapshot-path", path ); var_SetString( p_vout, "snapshot-format", "png" ); - vlc_mutex_lock( &p_cache->object_lock ); + vlc_object_lock( p_cache ); vout_Control( p_vout, VOUT_SNAPSHOT ); - vlc_cond_wait( &p_cache->object_wait, &p_cache->object_lock ); + vlc_object_wait( p_cache ); vlc_object_release( p_vout ); p_snapshot = ( snapshot_t* ) p_cache->p_private; - vlc_object_destroy( p_cache ); + vlc_object_unlock( p_cache ); + vlc_object_release( p_cache ); + vlc_object_release( p_input ); if( p_snapshot ) { p_pic = private_mediacontrol_createRGBPicture( p_snapshot->i_width, - p_snapshot->i_height, - VLC_FOURCC( 'p','n','g',' ' ), - p_snapshot->date, - p_snapshot->p_data, - p_snapshot->i_datasize ); + p_snapshot->i_height, + VLC_FOURCC( 'p','n','g',' ' ), + p_snapshot->date, + p_snapshot->p_data, + p_snapshot->i_datasize ); if( !p_pic ) { free( p_snapshot->p_data ); @@ -108,15 +119,6 @@ mediacontrol_snapshot( mediacontrol_Instance *self, return p_pic; } -mediacontrol_RGBPicture ** -mediacontrol_all_snapshots( mediacontrol_Instance *self, - mediacontrol_Exception *exception ) -{ - mediacontrol_exception_init( exception ); - - RAISE_NULL( mediacontrol_InternalException, "unsupported method" ); -} - static int mediacontrol_showtext( vout_thread_t *p_vout, int i_channel, char *psz_string, text_style_t *p_style, @@ -147,10 +149,11 @@ int mediacontrol_showtext( vout_thread_t *p_vout, int i_channel, p_spu->p_region->psz_text = strdup( psz_string ); p_spu->p_region->i_align = i_flags & SUBPICTURE_ALIGN_MASK; + p_spu->p_region->p_style = p_style; p_spu->i_start = i_start; p_spu->i_stop = i_stop; - p_spu->b_ephemer = VLC_FALSE; - p_spu->b_absolute = VLC_FALSE; + p_spu->b_ephemer = false; + p_spu->b_absolute = false; p_spu->i_x = i_hmargin; p_spu->i_y = i_vmargin; @@ -170,20 +173,29 @@ mediacontrol_display_text( mediacontrol_Instance *self, const mediacontrol_Position * end, mediacontrol_Exception *exception ) { - input_thread_t *p_input = NULL; vout_thread_t *p_vout = NULL; char* psz_message; + input_thread_t *p_input; + libvlc_exception_t ex; - psz_message = strdup( message ); - if( !psz_message ) + libvlc_exception_init( &ex ); + mediacontrol_exception_init( exception ); + + p_input = libvlc_get_input_thread( self->p_media_player, &ex ); + if( ! p_input ) { - RAISE_VOID( mediacontrol_InternalException, "no more memory" ); + RAISE_VOID( mediacontrol_InternalException, "No input" ); } - - p_vout = vlc_object_find( self->p_playlist, VLC_OBJECT_VOUT, FIND_CHILD ); + p_vout = vlc_object_find( p_input, VLC_OBJECT_VOUT, FIND_CHILD ); if( ! p_vout ) { - RAISE_VOID( mediacontrol_InternalException, "no video output" ); + RAISE_VOID( mediacontrol_InternalException, "No video output" ); + } + + psz_message = strdup( message ); + if( !psz_message ) + { + RAISE_VOID( mediacontrol_InternalException, "no more memory" ); } if( begin->origin == mediacontrol_RelativePosition && @@ -194,10 +206,10 @@ mediacontrol_display_text( mediacontrol_Instance *self, mtime_t i_now = mdate(); i_duration = 1000 * private_mediacontrol_unit_convert( - self->p_playlist->p_input, - end->key, - mediacontrol_MediaTime, - end->value ); + self->p_media_player, + end->key, + mediacontrol_MediaTime, + end->value ); mediacontrol_showtext( p_vout, DEFAULT_CHAN, psz_message, NULL, OSD_ALIGN_BOTTOM | OSD_ALIGN_LEFT, 0, 0, @@ -207,22 +219,15 @@ mediacontrol_display_text( mediacontrol_Instance *self, { mtime_t i_debut, i_fin, i_now; - p_input = self->p_playlist->p_input; - if( ! p_input ) - { - vlc_object_release( p_vout ); - RAISE_VOID( mediacontrol_InternalException, "No input" ); - } - /* FIXME */ /* i_now = input_ClockGetTS( p_input, NULL, 0 ); */ i_now = mdate(); - i_debut = private_mediacontrol_position2microsecond( p_input, + i_debut = private_mediacontrol_position2microsecond( self->p_media_player, ( mediacontrol_Position* ) begin ); i_debut += i_now; - i_fin = private_mediacontrol_position2microsecond( p_input, + i_fin = private_mediacontrol_position2microsecond( self->p_media_player, ( mediacontrol_Position * ) end ); i_fin += i_now; @@ -265,7 +270,7 @@ mediacontrol_sound_set_volume( mediacontrol_Instance *self, HANDLE_LIBVLC_EXCEPTION_VOID( &ex ); } -vlc_bool_t mediacontrol_set_visual( mediacontrol_Instance *self, +int mediacontrol_set_visual( mediacontrol_Instance *self, WINDOWHANDLE visual_id, mediacontrol_Exception *exception ) { @@ -274,27 +279,22 @@ vlc_bool_t mediacontrol_set_visual( mediacontrol_Instance *self, mediacontrol_exception_init( exception ); libvlc_exception_init( &ex ); - libvlc_video_set_parent( self->p_instance, visual_id, &ex ); + libvlc_media_player_set_drawable( self->p_media_player, (libvlc_drawable_t)visual_id, &ex ); HANDLE_LIBVLC_EXCEPTION_ZERO( &ex ); - return VLC_TRUE; + return true; } int mediacontrol_get_rate( mediacontrol_Instance *self, - mediacontrol_Exception *exception ) + mediacontrol_Exception *exception ) { libvlc_exception_t ex; - libvlc_media_instance_t* p_mi; int i_ret; mediacontrol_exception_init( exception ); libvlc_exception_init( &ex ); - p_mi = libvlc_playlist_get_media_instance( self->p_instance, &ex ); - HANDLE_LIBVLC_EXCEPTION_ZERO( &ex ); - - i_ret = libvlc_media_instance_get_rate( p_mi, &ex ); - libvlc_media_instance_release( p_mi ); + i_ret = libvlc_media_player_get_rate( self->p_media_player, &ex ); HANDLE_LIBVLC_EXCEPTION_ZERO( &ex ); return i_ret / 10; @@ -302,39 +302,29 @@ mediacontrol_get_rate( mediacontrol_Instance *self, void mediacontrol_set_rate( mediacontrol_Instance *self, - const int rate, - mediacontrol_Exception *exception ) + const int rate, + mediacontrol_Exception *exception ) { libvlc_exception_t ex; - libvlc_media_instance_t* p_mi; mediacontrol_exception_init( exception ); libvlc_exception_init( &ex ); - p_mi = libvlc_playlist_get_media_instance( self->p_instance, &ex ); - HANDLE_LIBVLC_EXCEPTION_VOID( &ex ); - - libvlc_media_instance_set_rate( p_mi, rate * 10, &ex ); - libvlc_media_instance_release( p_mi ); + libvlc_media_player_set_rate( self->p_media_player, rate * 10, &ex ); HANDLE_LIBVLC_EXCEPTION_VOID( &ex ); } int mediacontrol_get_fullscreen( mediacontrol_Instance *self, - mediacontrol_Exception *exception ) + mediacontrol_Exception *exception ) { libvlc_exception_t ex; - libvlc_media_instance_t* p_mi; int i_ret; mediacontrol_exception_init( exception ); libvlc_exception_init( &ex ); - p_mi = libvlc_playlist_get_media_instance( self->p_instance, &ex ); - HANDLE_LIBVLC_EXCEPTION_ZERO( &ex ); - - i_ret = libvlc_get_fullscreen( p_mi, &ex ); - libvlc_media_instance_release( p_mi ); + i_ret = libvlc_get_fullscreen( self->p_media_player, &ex ); HANDLE_LIBVLC_EXCEPTION_ZERO( &ex ); return i_ret; @@ -342,19 +332,14 @@ mediacontrol_get_fullscreen( mediacontrol_Instance *self, void mediacontrol_set_fullscreen( mediacontrol_Instance *self, - const int b_fullscreen, - mediacontrol_Exception *exception ) + const int b_fullscreen, + mediacontrol_Exception *exception ) { libvlc_exception_t ex; - libvlc_media_instance_t* p_mi; mediacontrol_exception_init( exception ); libvlc_exception_init( &ex ); - p_mi = libvlc_playlist_get_media_instance( self->p_instance, &ex ); - HANDLE_LIBVLC_EXCEPTION_VOID( &ex ); - - libvlc_set_fullscreen( p_mi, b_fullscreen, &ex ); - libvlc_media_instance_release( p_mi ); + libvlc_set_fullscreen( self->p_media_player, b_fullscreen, &ex ); HANDLE_LIBVLC_EXCEPTION_VOID( &ex ); }