Add msecseek command in VLM to seek to a position given in milliseconds. Patch by Igor Helman ( http://forum.videolan.org/viewtopic.php?t=27989 )

+ misc variables handling changes by me
This commit is contained in:
Antoine Cellerier 2006-11-10 00:28:15 +00:00
parent 14abbd807d
commit 25b9b158e0
2 changed files with 38 additions and 20 deletions

1
THANKS
View File

@ -73,6 +73,7 @@ Goetz Waschk <waschk at informatik.uni-rostock dot de> - Mandrake packages
Haakon Meland Eriksen - Norwegian translation
Han HoJoong <0demon0 at paran dot com> - Korean translation
Hans-Peter Jansen <hpj at urpla.net> - patch for module options handling
Igor Helman - VLM msecseek command
Ilkka Ollakka - SDP bitrate patch
Jan Gerber <j at v2v dot org> - patch theora decoding aspect ratio
Jan Van Boghout <vlc at macrabbit.com> - iTunes like slider for OSX intf

View File

@ -613,7 +613,8 @@ static int ExecuteCommand( vlm_t *p_vlm, const char *psz_command,
if( strcmp( ppsz_command[2], "play" ) &&
strcmp( ppsz_command[2], "stop" ) &&
strcmp( ppsz_command[2], "pause" ) &&
strcmp( ppsz_command[2], "seek" ) )
strcmp( ppsz_command[2], "seek" ) &&
strcmp( ppsz_command[2], "msecseek" ) )
{
i_index++;
psz_instance = ppsz_command[2];
@ -623,7 +624,8 @@ static int ExecuteCommand( vlm_t *p_vlm, const char *psz_command,
if( strcmp( ppsz_command[3], "play" ) &&
strcmp( ppsz_command[3], "stop" ) &&
strcmp( ppsz_command[3], "pause" ) &&
strcmp( ppsz_command[3], "seek" ) )
strcmp( ppsz_command[3], "seek" ) &&
strcmp( ppsz_command[3], "msecseek" ) )
goto syntax_error;
}
@ -1266,7 +1268,6 @@ int vlm_MediaControl( vlm_t *vlm, vlm_media_t *media, const char *psz_id,
if( !strcmp( psz_command, "seek" ) )
{
vlc_value_t val;
float f_percentage;
if( psz_args )
@ -1274,8 +1275,25 @@ int vlm_MediaControl( vlm_t *vlm, vlm_media_t *media, const char *psz_id,
f_percentage = i18n_atof( psz_args );
if( f_percentage >= 0.0 && f_percentage <= 100.0 )
{
val.f_float = f_percentage / 100.0 ;
var_Set( p_instance->p_input, "position", val );
var_SetFloat( p_instance->p_input, "position",
f_percentage / 100.0 );
return VLC_SUCCESS;
}
}
}
else if( !strcmp( psz_command, "msecseek" ) )
{
double d_msec;
int64_t i_time, i_current;
if( psz_args )
{
d_msec = i18n_atof( psz_args );
i_time = (int64_t)(d_msec * 1000);
i_current = var_GetTime( p_instance->p_input, "length" );
if( i_time >= 0 && i_time <= i_current )
{
var_SetTime( p_instance->p_input, "time", i_time );
return VLC_SUCCESS;
}
}
@ -1284,16 +1302,15 @@ int vlm_MediaControl( vlm_t *vlm, vlm_media_t *media, const char *psz_id,
{
float f_pos;
float f_scale;
vlc_value_t val;
if( psz_args )
{
f_scale = i18n_atof( psz_args );
f_pos = var_GetFloat( p_instance->p_input, "position" );
val.f_float = f_pos - (f_scale / 1000.0);
if( val.f_float < 0.0 )
val.f_float = 0.0;
var_Set( p_instance->p_input, "position", val );
f_pos -= (f_scale / 1000.0);
if( f_pos < 0. )
f_pos = 0.;
var_SetFloat( p_instance->p_input, "position", f_pos );
return VLC_SUCCESS;
}
}
@ -1301,16 +1318,15 @@ int vlm_MediaControl( vlm_t *vlm, vlm_media_t *media, const char *psz_id,
{
float f_pos;
float f_scale;
vlc_value_t val;
if( psz_args )
{
f_scale = i18n_atof( psz_args );
f_pos = var_GetFloat( p_instance->p_input, "position" );
val.f_float = f_pos + (f_scale / 1000.0);
if( val.f_float > 1.0 )
val.f_float = 1.0;
var_Set( p_instance->p_input, "position", val );
f_pos += (f_scale / 1000.0);
if( f_pos > 1.0 )
f_pos = 1.0;
var_SetFloat( p_instance->p_input, "position", f_pos );
return VLC_SUCCESS;
}
}
@ -1334,15 +1350,15 @@ int vlm_MediaControl( vlm_t *vlm, vlm_media_t *media, const char *psz_id,
}
else if( !strcmp( psz_command, "pause" ) )
{
vlc_value_t val;
int i_state;
if( !p_instance->p_input ) return VLC_SUCCESS;
var_Get( p_instance->p_input, "state", &val );
var_GetInteger( p_instance->p_input, "state" );
if( val.i_int == PAUSE_S ) val.i_int = PLAYING_S;
else val.i_int = PAUSE_S;
var_Set( p_instance->p_input, "state", val );
if( i_state == PAUSE_S ) i_state = PLAYING_S;
else i_state = PAUSE_S;
var_SetInteger( p_instance->p_input, "state", i_state );
return VLC_SUCCESS;
}
@ -2050,6 +2066,7 @@ static vlm_message_t *vlm_Help( vlm_t *vlm, char *psz_filter )
MessageAddChild( "pause" );
MessageAddChild( "stop" );
MessageAddChild( "seek (percentage)" );
MessageAddChild( "msecseek (time in milliseconds)" );
return message;
}