Opened 20 years ago
Closed 20 years ago
Last modified 20 years ago
#438 closed patch (fixed)
DVB multiple PMT sections per TSPacket fix
| Reported by: | Owned by: | danielk | |
|---|---|---|---|
| Priority: | minor | Milestone: | 0.19 |
| Component: | mythtv | Version: | head |
| Severity: | medium | Keywords: | |
| Cc: | Ticket locked: | no |
Description
Some DVB channels broadcast multiple PMT sections per TSPacket. The current behavior only parses the first PMT section in the TSPacket skipping or losing some of them. This results in the inability to tune to all of the channels on a transponder due to not finding the PMT. This patch reworks AssemblePSIP and HandleTSTables to loop over the packets to ensure that all the PMT segments are found. It has only been tested on NA DVB signals.
The patch probably needs a few things renamed.
Attachments (1)
Change History (10)
by , 20 years ago
| Attachment: | multiplePMT.patch added |
|---|
comment:1 by , 20 years ago
| Owner: | changed from to |
|---|
comment:2 by , 20 years ago
| Status: | new → assigned |
|---|
comment:3 by , 20 years ago
I saw this crash as well after I added the new field to PESPacket, a make clean of libmythtv solved this for me. I suspected the dependancies were not exactly perfect, but didn't look farther into it. Please let me know if you had done a full rebuild and I'll look farther into the SEGV you are seeing.
I'll rehash the patch with the latest changes from SVN, and fix up the formatting. I'm not sure exactly what I should be changing with respect to "if" being a keyword vs a function. I will need that explained before I can appropriately fix it.
comment:5 by , 20 years ago
I'll try a make clean right now.
Hold off on the formatting changes, I already formatted that version of the patch.
I didn't attach it because it contained some other changes too.
comment:7 by , 20 years ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
(In [7438]) Closes #438. (must do make clean). This allows multiple PES Packets per TS Packet.
You must do a "make clean" if you use a DVB or HDTV recorder, otherwise you will probably experience SEGFAULTS.
This is patch submitted by redmundt AT gmail.com, with minor modifications.
redmundt, please confirm this works for you.

This patch causes a SEGFAULT for me:
Program received signal SIGSEGV, Segmentation fault. [Switching to Thread -1362867280 (LWP 9834)] 0xb7b57232 in MasterGuideTable::TablePID (this=0x811b730, i=0) at atsctables.h:108 108 return ((_ptrs[i][2]<<8) | (_ptrs[i][3])) & 0x1fff; (gdb) bt #0 0xb7b57232 in MasterGuideTable::TablePID (this=0x811b730, i=0) at atsctables.h:108 #1 0xb7b54dea in DTVSignalMonitor::SetMGT (this=0x810ae68, mgt=0x811b730) at dtvsignalmonitor.cpp:263 #2 0xb7cf61c7 in DTVSignalMonitor::qt_invoke (this=0x810ae68, _id=5, _o=0xaec44150) at moc_dtvsignalmonitor.cpp:121 #3 0xb7d04ce7 in DVBSignalMonitor::qt_invoke (this=0x810ae68, _id=5, _o=0xaec44150) at moc_dvbsignalmonitor.cpp:143 #4 0x43977c91 in QObject::activate_signal (this=0x811de38, clist=0x811b1d8, o=0xaec44150) at qconnection.h:56 #5 0xb7cfee3e in ATSCStreamData::UpdateMGT (this=0x811de38, t0=0x811b730) at moc_atscstreamdata.cpp:196 #6 0xb7bd911e in ATSCStreamData::HandleTables (this=0x811de38, pid=8187, psip=@0x81199a0) at atscstreamdata.cpp:148 #7 0xb7bd1aae in MPEGStreamData::HandleTSTables (this=0x811de38, tspacket=0xae193008) at mpegstreamdata.cpp:466 #8 0xb7bd1c41 in MPEGStreamData::ProcessTSPacket (this=0x811de38, tspacket=@0xae193008) at mpegstreamdata.cpp:505 #9 0xb7bd1b7e in MPEGStreamData::ProcessData (this=0x811de38, buffer=0xae193008 "G_û\035", len=188) at mpegstreamdata.cpp:490 #10 0xb7c7f0e3 in DVBSignalMonitor::RunTableMonitor (this=0x810ae68) at dvbsignalmonitor.cpp:298 #11 0xb7c7d369 in DVBSignalMonitor::TableMonitorThread (param=0x810ae68) at dvbsignalmonitor.cpp:144 #12 0x419b3aba in start_thread (arg=0xaec44bb0) at pthread_create.c:261 #13 0x418141ee in clone () from /lib/tls/libc.so.6Also use ANSI C bracing, not K&R in any new code. Don't go over 80 columns, "if" is a keyword not a function, & please document any new methods you add.