]> git.sesse.net Git - vlc/blobdiff - src/input/var.c
Fix #2765: DVD chapters navigation menu.
[vlc] / src / input / var.c
index 8218d6ad38dcd12fac555d7ebddf319a7677d39e..38aac2d56f5344796a1b6da2fb257ff000e6896b 100644 (file)
@@ -132,7 +132,7 @@ void input_ControlVarInit ( input_thread_t *p_input )
 
     /* State */
     var_Create( p_input, "state", VLC_VAR_INTEGER );
-    val.i_int = p_input->i_state;
+    val.i_int = p_input->p->i_state;
     var_Change( p_input, "state", VLC_VAR_SETVALUE, &val, NULL );
 
     /* Rate */
@@ -225,26 +225,8 @@ void input_ControlVarInit ( input_thread_t *p_input )
 
     if( !p_input->b_preparsing )
     {
-        /* Special "intf-change" variable, it allows intf to set up a callback
-         * to be notified of some changes.
-         *
-         * Add rate-change to inform about rate changin
-         *
-         * stats-change to inform when statistics are computed
-         *
-         * TODO list all changes warn by these callbacks */
-        static const char *ppsz_event[] = {
-            "intf-change",
-            "rate-change",
-            "stats-change",
-            "intf-change-vout",
-            NULL
-        };
-        for( int i = 0; ppsz_event[i] != NULL; i++ )
-        {
-            var_Create( p_input, ppsz_event[i], VLC_VAR_BOOL );
-            var_SetBool( p_input, ppsz_event[i], true );
-        }
+        /* Special "intf-event" variable. */
+        var_Create( p_input, "intf-event", VLC_VAR_INTEGER );
     }
 
     /* Add all callbacks
@@ -461,9 +443,10 @@ void input_ConfigVarInit ( input_thread_t *p_input )
 
         var_Create( p_input, "input-repeat",
                     VLC_VAR_INTEGER|VLC_VAR_DOINHERIT );
-        var_Create( p_input, "start-time", VLC_VAR_INTEGER|VLC_VAR_DOINHERIT );
-        var_Create( p_input, "stop-time", VLC_VAR_INTEGER|VLC_VAR_DOINHERIT );
-        var_Create( p_input, "run-time", VLC_VAR_INTEGER|VLC_VAR_DOINHERIT );
+        var_Create( p_input, "start-time", VLC_VAR_FLOAT|VLC_VAR_DOINHERIT );
+        var_Create( p_input, "stop-time", VLC_VAR_FLOAT|VLC_VAR_DOINHERIT );
+        var_Create( p_input, "run-time", VLC_VAR_FLOAT|VLC_VAR_DOINHERIT );
+        var_Create( p_input, "input-fast-seek", VLC_VAR_BOOL|VLC_VAR_DOINHERIT );
 
         var_Create( p_input, "input-slave",
                     VLC_VAR_STRING | VLC_VAR_DOINHERIT );
@@ -476,8 +459,8 @@ void input_ConfigVarInit ( input_thread_t *p_input )
                     VLC_VAR_INTEGER | VLC_VAR_DOINHERIT);
     }
 
-    var_Create( p_input, "seekable", VLC_VAR_BOOL );
-    var_SetBool( p_input, "seekable", true ); /* Fixed later*/
+    var_Create( p_input, "can-seek", VLC_VAR_BOOL );
+    var_SetBool( p_input, "can-seek", true ); /* Fixed later*/
 
     var_Create( p_input, "can-pause", VLC_VAR_BOOL );
     var_SetBool( p_input, "can-pause", true ); /* Fixed later*/
@@ -503,10 +486,19 @@ void input_ConfigVarInit ( input_thread_t *p_input )
     var_Create( p_input, "signal-strength", VLC_VAR_FLOAT );
     var_SetFloat( p_input, "signal-strength", -1 );
 
+    var_Create( p_input, "program-scrambled", VLC_VAR_BOOL );
+    var_SetBool( p_input, "program-scrambled", false );
+
+    var_Create( p_input, "cache", VLC_VAR_FLOAT );
+    var_SetFloat( p_input, "cache", 0.0 );
+
+    /* */
+    var_Create( p_input, "input-record-native", VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
+
     /* */
-    var_Create( p_input, "access-filter", VLC_VAR_STRING | VLC_VAR_DOINHERIT );
     var_Create( p_input, "access", VLC_VAR_STRING | VLC_VAR_DOINHERIT );
     var_Create( p_input, "demux", VLC_VAR_STRING | VLC_VAR_DOINHERIT );
+    var_Create( p_input, "stream-filter", VLC_VAR_STRING | VLC_VAR_DOINHERIT );
 
     /* Meta */
     var_Create( p_input, "meta-title", VLC_VAR_STRING | VLC_VAR_DOINHERIT );
@@ -593,12 +585,11 @@ static int PositionCallback( vlc_object_t *p_this, char const *psz_cmd,
 
     if( !strcmp( psz_cmd, "position-offset" ) )
     {
-        input_ControlPush( p_input, INPUT_CONTROL_SET_POSITION_OFFSET, &newval );
-
         val.f_float = var_GetFloat( p_input, "position" ) + newval.f_float;
         if( val.f_float < 0.0 ) val.f_float = 0.0;
         if( val.f_float > 1.0 ) val.f_float = 1.0;
-        var_Change( p_input, "position", VLC_VAR_SETVALUE, &val, NULL );
+
+        input_ControlPush( p_input, INPUT_CONTROL_SET_POSITION_OFFSET, &newval );
     }
     else
     {
@@ -626,11 +617,9 @@ static int TimeCallback( vlc_object_t *p_this, char const *psz_cmd,
 
     if( !strcmp( psz_cmd, "time-offset" ) )
     {
-        input_ControlPush( p_input, INPUT_CONTROL_SET_TIME_OFFSET, &newval );
         val.i_time = var_GetTime( p_input, "time" ) + newval.i_time;
         if( val.i_time < 0 ) val.i_time = 0;
-        /* TODO maybe test against i_length ? */
-        var_Change( p_input, "time", VLC_VAR_SETVALUE, &val, NULL );
+        input_ControlPush( p_input, INPUT_CONTROL_SET_TIME_OFFSET, &newval );
     }
     else
     {
@@ -722,6 +711,16 @@ static int SeekpointCallback( vlc_object_t *p_this, char const *psz_cmd,
     else
     {
         input_ControlPush( p_input, INPUT_CONTROL_SET_SEEKPOINT, &newval );
+        val.i_int = newval.i_int;
+    }
+
+    /* Actualize "title %2i" variable */
+    if( val.i_int >= 0 && val.i_int < count.i_int )
+    {
+        int i_title = var_GetInteger( p_input, "title" );
+        char psz_titlevar[10] = {0};
+        snprintf( psz_titlevar, 10, "title %2i", i_title );
+        var_Change( p_input, psz_titlevar, VLC_VAR_SETVALUE, &val, NULL );
     }
 
     return VLC_SUCCESS;
@@ -786,11 +785,6 @@ static int EsDelayCallback ( vlc_object_t *p_this, char const *psz_cmd,
 
     if( !strcmp( psz_cmd, "audio-delay" ) )
     {
-        /* Change i_pts_delay to make sure es are decoded in time */
-        if( newval.i_int < 0 || oldval.i_int < 0 )
-        {
-            p_input->i_pts_delay -= newval.i_int - oldval.i_int;
-        }
         input_ControlPush( p_input, INPUT_CONTROL_SET_AUDIO_DELAY, &newval );
     }
     else if( !strcmp( psz_cmd, "spu-delay" ) )