- i_ret = VLC_SUCCESS;
- break;
- }
-
- case INPUT_SET_NAME:
- {
- char *psz_name = (char *)va_arg( args, char * );
- i_ret = VLC_EGENERIC;
- if( !psz_name ) break;
- vlc_mutex_lock( &p_input->p_item->lock );
- if( p_input->p_item->psz_name ) free( p_input->p_item->psz_name );
- p_input->p_item->psz_name = strdup( psz_name );
- vlc_mutex_unlock( &p_input->p_item->lock );
- i_ret = VLC_SUCCESS;
-
- /* Notify playlist */
- {
- vlc_value_t val;
- playlist_t *p_playlist =
- (playlist_t *)vlc_object_find( p_input, VLC_OBJECT_PLAYLIST,
- FIND_PARENT );
- if( p_playlist )
- {
- val.i_int = p_playlist->i_index;
- vlc_mutex_unlock( &p_input->stream.stream_lock );
- var_Set( p_playlist, "item-change", val );
- vlc_mutex_lock( &p_input->stream.stream_lock );
- vlc_object_release( p_playlist );
- }
- }
- break;
- }
+ switch( i_query )
+ {
+ case INPUT_GET_POSITION:
+ pf = (double*)va_arg( args, double * );
+ *pf = var_GetFloat( p_input, "position" );
+ return VLC_SUCCESS;
+
+ case INPUT_SET_POSITION:
+ f = (double)va_arg( args, double );
+ return var_SetFloat( p_input, "position", f );
+
+ case INPUT_GET_LENGTH:
+ pi_64 = (int64_t*)va_arg( args, int64_t * );
+ *pi_64 = var_GetTime( p_input, "length" );
+ return VLC_SUCCESS;
+
+ case INPUT_GET_TIME:
+ pi_64 = (int64_t*)va_arg( args, int64_t * );
+ *pi_64 = var_GetTime( p_input, "time" );
+ return VLC_SUCCESS;
+
+ case INPUT_SET_TIME:
+ i_64 = (int64_t)va_arg( args, int64_t );
+ return var_SetTime( p_input, "time", i_64 );
+
+ case INPUT_GET_RATE:
+ pi_int = (int*)va_arg( args, int * );
+ *pi_int = INPUT_RATE_DEFAULT / var_GetFloat( p_input, "rate" );
+ return VLC_SUCCESS;
+
+ case INPUT_SET_RATE:
+ i_int = (int)va_arg( args, int );
+ return var_SetFloat( p_input, "rate",
+ (float)INPUT_RATE_DEFAULT / (float)i_int );
+
+ case INPUT_GET_STATE:
+ pi_int = (int*)va_arg( args, int * );
+ *pi_int = var_GetInteger( p_input, "state" );
+ return VLC_SUCCESS;
+
+ case INPUT_SET_STATE:
+ i_int = (int)va_arg( args, int );
+ return var_SetInteger( p_input, "state", i_int );
+
+ case INPUT_GET_AUDIO_DELAY:
+ pi_64 = (int64_t*)va_arg( args, int64_t * );
+ *pi_64 = var_GetTime( p_input, "audio-delay" );
+ return VLC_SUCCESS;
+
+ case INPUT_GET_SPU_DELAY:
+ pi_64 = (int64_t*)va_arg( args, int64_t * );
+ *pi_64 = var_GetTime( p_input, "spu-delay" );
+ return VLC_SUCCESS;
+
+ case INPUT_SET_AUDIO_DELAY:
+ i_64 = (int64_t)va_arg( args, int64_t );
+ return var_SetTime( p_input, "audio-delay", i_64 );
+
+ case INPUT_SET_SPU_DELAY:
+ i_64 = (int64_t)va_arg( args, int64_t );
+ return var_SetTime( p_input, "spu-delay", i_64 );