X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fcontrol%2Fvlm.c;h=5fe546825d670af049458395728ac823e02f64aa;hb=6903d514d3ea8113f91b1bedde862607f7efc92a;hp=a5bd67bd839506e436c24e321825eee9ac7a912c;hpb=99fab9089e9e1709d9c3a4bc5ced0c137ac59134;p=vlc diff --git a/src/control/vlm.c b/src/control/vlm.c index a5bd67bd83..5fe546825d 100644 --- a/src/control/vlm.c +++ b/src/control/vlm.c @@ -91,10 +91,12 @@ char* libvlc_vlm_show_media( libvlc_instance_t *p_instance, char *psz_name, } free( psz_message ); return(psz_response ); -#endif +#else + libvlc_exception_raise( p_exception, "VLM has been disabled in this libvlc." ); return NULL; -} #endif +} +#endif /* 0 */ static int libvlc_vlm_init( libvlc_instance_t *p_instance, libvlc_exception_t *p_exception ) @@ -102,12 +104,15 @@ static int libvlc_vlm_init( libvlc_instance_t *p_instance, #ifdef ENABLE_VLM if( !p_instance->p_vlm ) p_instance->p_vlm = vlm_New( p_instance->p_libvlc_int ); +#else + libvlc_exception_raise( p_exception, "VLM has been disabled in this libvlc." ); + return VLC_EGENERIC; #endif if( !p_instance->p_vlm ) { libvlc_exception_raise( p_exception, - "Unable to create VLM. It might be disabled." ); + "Unable to create VLM." ); return VLC_EGENERIC; } return VLC_SUCCESS; @@ -118,12 +123,64 @@ static int libvlc_vlm_init( libvlc_instance_t *p_instance, } while(0) #define VLM(p) VLM_RET(p,) +static vlm_media_instance_t *libvlc_vlm_get_media_instance( libvlc_instance_t *p_instance, + char *psz_name, int i_minstance_idx, + libvlc_exception_t *p_exception ) +{ +#ifdef ENABLE_VLM + vlm_t *p_vlm; + vlm_media_instance_t **pp_minstance; + vlm_media_instance_t *p_minstance; + int i_minstance; + int64_t id; + + VLM_RET(p_vlm, NULL); + + if( vlm_Control( p_vlm, VLM_GET_MEDIA_ID, psz_name, &id ) || + vlm_Control( p_vlm, VLM_GET_MEDIA_INSTANCES, id, &pp_minstance, &i_minstance ) ) + { + libvlc_exception_raise( p_exception, "Unable to get %s instances", psz_name ); + return NULL; + } + p_minstance = NULL; + if( i_minstance_idx >= 0 && i_minstance_idx < i_minstance ) + { + p_minstance = pp_minstance[i_minstance_idx]; + TAB_REMOVE( i_minstance, pp_minstance, p_minstance ); + } + while( i_minstance > 0 ) + vlm_media_instance_Delete( pp_minstance[--i_minstance] ); + TAB_CLEAN( i_minstance, pp_minstance ); + return p_minstance; +#else + libvlc_exception_raise( p_exception, "VLM has been disabled in this libvlc." ); + return VLC_EGENERIC; +#endif +} + + +void libvlc_vlm_release( libvlc_instance_t *p_instance, libvlc_exception_t *p_exception) +{ +#ifdef ENABLE_VLM + vlm_t *p_vlm; + + VLM(p_vlm); + + vlm_Delete( p_vlm ); +#else + libvlc_exception_raise( p_exception, "VLM has been disabled in this libvlc." ); + return VLC_EGENERIC; +#endif +} + + void libvlc_vlm_add_broadcast( libvlc_instance_t *p_instance, char *psz_name, char *psz_input, char *psz_output, int i_options, char **ppsz_options, int b_enabled, int b_loop, libvlc_exception_t *p_exception ) { +#ifdef ENABLE_VLM vlm_t *p_vlm; vlm_media_t m; int n; @@ -133,7 +190,7 @@ void libvlc_vlm_add_broadcast( libvlc_instance_t *p_instance, char *psz_name, vlm_media_Init( &m ); m.psz_name = strdup( psz_name ); m.b_enabled = b_enabled; - m.b_vod = VLC_FALSE; + m.b_vod = false; m.broadcast.b_loop = b_loop; if( psz_input ) TAB_APPEND( m.i_input, m.ppsz_input, strdup(psz_input) ); @@ -148,11 +205,50 @@ void libvlc_vlm_add_broadcast( libvlc_instance_t *p_instance, char *psz_name, libvlc_exception_raise( p_exception, "Media %s creation failed", psz_name ); } vlm_media_Clean( &m ); +#else + libvlc_exception_raise( p_exception, "VLM has been disabled in this libvlc." ); + return VLC_EGENERIC; +#endif +} + +void libvlc_vlm_add_vod( libvlc_instance_t *p_instance, char *psz_name, + char *psz_input, int i_options, + char **ppsz_options, int b_enabled, + char *psz_mux, libvlc_exception_t *p_exception ) +{ +#ifdef ENABLE_VLM + vlm_t *p_vlm; + vlm_media_t m; + int n; + + VLM(p_vlm); + + vlm_media_Init( &m ); + m.psz_name = strdup( psz_name ); + m.b_enabled = b_enabled; + m.b_vod = true; + m.vod.psz_mux = psz_mux ? strdup( psz_mux ) : NULL; + if( psz_input ) + TAB_APPEND( m.i_input, m.ppsz_input, strdup(psz_input) ); + for( n = 0; n < i_options; n++ ) + TAB_APPEND( m.i_option, m.ppsz_option, strdup(ppsz_options[n]) ); + + if( vlm_Control( p_vlm, VLM_ADD_MEDIA, &m, NULL ) ) + { + vlm_media_Clean( &m ); + libvlc_exception_raise( p_exception, "Media %s creation failed", psz_name ); + } + vlm_media_Clean( &m ); +#else + libvlc_exception_raise( p_exception, "VLM has been disabled in this libvlc." ); + return VLC_EGENERIC; +#endif } void libvlc_vlm_del_media( libvlc_instance_t *p_instance, char *psz_name, libvlc_exception_t *p_exception ) { +#ifdef ENABLE_VLM vlm_t *p_vlm; int64_t id; @@ -163,6 +259,10 @@ void libvlc_vlm_del_media( libvlc_instance_t *p_instance, char *psz_name, { libvlc_exception_raise( p_exception, "Unable to delete %s", psz_name ); } +#else + libvlc_exception_raise( p_exception, "VLM has been disabled in this libvlc." ); + return VLC_EGENERIC; +#endif } #define VLM_CHANGE(psz_error, code ) do { \ @@ -192,44 +292,85 @@ void libvlc_vlm_del_media( libvlc_instance_t *p_instance, char *psz_name, void libvlc_vlm_set_enabled( libvlc_instance_t *p_instance, char *psz_name, int b_enabled, libvlc_exception_t *p_exception ) { +#ifdef ENABLE_VLM #define VLM_CHANGE_CODE { p_media->b_enabled = b_enabled; } VLM_CHANGE( "Unable to delete %s", VLM_CHANGE_CODE ); #undef VLM_CHANGE_CODE +#else + libvlc_exception_raise( p_exception, "VLM has been disabled in this libvlc." ); + return VLC_EGENERIC; +#endif } void libvlc_vlm_set_loop( libvlc_instance_t *p_instance, char *psz_name, int b_loop, libvlc_exception_t *p_exception ) { +#ifdef ENABLE_VLM #define VLM_CHANGE_CODE { p_media->broadcast.b_loop = b_loop; } VLM_CHANGE( "Unable to change %s loop property", VLM_CHANGE_CODE ); #undef VLM_CHANGE_CODE +#else + libvlc_exception_raise( p_exception, "VLM has been disabled in this libvlc." ); + return VLC_EGENERIC; +#endif +} + +void libvlc_vlm_set_mux( libvlc_instance_t *p_instance, char *psz_name, + char *psz_mux, libvlc_exception_t *p_exception ) +{ +#ifdef ENABLE_VLM +#define VLM_CHANGE_CODE { if( p_media->b_vod ) { \ + free( p_media->vod.psz_mux ); \ + p_media->vod.psz_mux = psz_mux ? strdup( psz_mux ) : NULL; \ + } } + VLM_CHANGE( "Unable to change %s mux property", VLM_CHANGE_CODE ); +#undef VLM_CHANGE_CODE +#else + libvlc_exception_raise( p_exception, "VLM has been disabled in this libvlc." ); + return VLC_EGENERIC; +#endif } void libvlc_vlm_set_output( libvlc_instance_t *p_instance, char *psz_name, char *psz_output, libvlc_exception_t *p_exception ) { -#define VLM_CHANGE_CODE { if( p_media->psz_output ) free( p_media->psz_output ); \ +#ifdef ENABLE_VLM +#define VLM_CHANGE_CODE { free( p_media->psz_output ); \ p_media->psz_output = strdup( psz_output ); } VLM_CHANGE( "Unable to change %s output property", VLM_CHANGE_CODE ); #undef VLM_CHANGE_CODE +#else + libvlc_exception_raise( p_exception, "VLM has been disabled in this libvlc." ); + return VLC_EGENERIC; +#endif } void libvlc_vlm_set_input( libvlc_instance_t *p_instance, char *psz_name, char *psz_input, libvlc_exception_t *p_exception ) { +#ifdef ENABLE_VLM #define VLM_CHANGE_CODE { while( p_media->i_input > 0 ) \ free( p_media->ppsz_input[--p_media->i_input] );\ TAB_APPEND( p_media->i_input, p_media->ppsz_input, strdup(psz_input) ); } VLM_CHANGE( "Unable to change %s input property", VLM_CHANGE_CODE ); #undef VLM_CHANGE_CODE +#else + libvlc_exception_raise( p_exception, "VLM has been disabled in this libvlc." ); + return VLC_EGENERIC; +#endif } void libvlc_vlm_add_input( libvlc_instance_t *p_instance, char *psz_name, char *psz_input, libvlc_exception_t *p_exception ) { +#ifdef ENABLE_VLM #define VLM_CHANGE_CODE { TAB_APPEND( p_media->i_input, p_media->ppsz_input, strdup(psz_input) ); } VLM_CHANGE( "Unable to change %s input property", VLM_CHANGE_CODE ); #undef VLM_CHANGE_CODE +#else + libvlc_exception_raise( p_exception, "VLM has been disabled in this libvlc." ); + return VLC_EGENERIC; +#endif } void libvlc_vlm_change_media( libvlc_instance_t *p_instance, char *psz_name, @@ -237,6 +378,7 @@ void libvlc_vlm_change_media( libvlc_instance_t *p_instance, char *psz_name, char **ppsz_options, int b_enabled, int b_loop, libvlc_exception_t *p_exception ) { +#ifdef ENABLE_VLM #define VLM_CHANGE_CODE { int n; \ p_media->b_enabled = b_enabled; \ p_media->broadcast.b_loop = b_loop; \ @@ -244,8 +386,7 @@ void libvlc_vlm_change_media( libvlc_instance_t *p_instance, char *psz_name, free( p_media->ppsz_input[--p_media->i_input] ); \ if( psz_input ) \ TAB_APPEND( p_media->i_input, p_media->ppsz_input, strdup(psz_input) ); \ - if( p_media->psz_output ) \ - free( p_media->psz_output ); \ + free( p_media->psz_output ); \ p_media->psz_output = psz_output ? strdup( psz_output ) : NULL; \ while( p_media->i_option > 0 ) \ free( p_media->ppsz_option[--p_media->i_option] ); \ @@ -254,11 +395,16 @@ void libvlc_vlm_change_media( libvlc_instance_t *p_instance, char *psz_name, } VLM_CHANGE( "Unable to change %s properties", VLM_CHANGE_CODE ); #undef VLM_CHANGE_CODE +#else + libvlc_exception_raise( p_exception, "VLM has been disabled in this libvlc." ); + return VLC_EGENERIC; +#endif } void libvlc_vlm_play_media( libvlc_instance_t *p_instance, char *psz_name, libvlc_exception_t *p_exception ) { +#ifdef ENABLE_VLM vlm_t *p_vlm; int64_t id; @@ -269,11 +415,16 @@ void libvlc_vlm_play_media( libvlc_instance_t *p_instance, char *psz_name, { libvlc_exception_raise( p_exception, "Unable to play %s", psz_name ); } +#else + libvlc_exception_raise( p_exception, "VLM has been disabled in this libvlc." ); + return VLC_EGENERIC; +#endif } void libvlc_vlm_stop_media( libvlc_instance_t *p_instance, char *psz_name, libvlc_exception_t *p_exception ) { +#ifdef ENABLE_VLM vlm_t *p_vlm; int64_t id; @@ -284,11 +435,16 @@ void libvlc_vlm_stop_media( libvlc_instance_t *p_instance, char *psz_name, { libvlc_exception_raise( p_exception, "Unable to stop %s", psz_name ); } +#else + libvlc_exception_raise( p_exception, "VLM has been disabled in this libvlc." ); + return VLC_EGENERIC; +#endif } void libvlc_vlm_pause_media( libvlc_instance_t *p_instance, char *psz_name, libvlc_exception_t *p_exception ) { +#ifdef ENABLE_VLM vlm_t *p_vlm; int64_t id; @@ -299,11 +455,16 @@ void libvlc_vlm_pause_media( libvlc_instance_t *p_instance, char *psz_name, { libvlc_exception_raise( p_exception, "Unable to pause %s", psz_name ); } +#else + libvlc_exception_raise( p_exception, "VLM has been disabled in this libvlc." ); + return VLC_EGENERIC; +#endif } void libvlc_vlm_seek_media( libvlc_instance_t *p_instance, char *psz_name, float f_percentage, libvlc_exception_t *p_exception ) { +#ifdef ENABLE_VLM vlm_t *p_vlm; int64_t id; @@ -314,40 +475,14 @@ void libvlc_vlm_seek_media( libvlc_instance_t *p_instance, char *psz_name, { libvlc_exception_raise( p_exception, "Unable to seek %s to %f", psz_name, f_percentage ); } -} - -static vlm_media_instance_t *libvlc_vlm_get_media_instance( libvlc_instance_t *p_instance, - char *psz_name, int i_minstance_idx, - libvlc_exception_t *p_exception ) -{ - vlm_t *p_vlm; - vlm_media_instance_t **pp_minstance; - vlm_media_instance_t *p_minstance; - int i_minstance; - int64_t id; - - VLM_RET(p_vlm, NULL); - - if( vlm_Control( p_vlm, VLM_GET_MEDIA_ID, psz_name, &id ) || - vlm_Control( p_vlm, VLM_GET_MEDIA_INSTANCES, id, &pp_minstance, &i_minstance ) ) - { - libvlc_exception_raise( p_exception, "Unable to get %s instances", psz_name ); - return NULL; - } - p_minstance = NULL; - if( i_minstance_idx >= 0 && i_minstance_idx < i_minstance ) - { - p_minstance = pp_minstance[i_minstance_idx]; - TAB_REMOVE( i_minstance, pp_minstance, p_minstance ); - } - while( i_minstance > 0 ) - vlm_media_instance_Delete( pp_minstance[--i_minstance] ); - TAB_CLEAN( i_minstance, pp_minstance ); - return p_minstance; +#else + libvlc_exception_raise( p_exception, "VLM has been disabled in this libvlc." ); + return VLC_EGENERIC; +#endif } #define LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( attr, returnType, getType, ret, code )\ -returnType libvlc_vlm_get_media_## attr( libvlc_instance_t *p_instance, \ +returnType libvlc_vlm_get_media_instance_## attr( libvlc_instance_t *p_instance, \ char *psz_name, int i_instance, libvlc_exception_t *p_exception ) \ { \ vlm_media_instance_t *p_mi = libvlc_vlm_get_media_instance( p_instance, psz_name, i_instance, \ @@ -369,13 +504,14 @@ LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( rate, int, Integer, -1, ret_value = p_mi->i_ /* FIXME extend vlm_media_instance_t to be able to implement them */ LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( title, int, Integer, 0, ret_value = 0 ); LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( chapter, int, Integer, 0, ret_value = 0 ); -LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( seekable, int, Bool, 0, ret_value = VLC_FALSE ); +LIBVLC_VLM_GET_MEDIA_ATTRIBUTE( seekable, int, Bool, 0, ret_value = false ); #undef LIBVLC_VLM_GET_MEDIA_ATTRIBUTE char* libvlc_vlm_show_media( libvlc_instance_t *p_instance, char *psz_name, libvlc_exception_t *p_exception ) { + (void)p_instance; /* FIXME is it needed ? */ libvlc_exception_raise( p_exception, "Unable to call show %s", psz_name ); return NULL;