]> git.sesse.net Git - vlc/blobdiff - src/input/var.c
Ah Ah
[vlc] / src / input / var.c
index 960803fc5ab55b5a1fa67a5f91e4e9592e7a43d9..c255e01d6a9ec9a629435911c27e432ec758f3ec 100644 (file)
@@ -1,8 +1,8 @@
 /*****************************************************************************
  * var.c: object variables for input thread
  *****************************************************************************
- * Copyright (C) 2004 VideoLAN (Centrale Réseaux) and its contributors
- * $Id: input.c 7955 2004-06-07 22:21:33Z fenrir $
+ * Copyright (C) 2004 the VideoLAN team
+ * $Id$
  *
  * Authors: Laurent Aimar <fenrir@via.ecp.fr>
  *
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
 /*****************************************************************************
  * Preamble
  *****************************************************************************/
-#include <stdlib.h>
 #include <vlc/vlc.h>
-#include <vlc/input.h>
+#include <stdio.h>
+#include <stdlib.h>
 
 #include "input_internal.h"
 
@@ -40,7 +40,6 @@ void input_ControlVarTitle( input_thread_t *p_input, int i_title );
 
 void input_ConfigVarInit ( input_thread_t *p_input );
 
-
 /*****************************************************************************
  * Callbacks
  *****************************************************************************/
@@ -84,7 +83,7 @@ void input_ControlVarInit ( input_thread_t *p_input )
 
     /* Rate */
     var_Create( p_input, "rate", VLC_VAR_INTEGER );
-    val.i_int = p_input->i_rate;
+    val.i_int = p_input->p->i_rate;
     var_Change( p_input, "rate", VLC_VAR_SETVALUE, &val, NULL );
     var_AddCallback( p_input, "rate", RateCallback, NULL );
 
@@ -94,7 +93,6 @@ void input_ControlVarInit ( input_thread_t *p_input )
     var_Create( p_input, "rate-faster", VLC_VAR_VOID );
     var_AddCallback( p_input, "rate-faster", RateCallback, NULL );
 
-
     /* Position */
     var_Create( p_input, "position",  VLC_VAR_FLOAT );
     var_Create( p_input, "position-offset",  VLC_VAR_FLOAT );
@@ -111,7 +109,6 @@ void input_ControlVarInit ( input_thread_t *p_input )
     var_AddCallback( p_input, "time", TimeCallback, NULL );
     var_AddCallback( p_input, "time-offset", TimeCallback, NULL );
 
-
     /* Bookmark */
     var_Create( p_input, "bookmark", VLC_VAR_INTEGER | VLC_VAR_HASCHOICE |
                 VLC_VAR_ISCOMMAND );
@@ -119,7 +116,6 @@ void input_ControlVarInit ( input_thread_t *p_input )
     var_Change( p_input, "bookmark", VLC_VAR_SETTEXT, &val, NULL );
     var_AddCallback( p_input, "bookmark", BookmarkCallback, NULL );
 
-
     /* Program */
     var_Create( p_input, "program", VLC_VAR_INTEGER | VLC_VAR_HASCHOICE |
                 VLC_VAR_DOINHERIT );
@@ -162,7 +158,6 @@ void input_ControlVarInit ( input_thread_t *p_input )
     var_Change( p_input, "spu-delay", VLC_VAR_SETVALUE, &val, NULL );
     var_AddCallback( p_input, "spu-delay", EsDelayCallback, NULL );
 
-
     /* Video ES */
     var_Create( p_input, "video-es", VLC_VAR_INTEGER | VLC_VAR_HASCHOICE );
     text.psz_string = _("Video Track");
@@ -181,7 +176,6 @@ void input_ControlVarInit ( input_thread_t *p_input )
     var_Change( p_input, "spu-es", VLC_VAR_SETTEXT, &text, NULL );
     var_AddCallback( p_input, "spu-es", ESCallback, NULL );
 
-
     /* Special read only objects variables for intf */
     var_Create( p_input, "bookmarks", VLC_VAR_STRING | VLC_VAR_DOINHERIT );
 
