#include <stdlib.h>
#include <stdio.h>
-#include <errno.h>
#include <assert.h>
#if defined (WIN32) && !defined (UNDER_CE)
# include <direct.h>
mtime_t i_time;
mtime_t i_length;
} times;
+ struct
+ {
+ mtime_t i_pts_delay;
+ int i_cr_average;
+ } jitter;
};
} ts_cmd_control_t;
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 );
- msg_Dbg( p_input, "using timeshift path '%s'", p_sys->psz_tmp_path );
+ msg_Dbg( p_input, "using timeshift path '%s'", p_sys->psz_tmp_path );
#if 0
#define S(t) msg_Err( p_input, "SIZEOF("#t")=%d", sizeof(t) )
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_META:
case ES_OUT_SET_ES:
case ES_OUT_RESTART_ES:
case ES_OUT_SET_ES_DEFAULT:
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 ) )
p_block->i_flags = block.i_flags;
p_block->i_length = block.i_length;
p_block->i_rate = block.i_rate;
- p_block->i_samples = block.i_samples;
+ p_block->i_nb_samples = block.i_nb_samples;
p_block->i_buffer = fread( p_block->p_buffer, 1, block.i_buffer, p_storage->p_filer );
}
p_cmd->send.p_block = p_block;
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;
- case ES_OUT_SET_GROUP_META: /* arg1=int i_group arg2=vlc_meta_t* */
+ case ES_OUT_SET_META: /* arg1=const vlc_meta_t* */
+ case ES_OUT_SET_GROUP_META: /* arg1=int i_group arg2=const vlc_meta_t* */
{
- p_cmd->control.int_meta.i_int = (int)va_arg( args, int );
- vlc_meta_t *p_meta = (vlc_meta_t*)va_arg( args, vlc_meta_t * );
+ if( i_query == ES_OUT_SET_GROUP_META )
+ p_cmd->control.int_meta.i_int = (int)va_arg( args, int );
+ const vlc_meta_t *p_meta = va_arg( args, const vlc_meta_t * );
if( b_copy )
{
}
else
{
- p_cmd->control.int_meta.p_meta = p_meta;
+ /* The cast is only needed to avoid warning */
+ p_cmd->control.int_meta.p_meta = (vlc_meta_t*)p_meta;
}
break;
}
- case ES_OUT_SET_GROUP_EPG: /* arg1=int i_group arg2=vlc_epg_t* */
+ case ES_OUT_SET_GROUP_EPG: /* arg1=int i_group arg2=const vlc_epg_t* */
{
p_cmd->control.int_epg.i_int = (int)va_arg( args, int );
- vlc_epg_t *p_epg = (vlc_epg_t*)va_arg( args, vlc_epg_t * );
+ const vlc_epg_t *p_epg = va_arg( args, const vlc_epg_t * );
if( b_copy )
{
}
else
{
- p_cmd->control.int_epg.p_epg = p_epg;
+ /* The cast is only needed to avoid warning */
+ p_cmd->control.int_epg.p_epg = (vlc_epg_t*)p_epg;
}
break;
}
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);
case ES_OUT_RESET_PCR: /* no arg */
return es_out_Control( p_out, i_query );
- case ES_OUT_SET_GROUP_META: /* arg1=int i_group arg2=vlc_meta_t* */
+ case ES_OUT_SET_GROUP_META: /* arg1=int i_group arg2=const vlc_meta_t* */
return es_out_Control( p_out, i_query, p_cmd->control.int_meta.i_int,
p_cmd->control.int_meta.p_meta );
- case ES_OUT_SET_GROUP_EPG: /* arg1=int i_group arg2=vlc_epg_t* */
+ case ES_OUT_SET_GROUP_EPG: /* arg1=int i_group arg2=const vlc_epg_t* */
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 );
+
+ case ES_OUT_SET_META: /* arg1=const vlc_meta_t* */
+ return es_out_Control( p_out, i_query, p_cmd->control.int_meta.p_meta );
+
/* Modified control */
case ES_OUT_SET_ES: /* arg1= es_out_id_t* */
case ES_OUT_RESTART_ES: /* arg1= es_out_id_t* */
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);
}
static void CmdCleanControl( ts_cmd_t *p_cmd )
{
- if( p_cmd->control.i_query == ES_OUT_SET_GROUP_META &&
+ if( ( p_cmd->control.i_query == ES_OUT_SET_GROUP_META ||
+ p_cmd->control.i_query == ES_OUT_SET_META ) &&
p_cmd->control.int_meta.p_meta )
{
vlc_meta_Delete( p_cmd->control.int_meta.p_meta );
return NULL;
/* */
- f = fdopen( fd, "rw+" );
+ f = fdopen( fd, "w+b" );
if( !f )
close( fd );