--- /dev/null
+/*****************************************************************************
+ * vlm.c: libvlc new API VLM handling functions
+ *****************************************************************************
+ * Copyright (C) 2005 the VideoLAN team
+ * $Id: playlist.c 14265 2006-02-12 17:31:39Z zorglub $
+ *
+ * Authors: Clément Stenac <zorglub@videolan.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#include <libvlc_internal.h>
+#include <vlc/libvlc.h>
+
+#include <vlc/vlc.h>
+#include <vlc_input.h>
+#include <vlc_vlm.h>
+
+void InitVLM( libvlc_instance_t *p_instance )
+{
+ if( p_instance->p_vlm ) return;
+ p_instance->p_vlm = vlm_New( p_instance->p_vlc );
+}
+
+#define CHECK_VLM { if( !p_instance->p_vlm ) InitVLM( p_instance ); \
+ if( !p_instance->p_vlm ) {\
+ libvlc_exception_raise( p_exception, \
+ "Unable to create VLM" ); return; } }
+
+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 )
+{
+ vlm_media_t *p_media;
+ CHECK_VLM;
+
+ p_media = vlm_MediaNew( p_instance->p_vlm, psz_name, BROADCAST_TYPE );
+ if( !p_media )
+ {
+ libvlc_exception_raise( p_exception, "Media %s creation failed",
+ psz_name );
+ return;
+ }
+ libvlc_vlm_change_media( p_instance, psz_name, psz_input, psz_output,
+ i_options, ppsz_options, b_enabled, b_loop,
+ p_exception );
+
+}
+
+void libvlc_vlm_del_media( libvlc_instance_t *p_instance, char *psz_name,
+ libvlc_exception_t *p_exception )
+{
+ char *psz_message;
+ vlm_message_t *answer;
+ CHECK_VLM;
+ asprintf( &psz_message, "del %s", psz_name );
+ vlm_ExecuteCommand( p_instance->p_vlm, psz_message, &answer );
+ if( answer->psz_value )
+ {
+ libvlc_exception_raise( p_exception, "Unable to delete %s",
+ psz_name );
+ }
+ free( psz_message);
+}
+
+void libvlc_vlm_set_enabled( libvlc_instance_t *p_instance, char *psz_name,
+ int b_enabled, libvlc_exception_t *p_exception )
+{
+ vlm_media_t *p_media;
+ CHECK_VLM;
+
+ if( b_enabled != 0 ) b_enabled = 1;
+
+ p_media = vlm_MediaSearch( p_instance->p_vlm, psz_name );
+ if( !p_media )
+ {
+ libvlc_exception_raise( p_exception, "Media %s does not exist",
+ psz_name );
+ return;
+ }
+ p_media->b_enabled = b_enabled;
+}
+
+void libvlc_vlm_change_media( 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 )
+{
+ vlm_media_t *p_media;
+ CHECK_VLM;
+ if( b_enabled != 0 ) b_enabled = 1;
+ if( b_loop != 0 ) b_loop = 1;
+
+ p_media = vlm_MediaSearch( p_instance->p_vlm, psz_name );
+ if( !p_media )
+ {
+ libvlc_exception_raise( p_exception, "Media %s does not exist",
+ psz_name );
+ return;
+ }
+ p_media->b_enabled = b_enabled;
+ p_media->b_loop = b_loop;
+}