diff --git a/include/vlc/libvlc.h b/include/vlc/libvlc.h index 339a1eb027..882f827a80 100644 --- a/include/vlc/libvlc.h +++ b/include/vlc/libvlc.h @@ -152,6 +152,16 @@ VLC_PUBLIC_API libvlc_media_descriptor_t * libvlc_media_descriptor_new( const char * psz_mrl, libvlc_exception_t *p_e ); +/** + * Create a media descriptor as an empty node with the passed name. + * \param p_instance the instance + * \param psz_name the name of the node + */ +VLC_PUBLIC_API libvlc_media_descriptor_t * libvlc_media_descriptor_new_as_node( + libvlc_instance_t *p_instance, + const char * psz_name, + libvlc_exception_t *p_e ); + /** * Add an option to the media descriptor, * This option will be used to determine how the media_instance will diff --git a/src/control/media_descriptor.c b/src/control/media_descriptor.c index 63ef82443d..0c16f78027 100644 --- a/src/control/media_descriptor.c +++ b/src/control/media_descriptor.c @@ -298,6 +298,33 @@ libvlc_media_descriptor_t * libvlc_media_descriptor_new( return p_md; } +/************************************************************************** + * Create a new media descriptor object + **************************************************************************/ +libvlc_media_descriptor_t * libvlc_media_descriptor_new_as_node( + libvlc_instance_t *p_instance, + const char * psz_name, + libvlc_exception_t *p_e ) +{ + input_item_t * p_input_item; + libvlc_media_descriptor_t * p_md; + + p_input_item = input_ItemNew( p_instance->p_libvlc_int, "vlc:nop", psz_name ); + + if (!p_input_item) + { + libvlc_exception_raise( p_e, "Can't create md's input_item" ); + return NULL; + } + + p_md = libvlc_media_descriptor_new_from_input_item( p_instance, + p_input_item, p_e ); + + p_md->p_subitems = libvlc_media_list_new( p_md->p_libvlc_instance, NULL ); + + return p_md; +} + /************************************************************************** * Add an option to the media descriptor, * that will be used to determine how the media_instance will read the