From 3d59250af9b2c5435238dc8edec7c0fdc9429939 Mon Sep 17 00:00:00 2001 From: Sebastien Escudier Date: Fri, 4 Jul 2008 15:04:23 +0200 Subject: [PATCH] Add vod in libvlc_vlm Signed-off-by: Antoine Cellerier --- include/vlc/libvlc_vlm.h | 30 ++++++++++++++++++++++-- src/control/vlm.c | 50 ++++++++++++++++++++++++++++++++++++++++ src/libvlc.sym | 2 ++ 3 files changed, 80 insertions(+), 2 deletions(-) diff --git a/include/vlc/libvlc_vlm.h b/include/vlc/libvlc_vlm.h index a999ff8540..0185022782 100644 --- a/include/vlc/libvlc_vlm.h +++ b/include/vlc/libvlc_vlm.h @@ -38,7 +38,7 @@ extern "C" { * @{ */ - + /** * Release the vlm instance related to the given libvlc_instance_t * @@ -46,7 +46,7 @@ extern "C" { * \param p_e an initialized exception pointer */ VLC_PUBLIC_API void libvlc_vlm_release( libvlc_instance_t *, libvlc_exception_t * ); - + /** * Add a broadcast, with one input. * @@ -63,6 +63,21 @@ VLC_PUBLIC_API void libvlc_vlm_release( libvlc_instance_t *, libvlc_exception_t VLC_PUBLIC_API void libvlc_vlm_add_broadcast( libvlc_instance_t *, char *, char *, char* , int, char **, int, int, libvlc_exception_t * ); +/** + * Add a vod, with one input. + * + * \param p_instance the instance + * \param psz_name the name of the new vod media + * \param psz_input the input MRL + * \param i_options number of additional options + * \param ppsz_options additional options + * \param b_enabled boolean for enabling the new vod + * \param the muxer of the vod media + * \param p_e an initialized exception pointer + */ +VLC_PUBLIC_API void libvlc_vlm_add_vod( libvlc_instance_t *, char *, char *, int, char **, + int, char *, libvlc_exception_t * ); + /** * Delete a media (VOD or broadcast). * @@ -127,6 +142,17 @@ VLC_PUBLIC_API void libvlc_vlm_add_input( libvlc_instance_t *, char *, char *, VLC_PUBLIC_API void libvlc_vlm_set_loop( libvlc_instance_t *, char *, int, libvlc_exception_t *); +/** + * Set a media's vod muxer. + * + * \param p_instance the instance + * \param psz_name the media to work on + * \param the new muxer + * \param p_e an initialized exception pointer + */ +VLC_PUBLIC_API void libvlc_vlm_set_mux( libvlc_instance_t *p_instance, char *psz_name, + char *psz_mux, libvlc_exception_t *p_exception ); + /** * Edit the parameters of a media. This will delete all existing inputs and * add the specified one. diff --git a/src/control/vlm.c b/src/control/vlm.c index 968ba691d5..5fe546825d 100644 --- a/src/control/vlm.c +++ b/src/control/vlm.c @@ -211,6 +211,40 @@ void libvlc_vlm_add_broadcast( libvlc_instance_t *p_instance, char *psz_name, #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 ) { @@ -281,6 +315,22 @@ void libvlc_vlm_set_loop( libvlc_instance_t *p_instance, char *psz_name, #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 ) { diff --git a/src/libvlc.sym b/src/libvlc.sym index f3b8eb15d7..ce03edd0c0 100644 --- a/src/libvlc.sym +++ b/src/libvlc.sym @@ -184,6 +184,7 @@ libvlc_video_set_teletext libvlc_video_set_viewport libvlc_video_take_snapshot libvlc_vlm_add_broadcast +libvlc_vlm_add_vod libvlc_vlm_add_input libvlc_vlm_change_media libvlc_vlm_del_media @@ -201,6 +202,7 @@ libvlc_vlm_seek_media libvlc_vlm_set_enabled libvlc_vlm_set_input libvlc_vlm_set_loop +libvlc_vlm_set_mux libvlc_vlm_set_output libvlc_vlm_show_media libvlc_vlm_stop_media -- 2.39.2