[mythtv-commits] Ticket #11399: EIT scanner causes unnecessary reschedules and prevents idle shutdown

MythTV noreply at mythtv.org
Fri Feb 8 22:10:44 UTC 2013


#11399: EIT scanner causes unnecessary reschedules and prevents idle shutdown
-----------------------------------+----------------------------
 Reporter:  Roger James <roger@…>  |          Owner:  stuarta
     Type:  Patch - Bug Fix        |         Status:  new
 Priority:  minor                  |      Milestone:  0.26.1
Component:  MythTV - EIT           |        Version:  0.26-fixes
 Severity:  medium                 |     Resolution:
 Keywords:  eit idle               |  Ticket locked:  0
-----------------------------------+----------------------------

Comment (by Roger James <roger@…>):

 Guys,


 Firstly I agree with what dekarl says. It is easy to split my current
 patch in the two parts. Virtually all the DVB heavy optimization stuff is
 confined to eitcache.cpp. If you just leave in there the bit that checks
 changes to endtime and returns a flag, then all the rest is about reducing
 the number of reschedules, which does fix the breakage!

 Any way back to the heavy DVB stuff.

 I think I will have to nail my colours to mast and defend my
 interpretation.


 This is going to sound horribly preachy, sorry.

 Here is what EN300468 section 5.1.1 says about version numbers


 {{{
 d)
 version_number:
 When the characteristics of the TS described in the SI given in the
 present document change
 (e.g. new events start, different composition of elementary streams for a
 given service),
 then new SI data shall be sent containing the updated information. A new
 version of the
 SI data is signalled by sending a sub_table with the same identifiers as
 the previous
 sub_table containing the relevant data, but with the next value of
 version_number.
 For the SI tables specified in the present document, the version_number
 applies to all
 sections of a sub_table.

 }}}

 Here is what EN300468 section 5.2.1 says about transport stream ids

 {{{
 The combination of original_network_id and transport_stream_id allow each
 TS to be uniquely
 identified throughout the application area of the present document.

 }}}


 I think some of the confusion is caused by mixing up what is meant by a SI
 table as an object and as data encoded into a transport stream for
 transmission. To me there is one notional EIT table object per original
 network id/transport stream id/service id combination. As one of its
 properties it has version number. Copies of this object are then encoded
 into various transmitted transport streams. If it is encoded into the
 transport stream to which it belongs it is encoded as an "actual" table.
 If it is encoded into any other transport stream it is encoded as an
 "other" table.

 Lets have a look at the following scenario. You are tuned to a transport
 stream with an original network id XXXX and a transport stream id YYYY.
 You a receive an EIT table with a table id of PF_EITa which must according
 to EN300468 section 5.2.4 contain original network id XXXX and transport
 stream id YYYY and a service id of ZZZZ. This table has a version of 8
 which you store and process. You then tune to a different mux. You then
 encounter a PF_EITo containing original network id XXXX, transport stream
 id YYYY, a service id of ZZZZ a version of 9. The service id of course
 refers to to original mux you were tuned to. If the version numbers "for
 the same actual snapshot of the data" can be different then you have
 absolutely no way of knowing whether this is new, old, or identical data
 to the snapshot you received previously marked version 8. So the only
 possible thing you can do is discard it. This would negate the whole
 concept of having "other" tables.

 I am off a for pint of beer (or three) in my local pub. My head hurts.

 Cheers,

 Roger

-- 
Ticket URL: <http://code.mythtv.org/trac/ticket/11399#comment:8>
MythTV <http://code.mythtv.org/trac>
MythTV Media Center


More information about the mythtv-commits mailing list