Opened 7 years ago

Closed 7 years ago

Last modified 7 years ago

#10207 closed Patch - Bug Fix (fixed)

*fix* "PESPacket: Failed CRC check 0xVARIABLE != 0xCONSTANT for StreamID = 0x70"

Reported by: dekarl@… Owned by: danielk
Priority: minor Milestone: 0.25
Component: MythTV - DVB Version: Master Head
Severity: medium Keywords:
Cc: danielk, Stuart Auchterlonie Ticket locked: no


I was itchy after the hack from #9375 got removed and tonight I had some time to scratch. The issue is that SI tables end up in the PESPacket's HasCRC implementation. The fix is to seed the virtual method table with the right functions when creating the various table buffers.

Still to do is changing the PSI only methods which have PES names but only work on PSI to have the right names and log correct messages. (e.g. if we know that its a CRC error in a PSI table we can resolve the table id to the correct name)

Been running with the patch for some hours and its still catching CRC errors in EIT tables correctly. recording, playback and even livetv still work, too.

Attachments (1)

0001-Use-PSIPTable-instead-of-PESPacket-to-get-correct-Ha.patch (3.9 KB) - added by dekarl@… 7 years ago.

Download all attachments as: .zip

Change History (6)

Changed 7 years ago by dekarl@…

comment:1 Changed 7 years ago by dekarl@…

letting it run over night I have some actual instances of the original issue this is the bt for "PESPacket: Failed CRC check 0x66082235 != 0xf2722266 for StreamID = 0x70"

Breakpoint 1, PESPacket::VerifyCRC (this=0x1a6db60) at mpeg/pespacket.cpp:158
158             LOG(VB_SIPARSER, LOG_INFO,
(gdb) bt
#0  PESPacket::VerifyCRC (this=0x1a6db60) at mpeg/pespacket.cpp:158
#1  0x00007ffff752c258 in InitPESPacket (this=0x1a6db60, tspacket=...) at mpeg/pespacket.h:45
#2  PESPacket::PESPacket (this=0x1a6db60, tspacket=...) at mpeg/pespacket.h:95
#3  0x00007ffff7521f1a in PSIPTable (this=0x7fffbcf29a38, tspacket=0x129c9f0, moreTablePackets=@0x7fffc92975af) at mpeg/mpegtables.h:374
#4  MPEGStreamData::AssemblePSIP (this=0x7fffbcf29a38, tspacket=0x129c9f0, moreTablePackets=@0x7fffc92975af) at mpeg/mpegstreamdata.cpp:372
#5  0x00007ffff752284b in MPEGStreamData::HandleTSTables (this=0x7fffbcf29a38, tspacket=0x129c9f0) at mpeg/mpegstreamdata.cpp:879
#6  0x00007ffff75292d9 in MPEGStreamData::ProcessTSPacket (this=0x7fffbcf29a38, tspacket=...) at mpeg/mpegstreamdata.cpp:1040
#7  0x00007ffff751eaaf in MPEGStreamData::ProcessData (this=0x7fffbcf29a38, buffer=0x12655c0 "G\001\201\024k\001", <incomplete sequence \336>, len=1572056) at mpeg/mpegstreamdata.cpp:983
#8  0x00007ffff796742a in DVBStreamHandler::RunTS (this=0x7fffbc736a00) at dvbstreamhandler.cpp:259
#9  0x00007ffff79694de in DVBStreamHandler::run (this=0x7fffbc736a00) at dvbstreamhandler.cpp:112
#10 0x00007fffee6a3175 in QThreadPrivate::start (arg=0x7fffbc3ee270) at thread/qthread_unix.cpp:320
#11 0x00007ffff094dd8c in start_thread () from /lib/x86_64-linux-gnu/
#12 0x00007fffedbe004d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#13 0x0000000000000000 in ?? ()

comment:2 Changed 7 years ago by beirdo

Owner: changed from Janne Grunau to danielk
Status: newassigned

comment:3 Changed 7 years ago by Stuart Auchterlonie

Cc: Stuart Auchterlonie added

comment:4 Changed 7 years ago by Github

Milestone: unknown0.26
Resolution: fixed
Status: assignedclosed

Fixes #10207. Applies the correct CRC check for PSIP packets.

Dekarl did an initial patch and I just expanded on it.

Branch: master Changeset: c64725c3488d207bec413b860806f629d6d154ce

comment:5 Changed 7 years ago by Raymond Wagner

Milestone: 0.260.25
Note: See TracTickets for help on using tickets.