This adversely affects the Toppy because, when the buffer is full, new entries are discarded leading to "holes" (gaps) in the Electronic Programme Guide (EPG)
The PruneEPG tap eliminates these holes by removing entries for channels that are not present in the channel lineup.
This is discussed in MyStuff ~ Reducing "No Information" Holes in MS EPG (although this is a MyStuff thread, this tap is applicable to all users)
* Install and forget (just put in the Auto Start folder; load position not important).
* Small memory footprint (64 KB).
* Minimal CPU overhead (about 20 ms every two minutes - should also reduce other eit processing overhead).
* Can be stopped using the TapCommander and/or "TopManager|PcControl| TapCommander".
* Automatically re-configures after scanning or channel deletion i.e. no need to stop/restart.
* Should not interfere with other taps e.g. EPG2MEI.
* Applicable for all users i.e. not solely for MyStuff users.
* Does not require any change to existing advice about deleting unwanted channels.
* Will continue to work when new channels are added by the broadcasters.
How does it work?
When the tap starts, it:-
1) finds specific locations in the firmware.
2) remembers the Service Ids for all configured channels.
3) hooks the fw_process_eit routine in the firmware (this allows the tap to intercept new entries).
As new eit entries arrive, the tap discards any whose Service Id doesn't correspond to a configured channel.
Note: Checking is extremely quick - it involves testing whether a bit is set in an array (rather than looping through a list of valid Service Ids)
This mechanism eliminates most unwanted packets at source; it also eliminates the CPU overhead that would have previously been involved in the processing of these unwanted packets.
Periodically (currently 2 minutes), the tap rebuilds (if necessary) the list of configured channels and deletes any existing entries that don't match a configured channel. A summary line is output to the Serial Port.
Note: As deletion of entries is "slow", the tap keeps the Toppy responsive by only deleting a few entries at a time.
This mechanism primarily deletes any unwanted entries that existed prior to the tap starting but may also remove others that exist following a change to the channel lineup.
Sample Serial Output
Note: In this sample, EPG2MEI reduced the events from 10510 to 9853 because of the restrictions in EPG2MEI.ini
Code: Select all
PruneEPG: PruneEPG 1.0 started at 12:33:23 (SysID=456, ApplID=1365) PruneEPG: e1= 801142E4, e2= 80114408, e3= 0, e4= 801570A8 PruneEPG: k5= 80157E74, k6= 0, k7= 0 PruneEPG: found: fw_event_table_size= 44x PruneEPG: found: fw_event_table = 80346a34x PruneEPG: found: fw_max_events = 14000 PruneEPG: found: fw_event_delete = 801570a8x ( [Ef] present) PruneEPG: found: fw_process_eit = 80157e74x PruneEPG: Rebuilt SvcIdCache (42 TV, 7 Radio) PruneEPG: Using hook number 0 EPG2MEI: startup, initial wait to 5min uptime PruneEPG: 12:33:44 Initial events= 1633, pruned= 761, kept= 872, secs=16.66 PruneEPG: 12:35:46 Initial events= 6282, pruned= 0, kept= 6282, secs= 0.01 PruneEPG: 12:37:46 Initial events= 9244, pruned= 0, kept= 9244, secs= 0.01 EPG2MEI: count=10971 flipflops=0 diff=10971 (0d 0h 5m 28s) EPG2MEI: count=11146 flipflops=0 diff= 175 (0d 0h 6m 13s) PruneEPG: 12:39:46 Initial events=10388, pruned= 0, kept=10388, secs= 0.02 EPG2MEI: count=11153 flipflops=0 diff= 7 (0d 0h 6m 58s) EPG2MEI: count=11168 flipflops=0 diff= 15 (0d 0h 7m 43s) EPG2MEI: count=11184 flipflops=0 diff= 16 (0d 0h 8m 28s) PruneEPG: 12:41:46 Initial events=10431, pruned= 0, kept=10431, secs= 0.01 EPG2MEI: count=11212 flipflops=0 diff= 28 (0d 0h 9m 13s) EPG2MEI: count=11271 flipflops=0 diff= 59 (0d 0h 9m 58s) EPG2MEI: count=11271 flipflops=0 diff= 0 (0d 0h 10m 43s) EPG2MEI: settled, dumping... EPG2MEI: start = 0d 0h 10m 43s PruneEPG: 12:43:46 Initial events=10510, pruned= 0, kept=10510, secs= 0.02 EPG2MEI: total 10510 events scanned EPG2MEI: end = 0d 0h 10m 54s, dur = 0m 10s EPG2MEI: post-processing... EPG2MEI: start = 0d 0h 10m 55s EPG2MEI: total 9853 events 9853 changes (inserted 0 old) = 9853 total EPG2MEI: end = 0d 0h 11m 47s, dur = 0m 52s EPG2MEI: [chLen=0] chSeqNo=0 waiting for change... PruneEPG: 12:45:46 Initial events=10510, pruned= 0, kept=10510, secs= 0.02 PruneEPG: 12:47:46 Initial events=10510, pruned= 0, kept=10510, secs= 0.02 PruneEPG: 12:49:46 Initial events=10510, pruned= 0, kept=10510, secs= 0.02 PruneEPG: 12:51:46 Initial events=10510, pruned= 0, kept=10510, secs= 0.01 PruneEPG: 12:53:46 Initial events=10515, pruned= 0, kept=10515, secs= 0.01 PruneEPG: 12:55:46 Initial events=10515, pruned= 0, kept=10515, secs= 0.01 12:57:02 REC 0: new event evtID=f9b0 on LCN 704 (was f9af) PruneEPG: 12:57:46 Initial events=10515, pruned= 0, kept=10515, secs= 0.01 PruneEPG: 12:59:46 Initial events=10515, pruned= 0, kept=10515, secs= 0.01 13:00:03 REC 0: new event evtID=f9b1 on LCN 704 (was f9b0) PruneEPG: 13:01:46 Initial events=10515, pruned= 0, kept=10515, secs= 0.02 PruneEPG: 13:03:46 Initial events=10515, pruned= 0, kept=10515, secs= 0.01 PruneEPG: 13:05:46 Initial events=10515, pruned= 0, kept=10515, secs= 0.02 PruneEPG: 13:07:46 Initial events=10515, pruned= 0, kept=10515, secs= 0.02 . . .
The tap can be installed by using the TopManager "Tools| Install Files| PruneEPG" option (this option should be rolled out to all users within 7 days)
Alternatively, the tap can be manually downloaded from www.GeeCeeBee.co.uk