Please share the sample.
More detail about the issue, the log is:
[0x203eb030] main input error: ES_OUT_SET_(GROUP_)PCR is called too late (pts_delay increased to 5799 ms)
[0x203eb030] main input error: ES_OUT_RESET_PCR called
[h264 @ 0x20924a00] Missing reference picture
[h264 @ 0x20924a00] decode_slice_header error
[h264 @ 0x20924a00] concealing 405 DC, 405 AC, 405 MV errors
[h264 @ 0x20901e00] mmco: unref short failure
and I find the related code is in es_out.c:
Code: Select all
if( i_pts_delay > __MIN( i_pts_delay_base + i_jitter_max, INPUT_PTS_DELAY_MAX ) )
{
msg_Err( p_sys->p_input,
"ES_OUT_SET_(GROUP_)PCR is called too late (jitter of %d ms ignored)",
(int)(i_pts_delay - i_pts_delay_base) / 1000 );
i_pts_delay = p_sys->i_pts_delay;
}
else
{
msg_Err( p_sys->p_input,
"ES_OUT_SET_(GROUP_)PCR is called too late (pts_delay increased to %d ms)",
(int)(i_pts_delay/1000) );
}
/* Force a rebufferization when we are too late */
/* It is not really good, as we throw away already buffered data
* TODO have a mean to correctly reenter bufferization */
es_out_Control( out, ES_OUT_RESET_PCR );
es_out_SetJitter( out, i_pts_delay_base, i_pts_delay - i_pts_delay_base, p_sys->i_cr_average );
Is it possible to keep the previous frame on screen when call ES_OUT_RESET_PCR?