• Aman Gupta's avatar
    avformat/mpegts: parse large PMTs with multiple tables · cd86c5db
    Aman Gupta authored
    In 9152c1e4, the mpegts parser was taught how to parse
    PMT sections which contained multiple tables. That commit
    fixed parsing of PMT packets from some cable providers,
    which included a special SCTE table (0xc0) before the
    standard program map table (0x2).
    
    Sometimes, however, the combined 0xc0 and 0x2 tables are
    larger than a single TS packet (188 bytes). The mpegts parser
    already attempts to parse sections which span multiple packets,
    but still assumed that the split section only contained one
    table.
    
    This patch fixes parsing of such a sample[1].
    
    Before:
    
        Input #0, mpegts, from 'combined-pmt-tids-split.ts':
          Duration: 00:00:01.26, start: 39188.931756, bitrate: 597 kb/s
          Program 1
          No Program
            Stream #0:0[0xeff]: Audio: ac3, 48000 Hz, mono, fltp, 64 kb/s
            Stream #0:1[0xefd]: Audio: mp3, 0 channels, fltp
            Stream #0:2[0xefe]: Unknown: none
    
    After:
    
        Input #0, mpegts, from 'combined-pmt-tids-split.ts':
          Duration: 00:00:01.27, start: 39188.931756, bitrate: 589 kb/s
          Program 1
            Stream #0:0[0xefd]: Video: h264 ([27][0][0][0] / 0x001B), none, 59.94 fps, 59.94 tbr, 90k tbn, 180k tbc
            Stream #0:1[0xefe](eng): Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz, stereo, fltp, 384 kb/s
            Stream #0:2[0xeff](spa): Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz, mono, fltp, 64 kb/s
            Stream #0:3[0xf00]: Data: scte_35
            Stream #0:4[0xf01]: Unknown: none (ETV1 / 0x31565445)
            Stream #0:5[0xf02]: Unknown: none (ETV1 / 0x31565445)
            Stream #0:6[0xf03]: Unknown: none ([192][0][0][0] / 0x00C0)
    
    With the patch, the PMT is parsed correctly so the streams are
    created in the correct order, are associated with "Program 1",
    and their codecs are set correctly.
    
    [1] https://s3.amazonaws.com/tmm1/combined-pmt-tids-split.tsSigned-off-by: 's avatarAman Gupta <aman@tmm1.net>
    Signed-off-by: 's avatarMichael Niedermayer <michael@niedermayer.cc>
    cd86c5db
mpegts.c 106 KB