]> git.sesse.net Git - vlc/blobdiff - src/input/es_out_timeshift.c
Debug the timeshift granularity in MB, not Bytes...
[vlc] / src / input / es_out_timeshift.c
index a94b7aab9281cb43c63b42c1695aa987d0755c7f..837878e0a65a6e39f3626a16a86ab34843931aa7 100644 (file)
@@ -128,6 +128,11 @@ typedef struct attribute_packed
             mtime_t i_time;
             mtime_t i_length;
         } times;
+        struct
+        {
+            mtime_t i_pts_delay;
+            int     i_cr_average;
+        } jitter;
     };
 } ts_cmd_control_t;
 
@@ -326,8 +331,8 @@ es_out_t *input_EsOutTimeshiftNew( input_thread_t *p_input, es_out_t *p_next_out
         p_sys->i_tmp_size_max = 50*1024*1024;
     else
         p_sys->i_tmp_size_max = __MAX( i_tmp_size_max, 1*1024*1024 );
-    msg_Dbg( p_input, "using timeshift granularity of %d bytes",
-             (int)p_sys->i_tmp_size_max );
+    msg_Dbg( p_input, "using timeshift granularity of %d MBytes",
+             (int)p_sys->i_tmp_size_max/(1024*1024) );
 
     char *psz_tmp_path = var_CreateGetNonEmptyString( p_input, "input-timeshift-path" );
     p_sys->psz_tmp_path = GetTmpPath( psz_tmp_path );
@@ -592,6 +597,7 @@ static int ControlLocked( es_out_t *p_out, int i_query, va_list args )
     case ES_OUT_SET_NEXT_DISPLAY_TIME:
     case ES_OUT_SET_GROUP_META:
     case ES_OUT_SET_GROUP_EPG:
+    case ES_OUT_SET_ES_SCRAMBLED_STATE:
     case ES_OUT_DEL_GROUP:
     case ES_OUT_SET_ES:
     case ES_OUT_RESTART_ES:
@@ -599,6 +605,7 @@ static int ControlLocked( es_out_t *p_out, int i_query, va_list args )
     case ES_OUT_SET_ES_STATE:
     case ES_OUT_SET_ES_FMT:
     case ES_OUT_SET_TIMES:
+    case ES_OUT_SET_JITTER:
     {
         ts_cmd_t cmd;
         if( CmdInitControl( &cmd, i_query, args, p_sys->b_delayed ) )
@@ -1300,6 +1307,11 @@ static int CmdInitControl( ts_cmd_t *p_cmd, int i_query, va_list args, bool b_co
         p_cmd->control.int_i64.i_i64 = (int64_t)va_arg( args, int64_t );
         break;
 
+    case ES_OUT_SET_ES_SCRAMBLED_STATE:
+        p_cmd->control.es_bool.p_es = (es_out_id_t*)va_arg( args, es_out_id_t * );
+        p_cmd->control.es_bool.b_bool = (bool)va_arg( args, int );
+        break;
+
     case ES_OUT_RESET_PCR:           /* no arg */
         break;
 
@@ -1392,6 +1404,15 @@ static int CmdInitControl( ts_cmd_t *p_cmd, int i_query, va_list args, bool b_co
         p_cmd->control.times.i_length = i_length;
         break;
     }
+    case ES_OUT_SET_JITTER:
+    {
+        mtime_t i_pts_delay = (mtime_t)va_arg( args, mtime_t );
+        int     i_cr_average = (int)va_arg( args, int );
+
+        p_cmd->control.jitter.i_pts_delay = i_pts_delay;
+        p_cmd->control.jitter.i_cr_average = i_cr_average;
+        break;
+    }
 
     default:
         assert(0);
@@ -1434,6 +1455,10 @@ static int CmdExecuteControl( es_out_t *p_out, ts_cmd_t *p_cmd )
         return es_out_Control( p_out, i_query, p_cmd->control.int_epg.i_int,
                                                p_cmd->control.int_epg.p_epg );
 
+    case ES_OUT_SET_ES_SCRAMBLED_STATE: /* arg1=int es_out_id_t* arg2=bool */
+        return es_out_Control( p_out, i_query, p_cmd->control.es_bool.p_es->p_es,
+                                               p_cmd->control.es_bool.b_bool );
+
     /* Modified control */
     case ES_OUT_SET_ES:      /* arg1= es_out_id_t*                   */
     case ES_OUT_RESTART_ES:  /* arg1= es_out_id_t*                   */
@@ -1452,6 +1477,9 @@ static int CmdExecuteControl( es_out_t *p_out, ts_cmd_t *p_cmd )
         return es_out_Control( p_out, i_query, p_cmd->control.times.f_position,
                                                p_cmd->control.times.i_time,
                                                p_cmd->control.times.i_length );
+    case ES_OUT_SET_JITTER:
+        return es_out_Control( p_out, i_query, p_cmd->control.jitter.i_pts_delay,
+                                               p_cmd->control.jitter.i_cr_average );
 
     default:
         assert(0);
@@ -1552,7 +1580,7 @@ static FILE *GetTmpFile( char **ppsz_file, const char *psz_path )
         return NULL;
 
     /* */
-    f = fdopen( fd, "r+b" );
+    f = fdopen( fd, "w+b" );
     if( !f )
         close( fd );