+- (BOOL)isPlaying
+{
+ intf_thread_t *p_intf = VLCIntf;
+ if( !p_intf )
+ return NO;
+
+ input_thread_t * p_input = pl_CurrentInput( p_intf );
+ if( !p_input )
+ return NO;
+
+ input_state_e i_state = ERROR_S;
+ input_Control( p_input, INPUT_GET_STATE, &i_state );
+ vlc_object_release( p_input );
+
+ return ( ( i_state == OPENING_S ) || ( i_state == PLAYING_S ) );
+}
+
+- (int)currentTime
+{
+ input_thread_t * p_input = pl_CurrentInput( VLCIntf );
+ int64_t i_currentTime = -1;
+
+ if( !p_input )
+ return i_currentTime;
+
+ input_Control( p_input, INPUT_GET_TIME, &i_currentTime );
+ vlc_object_release( p_input );
+
+ return (int)( i_currentTime / 1000000 );
+}
+
+- (void)setCurrentTime:(int)i_value
+{
+ int64_t i64_value = (int64_t)i_value;
+ input_thread_t * p_input = pl_CurrentInput( VLCIntf );
+
+ if ( !p_input )
+ return;
+
+ input_Control( p_input, INPUT_SET_TIME, (int64_t)(i64_value * 1000000) );
+ vlc_object_release( p_input );
+}
+
+- (int)durationOfCurrentPlaylistItem
+{
+ intf_thread_t *p_intf = VLCIntf;
+ if( !p_intf )
+ return 0;
+
+ input_thread_t * p_input = pl_CurrentInput( p_intf );
+ int64_t i_duration = -1;
+ if( !p_input )
+ return i_duration;
+
+ input_Control( p_input, INPUT_GET_LENGTH, &i_duration );
+ vlc_object_release( p_input );
+
+ return (int)( i_duration / 1000000 );
+}
+
+- (NSURL*)URLOfCurrentPlaylistItem
+{
+ intf_thread_t *p_intf = VLCIntf;
+ if( !p_intf )
+ return nil;
+
+ input_thread_t *p_input = pl_CurrentInput( p_intf );
+ if( !p_input )
+ return nil;
+
+ input_item_t *p_item = input_GetItem( p_input );
+ if( !p_item )
+ {
+ vlc_object_release( p_input );
+ return nil;
+ }
+
+ char *psz_uri = input_item_GetURI( p_item );
+ if( !psz_uri )
+ {
+ vlc_object_release( p_input );
+ return nil;
+ }
+
+ NSURL *o_url;
+ o_url = [NSURL URLWithString:[NSString stringWithUTF8String:psz_uri]];
+ vlc_object_release( p_input );
+
+ return o_url;
+}
+
+- (NSString*)nameOfCurrentPlaylistItem
+{
+ intf_thread_t *p_intf = VLCIntf;
+ if( !p_intf )
+ return nil;
+
+ input_thread_t *p_input = pl_CurrentInput( p_intf );
+ if( !p_input )
+ return nil;
+
+ input_item_t *p_item = input_GetItem( p_input );
+ if( !p_item )
+ {
+ vlc_object_release( p_input );
+ return nil;
+ }
+
+ char *psz_uri = input_item_GetURI( p_item );
+ if( !psz_uri )
+ {
+ vlc_object_release( p_input );
+ return nil;
+ }
+
+ NSString *o_name;
+ char *format = var_InheritString( VLCIntf, "input-title-format" );
+ char *formated = str_format_meta( p_input, format );
+ free( format );
+ o_name = [NSString stringWithUTF8String:formated];
+ free( formated );
+
+ NSURL * o_url = [NSURL URLWithString: [NSString stringWithUTF8String: psz_uri]];
+ free( psz_uri );
+
+ if( [o_name isEqualToString:@""] )
+ {
+ if( [o_url isFileURL] )
+ o_name = [[NSFileManager defaultManager] displayNameAtPath: [o_url path]];
+ else
+ o_name = [o_url absoluteString];
+ }
+ vlc_object_release( p_input );
+ return o_name;
+}
+