[MPlayer-dev-eng] [PATCH] Small bug in libmpdemux/demux_ts.c
Scott W. Larson
scowl at pacifier.com
Sat Nov 5 00:55:10 CET 2005
Nico Sabbi wrote:
> collect_section() checks that data collected in sections of tables
> (PAT/PMT/SL mess)
> is enough to start decoding.
> As fas as I remember it never returned values < 0, nor there's any
> reason to do it.
I was looking at older versions of parse_pmt() since mplayer didn't have
this problem before collect_section() was broken out of it. This code
chunk from the old parse_pmt() is what led me to having
collect_section() return -1:
if(pmt->section_length + 3 > pmt->buffer_len)
{
mp_msg(MSGT_DEMUX, MSGL_V, "PARSE_PMT, SECTION LENGTH TOO LARGE
FOR CURRENT BUFFER (%d vs %d), NEXT TIME\n", pmt->section_length,
pmt->buffer_len);
return -1;
}
> Tables have nothing to do with AC3 data, that is carried in PES packets.
> I suspect that the problem you are experiencing is due to something else.
I think it's causing it to have trouble parsing the transport stream
whenever a big PMT comes along. I'm sure there's an explanation. :-)
> If you can post a sample I will have a look at it.
Here's one:
http://home.pacifier.com/~scowl/hdtv/cc.ts
When collect_section() returns 0, it gives me over twenty "a52: CRC
check failed!" messages. When collect_section() returns -1, I get no
errors at all.
More information about the MPlayer-dev-eng
mailing list