[vlc-devel] commit: Add vod in libvlc_vlm (Sebastien Escudier )
git version control
git at videolan.org
Sun Jul 6 17:37:26 CEST 2008
vlc | branch: master | Sebastien Escudier <sebastien-devel at celeos.eu> | Fri Jul 4 15:04:23 2008 +0200| [3d59250af9b2c5435238dc8edec7c0fdc9429939]
Add vod in libvlc_vlm
Signed-off-by: Antoine Cellerier <dionoea at videolan.org>
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=3d59250af9b2c5435238dc8edec7c0fdc9429939
---
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 a999ff8..0185022 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.
*
@@ -64,6 +64,21 @@ VLC_PUBLIC_API void libvlc_vlm_add_broadcast( libvlc_instance_t *, 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).
*
* \param p_instance the instance
@@ -128,6 +143,17 @@ 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 968ba69..5fe5468 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 f3b8eb1..ce03edd 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
More information about the vlc-devel
mailing list