vlc | branch: master | Francois Cartegnie <[email protected]> | Mon Apr 13 21:47:39 2015 +0200| [f13b2add00507447bbbedc6810cea8164fb73b20] | committer: Francois Cartegnie
demux: ts: flag pid having pcr before es creation Avoids breaking with pcr on separate pid > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=f13b2add00507447bbbedc6810cea8164fb73b20 --- modules/demux/mpeg/ts.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/modules/demux/mpeg/ts.c b/modules/demux/mpeg/ts.c index 008dc77..872e333 100644 --- a/modules/demux/mpeg/ts.c +++ b/modules/demux/mpeg/ts.c @@ -3033,15 +3033,15 @@ static void PCRHandle( demux_t *p_demux, ts_pid_t *pid, block_t *p_bk ) { demux_sys_t *p_sys = p_demux->p_sys; - if( p_sys->i_pmt_es <= 0 ) - return; - mtime_t i_pcr = GetPCR( p_bk ); if( i_pcr < 0 ) return; pid->probed.i_pcr_count++; + if( p_sys->i_pmt_es <= 0 ) + return; + if(unlikely(GetPID(p_sys, 0)->type != TYPE_PAT)) return; @@ -3126,15 +3126,16 @@ static void PCRFixHandle( demux_t *p_demux, ts_pmt_t *p_pmt, block_t *p_block ) } else if( p_block->i_dts - p_pmt->pcr.i_first_dts > CLOCK_FREQ / 2 ) /* "PCR repeat rate shall not exceed 100ms" */ { - if( p_pmt->pcr.i_current < 0 ) + if( p_pmt->pcr.i_current < 0 && + GetPID( p_demux->p_sys, p_pmt->i_pid_pcr )->probed.i_pcr_count == 0 ) { int i_cand = FindPCRCandidate( p_pmt ); p_pmt->i_pid_pcr = i_cand; msg_Warn( p_demux, "No PCR received for program %d, set up workaround using pid %d", p_pmt->i_number, i_cand ); UpdatePESFilters( p_demux, p_demux->p_sys->b_es_all ); - p_pmt->pcr.b_fix_done = true; } + p_pmt->pcr.b_fix_done = true; } } _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
