[mythtv-commits] Ticket #5562: scanning Astra 28.2 doesn't populate the default authority descriptor
MythTV
mythtv at cvs.mythtv.org
Tue Jan 6 15:22:28 UTC 2009
#5562: scanning Astra 28.2 doesn't populate the default authority descriptor
-------------------------+--------------------------------------------------
Reporter: stuarta | Owner: stuarta
Type: defect | Status: assigned
Priority: minor | Milestone: 0.22
Component: channelscan | Version: head
Severity: low | Resolution:
Mlocked: 0 |
-------------------------+--------------------------------------------------
Comment(by David Matthews <dm at prolingua.co.uk>):
I've been looking into this and the attached patches enable the channel
scanner to pick up the default authority from Freesat data. The default
authority is actually transmitted using BAT and SDTo on the non-standard
PID 3841. BAT is used where many channels share the same default
authority, essentially BBC and ITV; and SDTo for the remainder. One
complication that appeared during testing was that there are SDTo, and
possibly BAT, on PID 0x11 with the same ID as those on PID 3841 but
different versions.
Patches 1, 2 and 3 are fairly straightforward. I originally used the BAT
code from #5530 but once it became clear that the layout of a BAT was
essentially the same as a NIT I largely copied the code from there.
Patch 4, which adds this into the scanner, is more complicated. The
existing logic is driven by the arrival of the NIT and SDT. When both
have been seen the information from the SDT is added to the database and
the next transport is selected. In the case of the Freesat default
authority it is necessary to wait until all the information from the BAT
and SDTo has been collected before the SDT can be processed, but with the
proviso that not all services in the SDT have a default authority. This
is done by looking at the SDT when it first arrives and setting a timer of
10 seconds for the first of the BAT and SDTo to arrive. Each BAT and SDTo
is processed to add the default authorities to a map and the timer
extended. The next time an SDT arrives after the time has expired it can
be processed. This all works because DVBStreamData only allows tables
with a particular version through once. The version for SDT is reset
(actually DTVSignalMonitor::HandleSDT does this anyway) so that it can be
seen again. The changes to ScanStreamData are to ensure that only the BAT
and SDTo on the desired pid are processed.
Note: While developing this patch I came across a bug that causes "mythtv-
setup -v siparser" to segfault at the end of a channel scan. The problem
is that the destructor for SIScan calls SIScan::loc after the channel
object has been deleted. The fix is to set channel to zero in deleteLater
and this fix is included in patch4.
--
Ticket URL: <http://svn.mythtv.org/trac/ticket/5562#comment:4>
MythTV <http://www.mythtv.org/>
MythTV
More information about the mythtv-commits
mailing list