[FFmpeg-trac] #9422(avformat:new): PMT descriptor overflow, results in incorrect streams
FFmpeg
trac at avcodec.org
Tue Sep 14 20:15:01 EEST 2021
#9422: PMT descriptor overflow, results in incorrect streams
-------------------------------------+-------------------------------------
Reporter: Nicolás | Type: defect
Jorge Dato |
Status: new | Priority: normal
Component: avformat | Version: git-
| master
Keywords: mpegts | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
Summary of the bug:
I have a mpegts sample that a PMT's descriptor overflows resulting in
incorrect streams. I wasn't able to connect to the FTP upload.ffmpeg.org
server to send this sample. (What should I do?)
In that sample, the PMT has a program_info_length of 12 bytes. First,
there is a descriptor ID 5, 4 bytes long. Then, it appears like there is
an ID 1 descriptor, 15 bytes long. This overflows the program_info_length
of 12 bytes.
I have found and fixed the issue in libavformat/mpegts.c, I'll send the
patch to ffmpeg-devel mailing list.
How to reproduce:
{{{
% ffprobe pmt_descriptor_overflow.ts
ffprobe version N-103620-gbbc24363f1 Copyright (c) 2007-2021 the FFmpeg
developers
built with gcc 11.2.0 (GCC)
configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64
--docdir=/usr/doc/ffmpeg-4.4/html --mandir=/usr/man --disable-debug
--enable-shared --disable-static --enable-gpl --enable-version3
--arch=x86_64 --enable-nonfree --disable-encoder=aac --enable-libfdk-aac
--enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-
gnutls --enable-libbluray --enable-libcaca --enable-libcdio --enable-
frei0r --enable-openal --enable-libopus --enable-libspeex --enable-libssh
--enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis
--enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265
--enable-libmp3lame --enable-opencl --enable-opengl --enable-libopenjpeg
--enable-libpulse --enable-libsmbclient --enable-libxml2 --enable-librsvg
--enable-libdrm --enable-libsrt --enable-nvenc --enable-nvdec
libavutil 57. 5.100 / 57. 5.100
libavcodec 59. 7.103 / 59. 7.103
libavformat 59. 5.100 / 59. 5.100
libavdevice 59. 0.101 / 59. 0.101
libavfilter 8. 9.100 / 8. 9.100
libswscale 6. 1.100 / 6. 1.100
libswresample 4. 0.100 / 4. 0.100
libpostproc 56. 0.100 / 56. 0.100
[mpegts @ 0xca9d00] PES packet size mismatch
[mpegts @ 0xca9d00] Packet corrupt (stream = 1, dts = 3697332704).
[mpegts @ 0xca9d00] PES packet size mismatch
[mpegts @ 0xca9d00] Packet corrupt (stream = 1, dts = 3697332704).
[mpegts @ 0xca9d00] Could not find codec parameters for stream 0 (Unknown:
none ([17][0][0][0] / 0x0011)): unknown codec
Consider increasing the value for the 'analyzeduration' (0) and
'probesize' (5000000) options
Input #0, mpegts, from 'pmt_descriptor_overflow.ts':
Duration: 00:00:06.67, start: 41075.799822, bitrate: 2307 kb/s
Program 1
Stream #0:0[0x1014]: Unknown: none ([17][0][0][0] / 0x0011)
No Program
Stream #0:1[0x10f]: Audio: aac (LC), 48000 Hz, stereo, fltp, 95 kb/s
Stream #0:2[0x1011]: Video: h264 (Main), yuv420p(tv,
smpte170m/smpte170m/bt709, progressive), 720x576 [SAR 12:11 DAR 15:11], 50
fps, 50 tbr, 90k tbn
Unsupported codec with id 0 for input stream 0
}}}
The stream #0:0 actually doesn't exists. Streams #0:1 and #0:2 are
correct, however they should be inside Program 1, as those are registered
in the PMT.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/9422>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list