Page 1 of 1

Frame skip during TS play

Posted: 20 Jul 2013 16:47
by kc.chen
Hi, I play a TS stream on VLC and find sometimes it catch some error as below:

[h264 @ 0x1a81800] Missing reference picture
[h264 @ 0x1a81800] decode_slice_header error
[h264 @ 0x1a81800] concealing 1200 DC, 1200 AC, 1200 MV errors

and the result is the play screen will become blank, is it possible to skip the wrong frame on vlc? Thanks!

I also create a screenshot for it. You can get it from this link: http://pan.baidu.com/share/link?shareid ... 3761622840

Re: Frame skip during TS play

Posted: 20 Jul 2013 21:32
by Jean-Baptiste Kempf
Please share the sample.

Re: Frame skip during TS play

Posted: 21 Jul 2013 04:22
by kc.chen
You can view the stream from this link
http://219.232.160.145:5080/livestream/esx7h676.ts

Re: Frame skip during TS play

Posted: 22 Jul 2013 11:56
by kc.chen
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?