vlc | branch: master | Thomas Guillem <[email protected]> | Tue Sep 4 16:15:04 2018 +0200| [b43a25889c43d94aafd98e7191d6744e1d836229] | committer: Thomas Guillem
input: hide attachments controls Since they are only used privately. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=b43a25889c43d94aafd98e7191d6744e1d836229 --- include/vlc_input.h | 4 ---- src/input/access.c | 4 ++-- src/input/control.c | 42 ------------------------------------ src/input/decoder.c | 8 +++++-- src/input/input.c | 43 +++++++++++++++++++++++++++++++++++++ src/input/input_internal.h | 4 ++++ src/input/meta.c | 4 ++-- src/video_output/vout_subpictures.c | 15 ++++++++----- 8 files changed, 67 insertions(+), 57 deletions(-) diff --git a/include/vlc_input.h b/include/vlc_input.h index 0c1d5a10b7..fddede9fc5 100644 --- a/include/vlc_input.h +++ b/include/vlc_input.h @@ -532,10 +532,6 @@ enum input_query_e /* titles */ INPUT_GET_FULL_TITLE_INFO, /* arg1=input_title_t*** arg2= int * res=can fail */ - /* Attachments */ - INPUT_GET_ATTACHMENTS, /* arg1=input_attachment_t***, arg2=int* res=can fail */ - INPUT_GET_ATTACHMENT, /* arg1=input_attachment_t**, arg2=char* res=can fail */ - /* On the fly input slave */ INPUT_ADD_SLAVE, /* arg1= enum slave_type, arg2= const char *, * arg3= bool forced, arg4= bool notify, diff --git a/src/input/access.c b/src/input/access.c index 9a34898f83..f6ddbea338 100644 --- a/src/input/access.c +++ b/src/input/access.c @@ -81,8 +81,8 @@ static stream_t *accessNewAttachment(vlc_object_t *parent, if (!input) return NULL; - input_attachment_t *attachment; - if (input_Control(input, INPUT_GET_ATTACHMENT, &attachment, mrl + 13)) + input_attachment_t *attachment = input_GetAttachment(input, mrl + 13); + if (!attachment) return NULL; stream_t *stream = vlc_stream_AttachmentNew(parent, attachment); if (!stream) diff --git a/src/input/control.c b/src/input/control.c index bae8a67b7e..77da975d36 100644 --- a/src/input/control.c +++ b/src/input/control.c @@ -315,48 +315,6 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args ) return VLC_SUCCESS; } - case INPUT_GET_ATTACHMENTS: /* arg1=input_attachment_t***, arg2=int* res=can fail */ - { - input_attachment_t ***ppp_attachment = va_arg( args, input_attachment_t *** ); - int *pi_attachment = va_arg( args, int * ); - - vlc_mutex_lock( &priv->p_item->lock ); - if( priv->i_attachment <= 0 ) - { - vlc_mutex_unlock( &priv->p_item->lock ); - *ppp_attachment = NULL; - *pi_attachment = 0; - return VLC_EGENERIC; - } - *pi_attachment = priv->i_attachment; - *ppp_attachment = vlc_alloc( priv->i_attachment, sizeof(input_attachment_t*)); - for( int i = 0; i < priv->i_attachment; i++ ) - (*ppp_attachment)[i] = vlc_input_attachment_Duplicate( priv->attachment[i] ); - - vlc_mutex_unlock( &priv->p_item->lock ); - return VLC_SUCCESS; - } - - case INPUT_GET_ATTACHMENT: /* arg1=input_attachment_t**, arg2=char* res=can fail */ - { - input_attachment_t **pp_attachment = va_arg( args, input_attachment_t ** ); - const char *psz_name = va_arg( args, const char * ); - - vlc_mutex_lock( &priv->p_item->lock ); - for( int i = 0; i < priv->i_attachment; i++ ) - { - if( !strcmp( priv->attachment[i]->psz_name, psz_name ) ) - { - *pp_attachment = vlc_input_attachment_Duplicate(priv->attachment[i] ); - vlc_mutex_unlock( &priv->p_item->lock ); - return VLC_SUCCESS; - } - } - *pp_attachment = NULL; - vlc_mutex_unlock( &priv->p_item->lock ); - return VLC_EGENERIC; - } - case INPUT_RESTART_ES_BY_ID: val.i_int = va_arg( args, int ); input_ControlPushHelper( p_input, INPUT_CONTROL_RESTART_ES_BY_ID, &val ); diff --git a/src/input/decoder.c b/src/input/decoder.c index 0de900ded2..251fae2ec0 100644 --- a/src/input/decoder.c +++ b/src/input/decoder.c @@ -657,8 +657,12 @@ static int DecoderGetInputAttachments( decoder_t *p_dec, if( unlikely(p_input == NULL) ) return VLC_ENOOBJ; - return input_Control( p_input, INPUT_GET_ATTACHMENTS, - ppp_attachment, pi_attachment ); + + int ret = input_GetAttachments( p_input, ppp_attachment ); + if (ret < 0) + return VLC_EGENERIC; + *pi_attachment = ret; + return VLC_SUCCESS; } static vlc_tick_t DecoderGetDisplayDate( decoder_t *p_dec, vlc_tick_t i_ts ) diff --git a/src/input/input.c b/src/input/input.c index ddac6fa57a..f8a551e643 100644 --- a/src/input/input.c +++ b/src/input/input.c @@ -3350,3 +3350,46 @@ char *input_CreateFilename(input_thread_t *input, input_item_t *item, free(filename); return path; } + +int input_GetAttachments(input_thread_t *input, + input_attachment_t ***attachments) +{ + input_thread_private_t *priv = input_priv(input); + + vlc_mutex_lock(&priv->p_item->lock); + int attachments_count = priv->i_attachment; + if (attachments_count <= 0) + { + vlc_mutex_unlock(&priv->p_item->lock); + return 0; + } + + *attachments = vlc_alloc(attachments_count, sizeof(input_attachment_t*)); + if (!*attachments) + return -1; + + for (int i = 0; i < attachments_count; i++) + (*attachments)[i] = vlc_input_attachment_Duplicate(priv->attachment[i]); + + vlc_mutex_unlock(&priv->p_item->lock); + return attachments_count; +} + +input_attachment_t *input_GetAttachment(input_thread_t *input, const char *name) +{ + input_thread_private_t *priv = input_priv(input); + + vlc_mutex_lock(&priv->p_item->lock); + for (int i = 0; i < priv->i_attachment; i++) + { + if (!strcmp( priv->attachment[i]->psz_name, name)) + { + input_attachment_t *attachment = + vlc_input_attachment_Duplicate(priv->attachment[i] ); + vlc_mutex_unlock( &priv->p_item->lock ); + return attachment; + } + } + vlc_mutex_unlock( &priv->p_item->lock ); + return NULL; +} diff --git a/src/input/input_internal.h b/src/input/input_internal.h index 5848d95e30..1a69cc47f9 100644 --- a/src/input/input_internal.h +++ b/src/input/input_internal.h @@ -261,6 +261,10 @@ static inline void input_ControlPushHelper( input_thread_t *p_input, int i_type, bool input_Stopped( input_thread_t * ); +int input_GetAttachments(input_thread_t *input, input_attachment_t ***attachments); + +input_attachment_t *input_GetAttachment(input_thread_t *input, const char *name); + /* Bound pts_delay */ #define INPUT_PTS_DELAY_MAX VLC_TICK_FROM_SEC(60) diff --git a/src/input/meta.c b/src/input/meta.c index b02cb25d6a..0cb62a8495 100644 --- a/src/input/meta.c +++ b/src/input/meta.c @@ -217,8 +217,8 @@ void input_ExtractAttachmentAndCacheArt( input_thread_t *p_input, } /* */ - input_attachment_t *p_attachment = NULL; - if( input_Control( p_input, INPUT_GET_ATTACHMENT, &p_attachment, name ) ) + input_attachment_t *p_attachment = input_GetAttachment( p_input, name ); + if( !p_attachment ) { msg_Warn( p_input, "art attachment %s not found", name ); return; diff --git a/src/video_output/vout_subpictures.c b/src/video_output/vout_subpictures.c index 806d70b17a..71a5544fc6 100644 --- a/src/video_output/vout_subpictures.c +++ b/src/video_output/vout_subpictures.c @@ -44,6 +44,7 @@ #include "../libvlc.h" #include "vout_internal.h" #include "../misc/subpicture.h" +#include "../input/input_internal.h" /***************************************************************************** * Local prototypes @@ -179,12 +180,16 @@ static int spu_get_attachments(filter_t *filter, { spu_t *spu = filter->owner.sys; - int ret = VLC_EGENERIC; if (spu->p->input) - ret = input_Control(spu->p->input, - INPUT_GET_ATTACHMENTS, - attachment_ptr, attachment_count); - return ret; + { + int count = input_GetAttachments(spu->p->input, attachment_ptr); + if (count < 0) + return VLC_EGENERIC; + *attachment_count = count; + return VLC_SUCCESS; + } + + return VLC_EGENERIC; } static filter_t *SpuRenderCreateAndLoadText(spu_t *spu) _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
