• 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
Name
Last commit
Last update
compat Loading commit data...
doc Loading commit data...
ffbuild Loading commit data...
fftools Loading commit data...
libavcodec Loading commit data...
libavdevice Loading commit data...
libavfilter Loading commit data...
libavformat Loading commit data...
libavresample Loading commit data...
libavutil Loading commit data...
libpostproc Loading commit data...
libswresample Loading commit data...
libswscale Loading commit data...
presets Loading commit data...
tests Loading commit data...
tools Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.travis.yml Loading commit data...
CONTRIBUTING.md Loading commit data...
COPYING.GPLv2 Loading commit data...
COPYING.GPLv3 Loading commit data...
COPYING.LGPLv2.1 Loading commit data...
COPYING.LGPLv3 Loading commit data...
CREDITS Loading commit data...
Changelog Loading commit data...
INSTALL.md Loading commit data...
LICENSE.md Loading commit data...
MAINTAINERS Loading commit data...
Makefile Loading commit data...
README.md Loading commit data...
RELEASE Loading commit data...
configure Loading commit data...