]> git.sesse.net Git - vlc/commitdiff
Add msecseek command in VLM to seek to a position given in milliseconds. Patch by...
authorAntoine Cellerier <dionoea@videolan.org>
Fri, 10 Nov 2006 00:28:15 +0000 (00:28 +0000)
committerAntoine Cellerier <dionoea@videolan.org>
Fri, 10 Nov 2006 00:28:15 +0000 (00:28 +0000)
+ misc variables handling changes by me

THANKS
src/misc/vlm.c

diff --git a/THANKS b/THANKS
index af4e0c25a0616ae4ff876a843c52e98fe34f9fb4..6109dfb9303a52b4a7623854c2671cb2018db67a 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -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
index 3dc96be01bec5c1598c62e07d8e5dc802586c6b9..8101764d3a9e55e2e8541cc7e779baa05e82bfd7 100644 (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;
     }