]> git.sesse.net Git - vlc/blobdiff - src/control/input.c
For consistency, remove references to vlc from libvlc
[vlc] / src / control / input.c
index ef99204f34e75d9e12fa9e32cb4c3b9cec92ce01..8cc3d1aaa1b9418fd7b1fb063360bc2d6a7eb6d2 100644 (file)
@@ -29,8 +29,7 @@
 
 void libvlc_input_free( libvlc_input_t *p_input )
 {
-    if( p_input )
-        free( p_input );
+    if( p_input ) free( p_input );
 }
 
 /*
@@ -42,20 +41,12 @@ input_thread_t *libvlc_get_input_thread( libvlc_input_t *p_input,
 {
     input_thread_t *p_input_thread;
 
-    if( !p_input )
-    {
-        libvlc_exception_raise( p_e, "Input is NULL" );
-        return NULL;
-    }
+    if( !p_input ) RAISENULL( "Input is NULL" );
 
     p_input_thread = (input_thread_t*)vlc_object_get(
-                                 p_input->p_instance->p_vlc,
-                                 p_input->i_input_id );
-    if( !p_input_thread )
-    {
-        libvlc_exception_raise( p_e, "Input does not exist" );
-        return NULL;
-    }
+                                             p_input->p_instance->p_libvlc_int,
+                                             p_input->i_input_id );
+    if( !p_input_thread ) RAISENULL( "Input does not exist" );
 
     return p_input_thread;
 }
@@ -66,50 +57,70 @@ input_thread_t *libvlc_get_input_thread( libvlc_input_t *p_input,
  * Getters for stream information
  **************************************************************************/
 vlc_int64_t libvlc_input_get_length( libvlc_input_t *p_input,
-                             libvlc_exception_t *p_exception )
+                             libvlc_exception_t *p_e )
 {
     input_thread_t *p_input_thread;
     vlc_value_t val;
 
-    p_input_thread = libvlc_get_input_thread ( p_input, p_exception);
-
-    if ( libvlc_exception_raised( p_exception ) )
-        return -1.0;
+    p_input_thread = libvlc_get_input_thread ( p_input, p_e);
+    if( libvlc_exception_raised( p_e ) )  return -1;
        
     var_Get( p_input_thread, "length", &val );
     vlc_object_release( p_input_thread );
 
-    return val.i_time / 1000;
+    return val.i_time;
 }
 
 vlc_int64_t libvlc_input_get_time( libvlc_input_t *p_input,
-                           libvlc_exception_t *p_exception )
+                                   libvlc_exception_t *p_e )
 {
     input_thread_t *p_input_thread;
     vlc_value_t val;
 
+    p_input_thread = libvlc_get_input_thread ( p_input, p_e );
+    if( libvlc_exception_raised( p_e ) )  return -1;
 
-    p_input_thread = libvlc_get_input_thread ( p_input, p_exception);
+    var_Get( p_input_thread , "time", &val );
+    vlc_object_release( p_input_thread );
+    return val.i_time;
+}
 
-    if ( libvlc_exception_raised( p_exception ) )
-        return -1.0;
+void libvlc_input_set_time( libvlc_input_t *p_input, vlc_int64_t time,
+                            libvlc_exception_t *p_e )
+{
+    input_thread_t *p_input_thread;
+    vlc_value_t value;
 
-    var_Get( p_input_thread , "time", &val );
+    p_input_thread = libvlc_get_input_thread ( p_input, p_e );
+    if( libvlc_exception_raised( p_e ) )  return;
+    
+    value.i_time = time;
+    var_Set( p_input_thread, "time", value );
     vlc_object_release( p_input_thread );
+}
 
