Commit 059a3399 authored by Laurent Aimar's avatar Laurent Aimar

Added libvlc_playlist_add_extended_untrusted and libvlc_media_add_option_untrusted.

They allow to add untrusted options (needed at least for web plugin).
parent 96550ff2
...@@ -215,6 +215,22 @@ VLC_DEPRECATED_API int libvlc_playlist_add_extended( libvlc_instance_t *, const ...@@ -215,6 +215,22 @@ VLC_DEPRECATED_API int libvlc_playlist_add_extended( libvlc_instance_t *, const
const char *, int, const char **, const char *, int, const char **,
libvlc_exception_t * ); libvlc_exception_t * );
/**
* Append an item to the playlist. The item is added at the end, with
* additional input options from an untrusted source.
*
* \param p_instance the playlist instance
* \param psz_uri the URI to open, using VLC format
* \param psz_name a name that you might want to give or NULL
* \param i_options the number of options to add
* \param ppsz_options strings representing the options to add
* \param p_e an initialized exception pointer
* \return the identifier of the new item
*/
VLC_DEPRECATED_API int libvlc_playlist_add_extended_untrusted( libvlc_instance_t *, const char *,
const char *, int, const char **,
libvlc_exception_t * );
/** /**
* Delete the playlist item with the given ID. * Delete the playlist item with the given ID.
* *
......
...@@ -278,6 +278,24 @@ VLC_PUBLIC_API void libvlc_media_add_option( ...@@ -278,6 +278,24 @@ VLC_PUBLIC_API void libvlc_media_add_option(
libvlc_media_t * p_md, libvlc_media_t * p_md,
const char * ppsz_options, const char * ppsz_options,
libvlc_exception_t * p_e ); libvlc_exception_t * p_e );
/**
* Add an option to the media from an untrusted source.
*
* This option will be used to determine how the media_player will
* read the media. This allows to use VLC's advanced
* reading/streaming options on a per-media basis.
*
* The options are detailed in vlc --long-help, for instance "--sout-all"
*
* \param p_instance the instance
* \param ppsz_options the options (as a string)
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_media_add_option_untrusted(
libvlc_media_t * p_md,
const char * ppsz_options,
libvlc_exception_t * p_e );
/** /**
* Retain a reference to a media descriptor object (libvlc_media_t). Use * Retain a reference to a media descriptor object (libvlc_media_t). Use
......
...@@ -350,6 +350,20 @@ void libvlc_media_add_option( ...@@ -350,6 +350,20 @@ void libvlc_media_add_option(
VLC_INPUT_OPTION_UNIQUE|VLC_INPUT_OPTION_TRUSTED ); VLC_INPUT_OPTION_UNIQUE|VLC_INPUT_OPTION_TRUSTED );
} }
/**************************************************************************
* Same as libvlc_media_add_option but with untrusted source.
**************************************************************************/
void libvlc_media_add_option_untrusted(
libvlc_media_t * p_md,
const char * ppsz_option,
libvlc_exception_t *p_e )
{
VLC_UNUSED(p_e);
input_item_AddOption( p_md->p_input_item, ppsz_option,
VLC_INPUT_OPTION_UNIQUE );
}
/************************************************************************** /**************************************************************************
* Delete a media descriptor object * Delete a media descriptor object
**************************************************************************/ **************************************************************************/
......
...@@ -158,10 +158,11 @@ int libvlc_playlist_add( libvlc_instance_t *p_instance, const char *psz_uri, ...@@ -158,10 +158,11 @@ int libvlc_playlist_add( libvlc_instance_t *p_instance, const char *psz_uri,
0, NULL, p_e ); 0, NULL, p_e );
} }
int libvlc_playlist_add_extended( libvlc_instance_t *p_instance, static int PlaylistAddExtended( libvlc_instance_t *p_instance,
const char *psz_uri, const char *psz_name, const char *psz_uri, const char *psz_name,
int i_options, const char **ppsz_options, int i_options, const char **ppsz_options,
libvlc_exception_t *p_e ) unsigned i_option_flags,
libvlc_exception_t *p_e )
{ {
assert( PL ); assert( PL );
if( playlist_was_locked( p_instance ) ) if( playlist_was_locked( p_instance ) )
...@@ -172,10 +173,27 @@ int libvlc_playlist_add_extended( libvlc_instance_t *p_instance, ...@@ -172,10 +173,27 @@ int libvlc_playlist_add_extended( libvlc_instance_t *p_instance,
} }
return playlist_AddExt( PL, psz_uri, psz_name, return playlist_AddExt( PL, psz_uri, psz_name,
PLAYLIST_INSERT, PLAYLIST_END, -1, PLAYLIST_INSERT, PLAYLIST_END, -1,
i_options, ppsz_options, VLC_INPUT_OPTION_TRUSTED, i_options, ppsz_options, i_option_flags,
true, pl_Unlocked ); true, pl_Unlocked );
} }
int libvlc_playlist_add_extended( libvlc_instance_t *p_instance,
const char *psz_uri, const char *psz_name,
int i_options, const char **ppsz_options,
libvlc_exception_t *p_e )
{
return PlaylistAddExtended( p_instance, psz_uri, psz_name,
i_options, ppsz_options, VLC_INPUT_OPTION_TRUSTED,
p_e );
}
int libvlc_playlist_add_extended_untrusted( libvlc_instance_t *p_instance,
const char *psz_uri, const char *psz_name,
int i_options, const char **ppsz_options,
libvlc_exception_t *p_e )
{
return PlaylistAddExtended( p_instance, psz_uri, psz_name,
i_options, ppsz_options, 0,
p_e );
}
int libvlc_playlist_delete_item( libvlc_instance_t *p_instance, int i_id, int libvlc_playlist_delete_item( libvlc_instance_t *p_instance, int i_id,
libvlc_exception_t *p_e ) libvlc_exception_t *p_e )
......
...@@ -48,6 +48,7 @@ libvlc_log_iterator_has_next ...@@ -48,6 +48,7 @@ libvlc_log_iterator_has_next
libvlc_log_iterator_next libvlc_log_iterator_next
libvlc_log_open libvlc_log_open
libvlc_media_add_option libvlc_media_add_option
libvlc_media_add_option_untrusted
libvlc_media_discoverer_event_manager libvlc_media_discoverer_event_manager
libvlc_media_discoverer_is_running libvlc_media_discoverer_is_running
libvlc_media_discoverer_localized_name libvlc_media_discoverer_localized_name
...@@ -161,6 +162,7 @@ libvlc_media_subitems ...@@ -161,6 +162,7 @@ libvlc_media_subitems
libvlc_new libvlc_new
libvlc_playlist_add libvlc_playlist_add
libvlc_playlist_add_extended libvlc_playlist_add_extended
libvlc_playlist_add_extended_untrusted
libvlc_playlist_clear libvlc_playlist_clear
libvlc_playlist_delete_item libvlc_playlist_delete_item
libvlc_playlist_get_media_player libvlc_playlist_get_media_player
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment