return NULL;
p_synchro->p_dec = p_dec;
- p_synchro->b_no_skip = !config_GetInt( p_dec, "skip-frames" );
- p_synchro->b_quiet = config_GetInt( p_dec, "quiet-synchro" );
+ p_synchro->b_no_skip = !var_InheritBool( p_dec, "skip-frames" );
+ p_synchro->b_quiet = var_InheritBool( p_dec, "quiet-synchro" );
/* We use a fake stream pattern, which is often right. */
p_synchro->i_n_p = p_synchro->i_eta_p = DEFAULT_NB_P;
+ p_synchro->i_render_time)
#define S (*p_synchro)
mtime_t now, period;
- mtime_t pts = 0;
+ mtime_t pts;
bool b_decode = 0;
int i_current_rate;
pts = decoder_GetDisplayDate( p_synchro->p_dec, S.current_pts ) + period * (S.i_n_b + 2);
}
- if( (1 + S.i_n_p * (S.i_n_b + 1)) * period >
- S.p_tau[I_CODING_TYPE] )
+ if( (1 + S.i_n_p * (S.i_n_b + 1)) * period > S.p_tau[I_CODING_TYPE] )
{
b_decode = 1;
}
{
b_decode = (pts - now) > (TAU_PRIME(I_CODING_TYPE) + DELTA);
}
+ if( pts <= VLC_TS_INVALID )
+ b_decode = 1;
+
if( !b_decode && !p_synchro->b_quiet )
{
msg_Warn( p_synchro->p_dec,
{
b_decode = 0;
}
+ if( p_synchro->i_nb_ref >= 1 && pts <= VLC_TS_INVALID )
+ b_decode = 1;
break;
case B_CODING_TYPE:
{
b_decode = 0;
}
+ if( p_synchro->i_nb_ref >= 2 && pts <= VLC_TS_INVALID )
+ b_decode = 1;
+ break;
}
if( !b_decode )