+ char *psz_ret;
+ vlc_mutex_lock( &p_item->lock );
+
+ if( !p_item->p_meta )
+ {
+ vlc_mutex_unlock( &p_item->lock );
+ return NULL;
+ }
+
+ const char *psz_meta = vlc_meta_Get( p_item->p_meta, vlc_meta_Title );
+ if( !EMPTY_STR( psz_meta ) )
+ psz_ret = strdup( psz_meta );
+ else
+ psz_ret = p_item->psz_name ? strdup( p_item->psz_name ) : NULL;
+
+ vlc_mutex_unlock( &p_item->lock );
+ return psz_ret;
+}
+
+char *input_item_GetName( input_item_t *p_item )
+{
+ vlc_mutex_lock( &p_item->lock );
+
+ char *psz_name = p_item->psz_name ? strdup( p_item->psz_name ) : NULL;
+
+ vlc_mutex_unlock( &p_item->lock );
+ return psz_name;
+}
+void input_item_SetName( input_item_t *p_item, const char *psz_name )
+{
+ vlc_mutex_lock( &p_item->lock );
+
+ free( p_item->psz_name );
+ p_item->psz_name = strdup( psz_name );
+
+ vlc_mutex_unlock( &p_item->lock );
+}
+
+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;
+}
+void input_item_SetURI( input_item_t *p_i, const char *psz_uri )
+{
+ vlc_mutex_lock( &p_i->lock );
+
+ free( p_i->psz_uri );
+ p_i->psz_uri = strdup( psz_uri );
+
+ GuessType( p_i );
+
+ if( !p_i->psz_name && p_i->i_type == ITEM_TYPE_FILE )
+ {
+ const char *psz_filename = strrchr( p_i->psz_uri, DIR_SEP_CHAR );
+ if( psz_filename && *psz_filename == DIR_SEP_CHAR )
+ psz_filename++;
+ if( psz_filename && *psz_filename )
+ p_i->psz_name = strdup( psz_filename );
+ }
+
+ if( !p_i->psz_name )
+ p_i->psz_name = strdup( p_i->psz_uri );
+
+ vlc_mutex_unlock( &p_i->lock );
+}
+
+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;
+}
+
+void input_item_SetDuration( input_item_t *p_i, mtime_t i_duration )
+{
+ bool b_send_event = false;
+
+ vlc_mutex_lock( &p_i->lock );
+ if( p_i->i_duration != i_duration )
+ {
+ p_i->i_duration = i_duration;
+ b_send_event = true;
+ }
+ vlc_mutex_unlock( &p_i->lock );
+
+ if( b_send_event )
+ {
+ vlc_event_t event;
+
+ event.type = vlc_InputItemDurationChanged;
+ event.u.input_item_duration_changed.new_duration = i_duration;
+ vlc_event_send( &p_i->event_manager, &event );
+ }
+}