Wie die letzten Postings zeigen, scheint die PrePad-Behandlung von AutoExtender doch von einigem Interesse zu sein. Deshalb gebe ich hier mal eine kurze Übersicht, was da so abläuft. Die Behandlung wird alle 2 Sek. aufgerufen. Sie erfolgt in Stufen und ist für jeden bereits bekannten Timer stufenweise reentrant, d.h. jeder hinzukommende Timer wird soweit wie möglich behandelt und bei einem Folgeaufruf wird versucht, an der abgebrochenen Stufe weiterzumachen.
1. Die Verschiebbarkeit des Timers wird anhand der Parameter MaxTimerDelay bzw. ProtectTimer ermittelt. Dabei werden auch Radio-Timer und Kurzzeit-Timer berücksichtigt.
2. Es wird eine besondere Behandlung für Wiederhol-Timer durchgeführt, deren Einzelheiten ich mir hier erspare.
3. Es wird festgestellt, ob der Timer bereits einen Vorlauf enthält. Dazu wird in der EPG-Event-Liste das erste Event gesucht, dessen Anfang im Timer enthalten ist. Die Differenz zwischen Timer-Anfang und Event-Anfang ist der enthaltene Vorlauf. Er wird mit dem AX-Vorlauf verrechnet. Insbesondere gibt es also
keinen zusätzlichen AX-Vorlauf, wenn der enthaltene Vorlauf bereits größer oder gleich PrePad ist. Der ganze Vorgang hängt von der Verfügbarkeit von EPG-Informationen ab, die nicht zu jeder Zeit im gewünschten Umfang zur Verfügung stehen. Tritt dieser Fall hier ein, wird (vorerst) abgebrochen und es gibt zunächst
keinen zusätzlichen AX-Vorlauf.
4. Es wird versucht, mit einer API-Funktion den Timer entsprechend dem zusätzlichen Vorlauf vorzuverlegen. Wenn dies nicht gelingt weil ein anderer Timer den Tuner bereits mit Beschlag belegt, wird untersucht, ob der andere Timer für den gleichen Kanal programmiert ist. Wenn ja, wird der Zusatzvorlauf passend verkürzt und der Timer geändert. Wenn nein, wird versucht, den ganzen Vorgang für den anderen Tuner zu wiederholen. Scheitert auch dieser Versuch, gibt es (vorerst)
keinen zusätzlichen Vorlauf.
Soweit - so gut. Übrigens: wer das für kompliziert hält, sollte sich nie mit Programmierung beschäftigen.
