]> git.sesse.net Git - vlc/blobdiff - src/input/event.c
dts: use VLC_TS_INVALID (refs #3135)
[vlc] / src / input / event.c
index 9fde71365d22e54405926388531b11928e06eee5..adb8cdcdb3155bb512b605d92dcba7de95e72d73 100644 (file)
@@ -55,9 +55,12 @@ void input_SendEventDead( input_thread_t *p_input )
 
     Trigger( p_input, INPUT_EVENT_DEAD );
 }
+void input_SendEventAbort( input_thread_t *p_input )
+{
+    Trigger( p_input, INPUT_EVENT_ABORT );
+}
 
-void input_SendEventTimes( input_thread_t *p_input,
-                           double f_position, mtime_t i_time, mtime_t i_length )
+void input_SendEventPosition( input_thread_t *p_input, double f_position, mtime_t i_time )
 {
     vlc_value_t val;
 
@@ -69,16 +72,22 @@ void input_SendEventTimes( input_thread_t *p_input,
     val.i_time = i_time;
     var_Change( p_input, "time", VLC_VAR_SETVALUE, &val, NULL );
 
-    /* FIXME ugly */
-    if( var_GetTime( p_input, "length" ) != i_length )
-    {
-        input_item_SetDuration( p_input->p->p_item, i_length );
-        input_SendEventMeta( p_input );
-    }
+    Trigger( p_input, INPUT_EVENT_POSITION );
+}
+void input_SendEventLength( input_thread_t *p_input, mtime_t i_length )
+{
+    vlc_value_t val;
+
+       /* FIXME ugly + what about meta change event ? */
+    if( var_GetTime( p_input, "length" ) == i_length )
+        return;
+
+    input_item_SetDuration( p_input->p->p_item, i_length );
+
     val.i_time = i_length;
     var_Change( p_input, "length", VLC_VAR_SETVALUE, &val, NULL );
 
-    Trigger( p_input, INPUT_EVENT_TIMES );
+    Trigger( p_input, INPUT_EVENT_LENGTH );
 }
 void input_SendEventStatistics( input_thread_t *p_input )
 {
@@ -86,10 +95,10 @@ void input_SendEventStatistics( input_thread_t *p_input )
 }
 void input_SendEventRate( input_thread_t *p_input, int i_rate )
 {
-       vlc_value_t val;
+    vlc_value_t val;
 
-       val.i_int = i_rate;
-       var_Change( p_input, "rate", VLC_VAR_SETVALUE, &val, NULL );
+    val.f_float = (float)INPUT_RATE_DEFAULT / (float)i_rate;
+    var_Change( p_input, "rate", VLC_VAR_SETVALUE, &val, NULL );
 
     Trigger( p_input, INPUT_EVENT_RATE );
 }
@@ -140,10 +149,16 @@ void input_SendEventSeekpoint( input_thread_t *p_input, int i_title, int i_seekp
 {
        vlc_value_t val;
 
-       VLC_UNUSED( i_title );
+    /* "chapter" */
        val.i_int = i_seekpoint;
        var_Change( p_input, "chapter", VLC_VAR_SETVALUE, &val, NULL );
 
+    /* "title %2i" */
+    char psz_title[10];
+    snprintf( psz_title, sizeof(psz_title), "title %2i", i_title );
+    var_Change( p_input, psz_title, VLC_VAR_SETVALUE, &val, NULL );
+
+    /* */
     Trigger( p_input, INPUT_EVENT_CHAPTER );
 }
 
@@ -234,6 +249,14 @@ void input_SendEventProgramSelect( input_thread_t *p_input, int i_program )
 {
     VarListSelect( p_input, "program", INPUT_EVENT_PROGRAM, i_program );
 }
+void input_SendEventProgramScrambled( input_thread_t *p_input, int i_group, bool b_scrambled )
+{
+    if( var_GetInteger( p_input, "program" ) != i_group )
+        return;
+
+    var_SetBool( p_input, "program-scrambled", b_scrambled );
+    Trigger( p_input, INPUT_EVENT_PROGRAM );
+}
 
 static const char *GetEsVarName( int i_cat )
 {