-    return val.i_time / 1000;
+void libvlc_input_set_position( libvlc_input_t *p_input, float position,
+                                libvlc_exception_t *p_e ) 
+{
+    input_thread_t *p_input_thread;
+    vlc_value_t val;
+    val.f_float = position;
+    
+    p_input_thread = libvlc_get_input_thread ( p_input, p_e);
+    if ( libvlc_exception_raised( p_e ) ) return;
+
+    var_Set( p_input_thread, "position", val );
+    vlc_object_release( p_input_thread );
 }
 
 float libvlc_input_get_position( libvlc_input_t *p_input,
-                                 libvlc_exception_t *p_exception )
+                                 libvlc_exception_t *p_e )
 {
     input_thread_t *p_input_thread;
     vlc_value_t val;
 
-    p_input_thread = libvlc_get_input_thread ( p_input, p_exception);
-
-    if ( libvlc_exception_raised( p_exception ) )
-        return -1.0;
+    p_input_thread = libvlc_get_input_thread ( p_input, p_e);
+    if ( libvlc_exception_raised( p_e ) )  return -1.0;
 
     var_Get( p_input_thread, "position", &val );
     vlc_object_release( p_input_thread );
@@ -118,17 +129,19 @@ float libvlc_input_get_position( libvlc_input_t *p_input,
 }
 
 float libvlc_input_get_fps( libvlc_input_t *p_input,
-                            libvlc_exception_t *p_exception
+                            libvlc_exception_t *p_e) 
 {
     double f_fps;
     input_thread_t *p_input_thread;
 
-    p_input_thread = libvlc_get_input_thread ( p_input, p_exception);
+    p_input_thread = libvlc_get_input_thread ( p_input, p_e );
+    if ( libvlc_exception_raised( p_e ) )  return 0.0;
 
-    if( demux2_Control( p_input_thread->input.p_demux, DEMUX_GET_FPS, &f_fps ) || f_fps < 0.1 ) 
+    if( demux2_Control( p_input_thread->input.p_demux, DEMUX_GET_FPS, &f_fps )
+        || f_fps < 0.1 ) 
     {
         vlc_object_release( p_input_thread );
-        return 0;
+        return 0.0;
     }
     else
     {
@@ -138,21 +151,62 @@ float libvlc_input_get_fps( libvlc_input_t *p_input,
 }
 
 vlc_bool_t libvlc_input_will_play( libvlc_input_t *p_input,
-                                   libvlc_exception_t *p_exception
+                                   libvlc_exception_t *p_e) 
 {
-    input_thread_t *p_input_thread;
-
-    p_input_thread = libvlc_get_input_thread ( p_input, p_exception);
-
-    if ( libvlc_exception_raised( p_exception ) )
-        return VLC_FALSE;
+    input_thread_t *p_input_thread =
+                            libvlc_get_input_thread ( p_input, p_e);
+    if ( libvlc_exception_raised( p_e ) ) return VLC_FALSE;
 
     if ( !p_input_thread->b_die && !p_input_thread->b_dead ) 
     {
         vlc_object_release( p_input_thread );
         return VLC_TRUE;
     }
-    
     vlc_object_release( p_input_thread );
     return VLC_FALSE;
 }
+
+void libvlc_input_set_rate( libvlc_input_t *p_input, float rate,
+                                libvlc_exception_t *p_e ) 
+{
+    input_thread_t *p_input_thread;
+    vlc_value_t val;
+    val.i_int = rate*1000.0f;
+    
+    p_input_thread = libvlc_get_input_thread ( p_input, p_e);
+    if ( libvlc_exception_raised( p_e ) ) return;
+
+    var_Set( p_input_thread, "rate", val );
+    vlc_object_release( p_input_thread );
+}
+
+float libvlc_input_get_rate( libvlc_input_t *p_input,
+                                 libvlc_exception_t *p_e )
+{
+    input_thread_t *p_input_thread;
+    vlc_value_t val;
+
+    p_input_thread = libvlc_get_input_thread ( p_input, p_e);
+    if ( libvlc_exception_raised( p_e ) )  return -1.0;
+
+    var_Get( p_input_thread, "rate", &val );
+    vlc_object_release( p_input_thread );
+
+    return (float)val.i_int/1000.0f;
+}
+
+int libvlc_input_get_state( libvlc_input_t *p_input,
+                                 libvlc_exception_t *p_e )
+{
+    input_thread_t *p_input_thread;
+    vlc_value_t val;
+
+    p_input_thread = libvlc_get_input_thread ( p_input, p_e);
+    if ( libvlc_exception_raised( p_e ) )  return 0;
+
+    var_Get( p_input_thread, "state", &val );
+    vlc_object_release( p_input_thread );
+
+    return val.i_int;
+}
+