[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