X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_input.h;h=e185d4c40bd4f143bdc81cf0029a754303f35ff5;hb=6ee1e193fd896ab9a4729fde14f009d9ce629815;hp=f36b83ab2271cc31d26a5c538a8b0aa9223cef89;hpb=2feb5a9db033f511a45f710058409da7ccecbe5c;p=vlc diff --git a/include/vlc_input.h b/include/vlc_input.h index f36b83ab22..e185d4c40b 100644 --- a/include/vlc_input.h +++ b/include/vlc_input.h @@ -35,6 +35,8 @@ #include #include +#include /* strcasestr() */ + struct vlc_meta_t; /***************************************************************************** @@ -87,16 +89,15 @@ struct input_item_t }; #define ITEM_TYPE_UNKNOWN 0 -#define ITEM_TYPE_AFILE 1 -#define ITEM_TYPE_VFILE 2 -#define ITEM_TYPE_DIRECTORY 3 -#define ITEM_TYPE_DISC 4 -#define ITEM_TYPE_CDDA 5 -#define ITEM_TYPE_CARD 6 -#define ITEM_TYPE_NET 7 -#define ITEM_TYPE_PLAYLIST 8 -#define ITEM_TYPE_NODE 9 -#define ITEM_TYPE_NUMBER 10 +#define ITEM_TYPE_FILE 1 +#define ITEM_TYPE_DIRECTORY 2 +#define ITEM_TYPE_DISC 3 +#define ITEM_TYPE_CDDA 4 +#define ITEM_TYPE_CARD 5 +#define ITEM_TYPE_NET 6 +#define ITEM_TYPE_PLAYLIST 7 +#define ITEM_TYPE_NODE 8 +#define ITEM_TYPE_NUMBER 9 static inline void input_ItemInit( vlc_object_t *p_o, input_item_t *p_i ) { @@ -136,7 +137,7 @@ static inline void input_ItemCopyOptions( input_item_t *p_parent, } } -static inline void input_ItemSetName( input_item_t *p_item, const char *psz_name ) +static inline void input_item_SetName( input_item_t *p_item, const char *psz_name ) { if( p_item->psz_name ) free( p_item->psz_name ); p_item->psz_name = strdup( psz_name ); @@ -222,11 +223,11 @@ static inline void input_item_SetMeta( input_item_t *p_i, vlc_meta_type_t meta_t { vlc_event_t event; - //vlc_mutex_lock( &p_i->lock ); + vlc_mutex_lock( &p_i->lock ); if( !p_i->p_meta ) p_i->p_meta = vlc_meta_New(); vlc_meta_Set( p_i->p_meta, meta_type, psz_val ); - //vlc_mutex_unlock( &p_i->lock ); + vlc_mutex_unlock( &p_i->lock ); /* Notify interested third parties */ event.type = vlc_InputItemMetaChanged; @@ -236,10 +237,15 @@ static inline void input_item_SetMeta( input_item_t *p_i, vlc_meta_type_t meta_t static inline vlc_bool_t input_item_MetaMatch( input_item_t *p_i, vlc_meta_type_t meta_type, const char *psz ) { - //vlc_mutex_lock( &p_i->lock ); + vlc_mutex_lock( &p_i->lock ); + if( !p_i->p_meta ) + { + vlc_mutex_unlock( &p_i->lock ); + return VLC_FALSE; + } const char * meta = vlc_meta_Get( p_i->p_meta, meta_type ); vlc_bool_t ret = meta && strcasestr( meta, psz ); - //vlc_mutex_unlock( &p_i->lock ); + vlc_mutex_unlock( &p_i->lock ); return ret; } @@ -247,7 +253,7 @@ static inline vlc_bool_t input_item_MetaMatch( input_item_t *p_i, vlc_meta_type_ static inline char * input_item_GetMeta( input_item_t *p_i, vlc_meta_type_t meta_type ) { char * psz = NULL; - //vlc_mutex_lock( &p_i->lock ); + vlc_mutex_lock( &p_i->lock ); if( !p_i->p_meta ) { @@ -258,18 +264,50 @@ static inline char * input_item_GetMeta( input_item_t *p_i, vlc_meta_type_t meta if( vlc_meta_Get( p_i->p_meta, meta_type ) ) psz = strdup( vlc_meta_Get( p_i->p_meta, meta_type ) ); - //vlc_mutex_unlock( &p_i->lock ); + vlc_mutex_unlock( &p_i->lock ); return psz; } static inline char * input_item_GetName( input_item_t * p_i ) { - //vlc_mutex_lock( &p_i->lock ); + vlc_mutex_lock( &p_i->lock ); char *psz_s = p_i->psz_name ? strdup( p_i->psz_name ) : NULL; - //vlc_mutex_unlock( &p_i->lock ); + vlc_mutex_unlock( &p_i->lock ); + return psz_s; +} + +static inline char * input_item_GetURI( input_item_t * p_i ) +{ + vlc_mutex_lock( &p_i->lock ); + char *psz_s = p_i->psz_uri ? strdup( p_i->psz_uri ) : NULL; + vlc_mutex_unlock( &p_i->lock ); return psz_s; } +static inline void input_item_SetURI( input_item_t * p_i, char * psz_uri ) +{ + vlc_mutex_lock( &p_i->lock ); + if( p_i->psz_uri ) free( p_i->psz_uri ); + p_i->psz_uri = strdup( psz_uri ); + vlc_mutex_unlock( &p_i->lock ); +} + +static inline mtime_t input_item_GetDuration( input_item_t * p_i ) +{ + vlc_mutex_lock( &p_i->lock ); + mtime_t i_duration = p_i->i_duration; + vlc_mutex_unlock( &p_i->lock ); + return i_duration; +} + +static inline void input_item_SetDuration( input_item_t * p_i, mtime_t i_duration ) +{ + vlc_mutex_lock( &p_i->lock ); + p_i->i_duration = i_duration; + vlc_mutex_unlock( &p_i->lock ); + return; +} + static inline void input_item_SetPreparsed( input_item_t *p_i, vlc_bool_t preparsed ) { if( !p_i->p_meta )