@@ -189,8 +183,7 @@ void input_ControlVarInit ( input_thread_t *p_input )
     val.i_time = 0;
     var_Change( p_input, "length", VLC_VAR_SETVALUE, &val, NULL );
 
-
-   /* Special "intf-change" variable, it allows intf to set up a callback
+    /* Special "intf-change" variable, it allows intf to set up a callback
      * to be notified of some changes.
      * TODO list all changes warn by this callbacks */
     var_Create( p_input, "intf-change", VLC_VAR_BOOL );
@@ -220,14 +213,14 @@ void input_ControlVarClean( input_thread_t *p_input )
     var_Destroy( p_input, "bookmark" );
 
     var_Destroy( p_input, "program" );
-    if( p_input->i_title > 1 )
+    if( p_input->p->i_title > 1 )
     {
         /* TODO Destroy sub navigation var ? */
 
         var_Destroy( p_input, "next-title" );
         var_Destroy( p_input, "prev-title" );
     }
-    if( p_input->i_title > 0 )
+    if( p_input->p->i_title > 0 )
     {
         /* FIXME title > 0 doesn't mean current title has more than 1 seekpoint */
         var_Destroy( p_input, "next-chapter" );
@@ -257,7 +250,7 @@ void input_ControlVarNavigation( input_thread_t *p_input )
     int  i;
 
     /* Create more command variables */
-    if( p_input->i_title > 1 )
+    if( p_input->p->i_title > 1 )
     {
         var_Create( p_input, "next-title", VLC_VAR_VOID );
         text.psz_string = _("Next title");
@@ -272,7 +265,7 @@ void input_ControlVarNavigation( input_thread_t *p_input )
 
     /* Create title and navigation */
     val.psz_string = malloc( sizeof("title ") + 5 );
-    for( i = 0; i < p_input->i_title; i++ )
+    for( i = 0; i < p_input->p->i_title; i++ )
     {
         vlc_value_t val2, text, text2;
         int j;
@@ -285,15 +278,15 @@ void input_ControlVarNavigation( input_thread_t *p_input )
         var_AddCallback( p_input, val.psz_string,
                          NavigationCallback, (void *)i );
 
-        if( p_input->title[i]->psz_name == NULL ||
-            *p_input->title[i]->psz_name == '\0' )
+        if( p_input->p->title[i]->psz_name == NULL ||
+            *p_input->p->title[i]->psz_name == '\0' )
         {
             asprintf( &text.psz_string, _("Title %i"),
-                      i + p_input->i_title_offset );
+                      i + p_input->p->i_title_offset );
         }
         else
         {
-            text.psz_string = strdup( p_input->title[i]->psz_name );
+            text.psz_string = strdup( p_input->p->title[i]->psz_name );
         }
         var_Change( p_input, "navigation", VLC_VAR_ADDCHOICE, &val, &text );
 
@@ -303,21 +296,21 @@ void input_ControlVarNavigation( input_thread_t *p_input )
 
         free( text.psz_string );
 
-        for( j = 0; j < p_input->title[i]->i_seekpoint; j++ )
+        for( j = 0; j < p_input->p->title[i]->i_seekpoint; j++ )
         {
             val2.i_int = j;
 
-            if( p_input->title[i]->seekpoint[j]->psz_name == NULL ||
-                *p_input->title[i]->seekpoint[j]->psz_name == '\0' )
+            if( p_input->p->title[i]->seekpoint[j]->psz_name == NULL ||
+                *p_input->p->title[i]->seekpoint[j]->psz_name == '\0' )
             {
                 /* Default value */
                 asprintf( &text2.psz_string, _("Chapter %i"),
-                          j + p_input->i_seekpoint_offset );
+                          j + p_input->p->i_seekpoint_offset );
             }
             else
             {
                 text2.psz_string =
-                    strdup( p_input->title[i]->seekpoint[j]->psz_name );
+                    strdup( p_input->p->title[i]->seekpoint[j]->psz_name );
             }
 
             var_Change( p_input, val.psz_string, VLC_VAR_ADDCHOICE,
@@ -335,7 +328,7 @@ void input_ControlVarNavigation( input_thread_t *p_input )
  *****************************************************************************/
 void input_ControlVarTitle( input_thread_t *p_input, int i_title )
 {
-    input_title_t *t = p_input->title[i_title];
+    input_title_t *t = p_input->p->title[i_title];
     vlc_value_t val;
     int  i;
 
@@ -372,7 +365,7 @@ void input_ControlVarTitle( input_thread_t *p_input, int i_title )
         {
             /* Default value */
             asprintf( &text.psz_string, _("Chapter %i"),
-                      i + p_input->i_seekpoint_offset );
+                      i + p_input->p->i_seekpoint_offset );
         }
         else
         {
@@ -384,7 +377,6 @@ void input_ControlVarTitle( input_thread_t *p_input, int i_title )
     }
 }
 
-
 /*****************************************************************************
  * input_ConfigVarInit:
  *  Create all config object variables
@@ -396,6 +388,7 @@ void input_ConfigVarInit ( input_thread_t *p_input )
     /* Create Object Variables for private use only */
     var_Create( p_input, "video", VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
     var_Create( p_input, "audio", VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
+    var_Create( p_input, "spu", VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
 
     var_Create( p_input, "audio-track", VLC_VAR_INTEGER|VLC_VAR_DOINHERIT );
     var_Create( p_input, "sub-track", VLC_VAR_INTEGER|VLC_VAR_DOINHERIT );
@@ -403,6 +396,9 @@ void input_ConfigVarInit ( input_thread_t *p_input )
     var_Create( p_input, "audio-language", VLC_VAR_STRING|VLC_VAR_DOINHERIT );
     var_Create( p_input, "sub-language", VLC_VAR_STRING|VLC_VAR_DOINHERIT );
 
+    var_Create( p_input, "audio-track-id", VLC_VAR_INTEGER|VLC_VAR_DOINHERIT );
+    var_Create( p_input, "sub-track-id", VLC_VAR_INTEGER|VLC_VAR_DOINHERIT );
+
     var_Create( p_input, "sub-file", VLC_VAR_FILE | VLC_VAR_DOINHERIT );
     var_Create( p_input, "sub-autodetect-file", VLC_VAR_BOOL |
                 VLC_VAR_DOINHERIT );
@@ -415,6 +411,7 @@ void input_ConfigVarInit ( input_thread_t *p_input )
     var_Create( p_input, "sout-all",   VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
     var_Create( p_input, "sout-audio", VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
     var_Create( p_input, "sout-video", VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
+    var_Create( p_input, "sout-spu", VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
     var_Create( p_input, "sout-keep",  VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
 
     var_Create( p_input, "input-repeat", VLC_VAR_INTEGER|VLC_VAR_DOINHERIT );
@@ -441,6 +438,8 @@ void input_ConfigVarInit ( input_thread_t *p_input )
 
     /* */
     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 );
 
     /* Meta */
     var_Create( p_input, "meta-title", VLC_VAR_STRING | VLC_VAR_DOINHERIT );
@@ -471,12 +470,11 @@ static int StateCallback( vlc_object_t *p_this, char const *psz_cmd,
 
     return VLC_EGENERIC;
 }
+
 static int RateCallback( vlc_object_t *p_this, char const *psz_cmd,
                          vlc_value_t oldval, vlc_value_t newval, void *p_data )
 {
     input_thread_t *p_input = (input_thread_t*)p_this;
-    vlc_value_t val;
-    int i_rate;
 
     /* Problem with this way: the "rate" variable is update after the input thread do the change */
     if( !strcmp( psz_cmd, "rate-slower" ) )
@@ -528,7 +526,6 @@ static int PositionCallback( vlc_object_t *p_this, char const *psz_cmd,
     return VLC_SUCCESS;
 }
 
-
 static int TimeCallback( vlc_object_t *p_this, char const *psz_cmd,
                          vlc_value_t oldval, vlc_value_t newval, void *p_data )
 {
@@ -538,7 +535,6 @@ 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 ? */