int i_options; /**< Number of input options */
char **ppsz_options; /**< Array of input options */
+ uint8_t *optflagv; /**< Some flags of input options */
+ unsigned optflagc;
mtime_t i_duration; /**< Duration in milliseconds*/
for( i = 0 ; i< p_parent->i_options; i++ )
{
char *psz_option= strdup( p_parent->ppsz_options[i] );
+ if( !strcmp( psz_option, "meta-file" ) )
+ {
+ free( psz_option );
+ continue;
+ }
p_child->i_options++;
p_child->ppsz_options = (char **)realloc( p_child->ppsz_options,
p_child->i_options *
sizeof( char * ) );
p_child->ppsz_options[p_child->i_options-1] = psz_option;
+ p_child->optflagc++;
+ p_child->optflagv = (uint8_t *)realloc( p_child->optflagv,
+ p_child->optflagc );
+ p_child->optflagv[p_child->optflagc - 1] = p_parent->optflagv[i];
}
}
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 );
+ free( p_item->psz_name );
p_item->psz_name = strdup( psz_name );
}
* It is not the input item's responsability to keep all the ref of
* the input item children. */
static inline void input_ItemAddSubItem( input_item_t *p_parent,
- input_item_t *p_child,
- vlc_bool_t b_node )
+ input_item_t *p_child )
{
vlc_event_t event;
/* Notify interested third parties */
event.type = vlc_InputItemSubItemAdded;
event.u.input_item_subitem_added.p_new_child = p_child;
- event.u.input_item_subitem_added.b_node = b_node;
vlc_event_send( &p_parent->event_manager, &event );
}
-VLC_EXPORT( void, input_ItemAddOption,( input_item_t *, const char * ) );
-VLC_EXPORT( void, input_ItemAddOptionNoDup,( input_item_t *, const char * ) );
-
-static inline void input_ItemClean( input_item_t *p_i )
-{
- int i;
-
- vlc_event_manager_fini( &p_i->event_manager );
-
- free( p_i->psz_name );
- free( p_i->psz_uri );
- if( p_i->p_stats )
- {
- vlc_mutex_destroy( &p_i->p_stats->lock );
- free( p_i->p_stats );
- }
+/* Flags handled past input_ItemAddOpt() */
+#define VLC_INPUT_OPTION_TRUSTED 0x2
- if( p_i->p_meta )
- vlc_meta_Delete( p_i->p_meta );
+/* Flags handled within input_ItemAddOpt() */
+#define VLC_INPUT_OPTION_UNIQUE 0x100
- for( i = 0; i < p_i->i_options; i++ )
- {
- if( p_i->ppsz_options[i] )
- free( p_i->ppsz_options[i] );
- }
- TAB_CLEAN( p_i->i_options, p_i->ppsz_options );
-
- for( i = 0; i < p_i->i_es; i++ )
- {
- es_format_Clean( p_i->es[i] );
- free( p_i->es[i] );
- }
- TAB_CLEAN( p_i->i_es, p_i->es );
-
- for( i = 0; i < p_i->i_categories; i++ )
- {
- info_category_t *p_category = p_i->pp_categories[i];
- int j;
-
- for( j = 0; j < p_category->i_infos; j++ )
- {
- struct info_t *p_info = p_category->pp_infos[j];
+VLC_EXPORT( int, input_ItemAddOpt, ( input_item_t *, const char *str, unsigned flags ) );
- if( p_info->psz_name )
- free( p_info->psz_name);
- if( p_info->psz_value )
- free( p_info->psz_value );
- free( p_info );
- }
- TAB_CLEAN( p_category->i_infos, p_category->pp_infos );
-
- if( p_category->psz_name ) free( p_category->psz_name );
- free( p_category );
- }
- TAB_CLEAN( p_i->i_categories, p_i->pp_categories );
-
- vlc_mutex_destroy( &p_i->lock );
-}
-
-static inline void input_item_SetMeta( input_item_t *p_i, vlc_meta_type_t meta_type, const char *psz_val )
+static inline
+int input_ItemAddOption (input_item_t *item, const char *str)
{
- vlc_event_t event;
+ return input_ItemAddOpt (item, str, VLC_INPUT_OPTION_TRUSTED);
+}
- 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 );
- /* Notify interested third parties */
- event.type = vlc_InputItemMetaChanged;
- event.u.input_item_meta_changed.meta_type = meta_type;
- vlc_event_send( &p_i->event_manager, &event );
-}
+VLC_EXPORT( void, input_item_SetMeta, ( input_item_t *p_i, vlc_meta_type_t meta_type, const char *psz_val ));
static inline vlc_bool_t input_item_MetaMatch( input_item_t *p_i, vlc_meta_type_t meta_type, const char *psz )
{
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 );
+ free( p_i->psz_uri );
+ p_i->psz_uri = strdup( psz_uri );
vlc_mutex_unlock( &p_i->lock );
}
VLC_EXPORT( input_item_t *, __input_ItemNewExt, (vlc_object_t *, const char *, const char*, int, const char *const *, mtime_t i_duration ) );
VLC_EXPORT( input_item_t *, input_ItemNewWithType, ( vlc_object_t *, const char *, const char *e, int, const char *const *, mtime_t i_duration, int ) );
-VLC_EXPORT( input_item_t *, input_ItemGetById, (playlist_t *, int ) );
+#define input_ItemGetById(a,b) __input_ItemGetById( VLC_OBJECT(a),b )
+VLC_EXPORT( input_item_t *, __input_ItemGetById, (vlc_object_t *, int ) );
/*****************************************************************************
* Meta data helpers
static inline void vlc_seekpoint_Delete( seekpoint_t *point )
{
if( !point ) return;
- if( point->psz_name ) free( point->psz_name );
+ free( point->psz_name );
free( point );
}
if( t == NULL )
return;
- if( t->psz_name ) free( t->psz_name );
+ free( t->psz_name );
for( i = 0; i < t->i_seekpoint; i++ )
{
- if( t->seekpoint[i]->psz_name ) free( t->seekpoint[i]->psz_name );
+ free( t->seekpoint[i]->psz_name );
free( t->seekpoint[i] );
}
- if( t->seekpoint ) free( t->seekpoint );
+ free( t->seekpoint );
free( t );
}
free( a->psz_name );
free( a->psz_mime );
free( a->psz_description );
- if( a->p_data )
- free( a->p_data );
+ free( a->p_data );
free( a );
}
/*****************************************************************************
ERROR_S
};
+static const char *ppsz_input_state[] = { N_("Initializing"), N_("Opening"), N_("Buffer"), N_("Play"), N_("Pause"), N_("Stop"), N_("Error") };
+
/* "rate" default, min/max
* A rate below 1000 plays the movie faster,
* A rate above 1000 plays the movie slower.
/*****************************************************************************
* Prototypes
*****************************************************************************/
+
+/* input_CreateThread
+ * Release the returned input_thread_t using vlc_object_release() */
#define input_CreateThread(a,b) __input_CreateThread(VLC_OBJECT(a),b)
VLC_EXPORT( input_thread_t *, __input_CreateThread, ( vlc_object_t *, input_item_t * ) );
+
#define input_Preparse(a,b) __input_Preparse(VLC_OBJECT(a),b)
VLC_EXPORT( int, __input_Preparse, ( vlc_object_t *, input_item_t * ) );
#define input_Read(a,b,c) __input_Read(VLC_OBJECT(a),b, c)
VLC_EXPORT( int, __input_Read, ( vlc_object_t *, input_item_t *, vlc_bool_t ) );
VLC_EXPORT( void, input_StopThread, ( input_thread_t * ) );
-VLC_EXPORT( void, input_DestroyThread, ( input_thread_t * ) );
enum input_query_e
{