On 28/04/15 13:39, Diego Biurrun wrote: > On Tue, Apr 28, 2015 at 08:44:55AM +0000, John Högberg wrote: >> From b5bb543d288ef160d494315f0b2ea5a11d5efbaa Mon Sep 17 00:00:00 2001 >> From: =?UTF-8?q?John=20H=C3=B6gberg?= <[email protected]> >> Date: Tue, 28 Apr 2015 10:20:33 +0200 >> Subject: [PATCH] mpegts: fix degradation when PAT arrives while reading PMT. >> >> If a PAT is finished while a PMT section filter is opened but not yet >> finished, the PMT section filter is closed and all the received data is >> discarded. This is usually not an issue but some multiplexers (With very >> quick PAT/PMT repetition settings) consistently emit a PMT section start, >> then a PAT, and then the rest of the PMT, causing the aforementioned >> behavior to result in no PMT being finished. On the worst set of streams I >> tested libav was completely unable to read the stream information and always >> had to fall back to probing, resulting in it interpreting DVB subtitle >> tracks as MP3 audio. >> >> This commit fixes the issue through eliminating redundant PSI/SI table >> updates by checking their version field, which is required by the standard >> to be incremented on every change no matter how minor. The way the demux is >> set up the bug itself looks unavoidable without a rewrite, but preventing a >> second *unaltered* PAT from closing the PMT section filter makes it behave >> properly with a delay of one PMT repetition. > > Please keep line length in log messages reasonable. > >> --- a/libavformat/mpegts.c >> +++ b/libavformat/mpegts.c >> @@ -372,6 +373,8 @@ static MpegTSFilter >> *mpegts_open_section_filter(MpegTSContext *ts, >> sec->opaque = opaque; >> sec->section_buf = av_malloc(MAX_SECTION_SIZE); >> sec->check_crc = check_crc; >> + sec->last_ver = -1; > > Please maintain vertical alignment of = here. >
I'm taking care of it already, no need to resend the patch. _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
