Add vod in libvlc_vlm
authorSebastien Escudier <sebastien-devel@celeos.eu>
Fri, 4 Jul 2008 13:04:23 +0000 (15:04 +0200)
committerAntoine Cellerier <dionoea@videolan.org>
Sun, 6 Jul 2008 15:37:23 +0000 (17:37 +0200)
Signed-off-by: Antoine Cellerier <dionoea@videolan.org>
include/vlc/libvlc_vlm.h
src/control/vlm.c
src/libvlc.sym

index a999ff8..0185022 100644 (file)
@@ -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.
index 968ba69..5fe5468 100644 (file)
@@ -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 )
 {
index f3b8eb1..ce03edd 100644 (file)
@@ -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