[mythtv] Now/Next DVB EPG info

William Uther willu.mailingLists at cse.unsw.edu.au
Mon Feb 14 12:17:48 UTC 2005


Hi all,

   I realise that there is much 0.17 noise at the moment.  Feel free to 
give this email a lower priority.  :)

   I've been looking at having MythTV merge the DVB Now/Next show EPG 
information into the database.  Below is my current plan, and I thought 
I'd post here to see if it seems reasonable (this is my first bit of 
Myth hacking).

  1) Make the siparser grab the current and next program information and 
hand it on...

siparser.cpp:

504a505,506
 >               case 0x4E: /* current program */
 >               case 0x4F: /* next program */
1207a1210,1215
 >             if ((head->table_id == 0x4E) || (head->table_id == 0x4F))
 >             {
 >                 ((EventHandler*) 
Table[EVENTS])->Tracker[head->table_id_ext][0x4E].Reset();
 >                 ((EventHandler*) 
Table[EVENTS])->Tracker[head->table_id_ext][0x4F].Reset();
 >             }
 >

(Note that I see no reason why a patch like this one couldn't go in 
already.  I say "like this one" because I haven't actually tested this 
one myself yet.  There was an earlier patch posted to this list that 
did similar things.  It didn't have the Reset() lines.  Are these 
needed or have I misunderstood something here?)

  2) Adjust the prefs to that the "on air guide" can be on at the same 
time as xmltv (channelsettings.cpp, lines 275 and 304)

  3) Merge the new events into the database rather than just ignoring 
them. (siscan.cpp around line 997)
   I was assuming something like this during the code to process on air 
guide events:

   // find all programs in the DB with either start time -2 to +1 hours 
of this event (assuming shows are more likely to be delayed than moved 
forward) on the same channel
   // loop through them looking for a match
     //longest common substring in title - if over 50% of shorter 
string, then it is a match
     //overlapping time - if multiple title matches, most overlap in 
time is best match
   // if no title matches then insert duplicate entry in program table, 
increment counter
   // else take best match and see if start and end times have changed
     // if so, correct them and increment counter

(the counter I was referring to above is a counter in the current code 
that marks when changes have been made to the DB and the scheduler 
needs to be re-run.)

   This algorithm would occasionally leave gaps in the EPG.  I assume 
that is no big issue.  It might also occasionally cause overlaps in the 
EPG.  Is that going to cause a problem?

  4) I think I also need to change things so that siscan is called 
regularly.  Not sure where this is called from yet, or what the best 
schedule is.  Two options I'm considering:
    - Every 30 mins loop through the channels (just long enough to get 
Now/Next info)
    - Half way through the show prior to any scheduled recording, scan 
for Now/Next info

Any thoughts or suggestions?

Will          :-}

--
Dr William Uther                           National ICT Australia
Phone: +61 2 9385 6357               Computer Science and Engineering
Email: willu at cse.unsw.edu.au          University of New South Wales
Web: http://www.cse.unsw.edu.au/~willu/     Sydney, Australia



More information about the mythtv-dev mailing list