-
Die vorliegende Erfindung betrifft
ein Verfahren zum Steuern der Ausführung einer ablauffähigen interaktiven
Audio-Video- (AVI) Programmkomponente.
-
Es wurden interaktive Fernsehsysteme
vorgeschlagen, in denen ein Fernsehempfänger einen vom Programmanbieter
programmierbaren Prozessor aufweist, der folgende Fähigkeiten
besitzt: Antworten auf vom Benutzer eingegebene Daten, Erzeugen
von Bildschirmgraphikanzeigen, die über das ausgesendete Video
gelegt werden, Erzeugen von Ton in Verbindung mit dem gesendeten
Audiosignal und/oder Austauschen von Daten mit dem Programmanbieter
oder andere externe Datenverarbeitungsdienste. In einem solchen
System steht am Ausstrahlungsort ein Computersystem zum Erzeugen
von interaktiven Anwendungsprogramminformationen einschließlich ablauffähigem Code
und Daten sowie zum Kombinieren der interaktiven Anwendungsprogramminformationen
als zusätzliche
Komponente mit den Video- und Audiokomponenten des zugehörigen Fernsehsignals.
Der Prozessor im Fernsehempfänger
empfängt
die interaktiven Anwendungsprogramminformationen vom Programmanbieter,
führt das durch
diese Informationen repräsentierte
interaktive Anwendungsprogramm aus, erzeugt Graphik- und Tonsignale,
die mit den Fernsehvideo- und – audiosignalen
kombiniert werden sollen, und verarbeitet über eine Fernbedienungseinheit
empfangene Benutzereingaben.
-
In einem vorgeschlagenen AVI-System
wird das zusammengesetzte AVI-Signal vom Programmanbieter in der
Form eines Paketdatenstroms ausgestrahlt, einschließlich einer
Mehrzahl von zeitmultiplexierten Paketdiensten. Jeder Paketdienst
führt eine
andere Signalkomponente des zusammengesetzten AVI-Signals. So führt beispielsweise
ein Dienst die Videokomponente, ein weiterer führt die Audiokomponente und
ein weiterer führt
die interaktive Anwendungsprogramminformationskomponente. Es kann
noch weitere Dienste geben, die Stereo- und SAP-Audiokanäle und/oder Bilduntertitelinformationen
usw. führen.
Ferner können
einige Paketdatenströme
Paketdienste beinhalten, die Signalkomponenten für mehr als ein AVI-Programm
führen.
Mit jedem Paketdienst ist eine eindeutige Dienstekomponentenkennung
(SCID) assoziiert, und die Pakete in diesem Paketdienst beinhalten
jeweils diese Dienstekennung.
-
Ferner hat ein Paketdienst in dem
vorgeschlagenen AVI-System einen Programmführer und beinhaltet eine vorbestimmte
Dienstekennung. Die vom Programmführer-Paketdienst geführten Daten assoziieren
die Komponenten eines AVI-Programms mit den Dienstekennungen der
diese Komponenten führenden
Paketdienste. Unter Verwendung dieser Daten können die die Komponenten des
gewünschten
AVI-Programms führenden
Paketdienste aus dem Paketstrom extrahiert werden.
-
Die Signalkomponenten im AVI-Signalpaketdatenstrom
werden von einer oder mehreren Übertragungseinheiten
geführt,
die jeweils aus einer Mehrzahl von Paketen bestehen. Ein erstes
Paket in jeder Übemagungseinheit
ist ein Header-Paket, die übrigen
Pakete in der Übertragungseinheit
sind zugehörige
Datenpakete. Das Header-Paket enthält Informationen über die
folgenden Daten, und die zugehörigen
Datenpakete führen
die Daten, aus denen sich dieser Teil der Signalkomponente zusammensetzt.
Verschiedene Übertragungseinheiten
können verschiedene
Anzahlen von Datenpaketen beinhalten, und die Unterteilung der Signalkomponenten
in Übernagungseinheiten
kann durch den zeitlichen Ablauf beeinflusst werden, der zum Liefern
der verschiedenen Signalkomponenten zu den Zuschauerorten zu gewünschten
Zeiten notwendig sind, oder durch andere Echtzeitüberlegungen.
-
Die interaktive Anwendungsprogramminformationskomponente
besteht aus einem oder mehreren Code-Modulen (die ablauffähigen Code
enthalten), möglicherweise
einem oder mehreren Datenmodulen, und einem Verzeichnismodul, das
Daten beinhaltet, die die Code- und Datenmodule beschreiben, die
die interaktive Anwendungsprogrammkomponente bilden. Diese Module
werden kontinuierlich im Anwendungsprogramm-Datenkomponentenfluss wiederholt.
Die Module werden eindeutig gekennzeichnet und werden von Übernagungseinheiten
wie oben beschrieben geführt,
wobei das Header-Paket die Kennung des Moduls und den Ort innerhalb
dieses Moduls enthält,
zu denen die Daten in den nachfolgenden Datenpaketen gehören. Die
interaktive Anwendungsprogramminformationskomponente beinhaltet
auch ein Sondersignal zum Steuern der Ausführung des AVI-Anwendungsprogramms.
So kann beispielsweise ein Signal ein gerade ablaufendes AVI-Anwendungsprogramm
anweisen, die Ausführung
zu unterbrechen; ein anderes kann ein gerade unterbrochenes AVI-Anwendungsprogramm
anweisen, die Ausführung
wieder aufzunehmen; und ein weiteres kann das gerade ablaufende
AVI-Anwendungsprogramm anweisen, mit der Ausführung aufzuhören. Diese
Signale können
in Signalpakete innerhalb des AVI-Programmkomponentenpaketdienstes
integriert werden.
-
Ein Prozessor in einem AVI-Empfänger extrahiert
zunächst
unter der Steuerung des Systemladers das Verzeichnismodul aus dem
Datenfluss und verwendet die im Verzeichnis enthaltenen Informationen
zum Bestimmen, welches Code-Modul zuerst ausgeführt werden soll. Dieses Code-Modul,
Autostart-Modul genannt, wird dann aus dem Datenfluss extrahiert
und in den Speicher geladen. Nach dem vollständigen Laden des Autostart-Moduls
in den Speicher beginnt der Prozessor mit der Ausführung des
Code-Moduls. Im Laufe seiner Ausführung kann das Code-Modul Daten von den
im Verzeichnismodul identifizierten Datenmodulen anfordern. Diese
Datenmodule werden dann extrahiert und in den Speicher geladen.
Nach dem vollständigen
Laden des Moduls in den Speicher wird das anfordernde Code-Modul
avisiert, und die Ausführung
wird mit dem Verarbeiten dieser Daten fortgesetzt. Ein Code-Modul
kann auch mit einem nachfolgenden verkettet werden. In einem solchen
Fall gibt das aktuelle Code-Modul eine Anforderung zur Verkettung
mit einem neuen, im Verzeichnismodul aufgeführten Code-Modul aus, und sein
Speicherplatz wird freigegeben. Das angeforderte Code-Modul wird
dann aus dem Datenfluss extrahiert und in den Speicher geladen. Nach
dem vollständigen
Laden in den Speicher wird es ausgeführt. Weitere Funktionen sind
möglich
und werden nachfolgend beschrieben.
-
Im Gegensatz zu anderen verteilten
Computersystemen kann sich die vom AVI-Empfänger empfangene AVI-Programmkomponente
jederzeit ändern.
So kann z. B. ein AVI-Programm von einer Nicht-AVI-Werbesendung
oder einer AVI-Werbesendung unterbrochen werden, was natürlich ein
anderes AVI-Programm beinhaltet. Oder ein Zuschauer kann einen Kanal
von einem AVI-Programm auf ein anderes AVI-Programm umschalten.
Ablauffähiger AVI-Code,
die von diesem Code erzeugten Ton- und Graphiksignale sowie die
empfangenen Audio- und Videokomponenten müssen stets richtig aufeinander synchronisiert
sein.
-
Gemäß einem Aspekt der vorliegenden
Erfindung wird ein Verfahren zum Steuern der Ausführung eines
interaktiven Audio-Video-Programms (AVI) in einem AVI-Empfänger bereitgestellt,
der einen Paketstrom mit einem AVI-Programm und Ausführungssignalen
empfängt,
wobei der Empfänger
einen Ausführungscontroller
(410) zum Steuern der Ausführung des AVI-Programms beinhaltet,
wobei das Verfahren durch die folgenden Schritte gekennzeichnet
ist: im Ausführungscontroller:
Laden des AVI-Programms in einen Speicher (412) als Reaktion auf
die Anwesenheit des AVI-Programms in dem Paketstrom; Senden einer
Aktivieren-Umschaltmeldung zu dem AVI-Programm als Reaktion auf
eine Benutzereingabe; Senden einer Ausgangsmeldung zum AVI-Programm
als Reaktion auf ein Ausführungsendesignal
in dem Paketstrom; Senden einer Wartemeldung zum AVI-Programm als
Reaktion auf ein Ausführungsunterbrechungssignal
in dem Paketstrom; und Senden einer Fortsetzungsmeldung zum AVI-Programm
als Reaktion auf ein Ausführungsfortsetzungssignal
in dem Paketstrom; und im AVI-Programm: Ausführen in: einem inaktiven Zustand
(61), in dem das AVI-Programm inaktiv ist; einem aktiven Zustand
(63), in dem das AVI-Programm abläuft; oder einem Wartezustand
(65), in dem die Ausführung
des AVI-Programms
unterbrochen ist; Eintreten in den inaktiven Zustand als Reaktion
auf das Laden des AVI-Programms in den Speicher; Halten der Ausführung und
Entladen des AVI-Programms aus dem Speicher als Reaktion auf die
Ausgangsmeldung; wenn im inaktiven Zustand, Eintreten in den aktiven Zustand
als Reaktion auf eine Aktivieren-Umschaltmeldung; wenn im aktiven
Zustand: Eintreten in den inaktiven Zustand als Reaktion auf die
Aktivieren-Umschaltmeldung; und Eintreten in den Wartezustand als
Reaktion auf eine Wartemeldung; und wenn im Wartezustand: Eintreten
in den aktiven Zustand als Reaktion auf eine Fortsetzungsmeldung;
und Eintreten in den inaktiven Zustand als Reaktion auf eine Aktivieren-Umschaltmeldung.
-
Gemäß einem zweiten Aspekt der
Erfindung wird ein Verfahren zum Steuern der Ausführung eines
interaktiven Audio-Video-Programms (AVI) in einem AVI-Empfänger bereitgestellt,
der selektiv einen aus einer Mehrzahl von Paketströmen unter
der Steuerung eines Benutzers empfängt, wobei jeder Paketstrom
ein AVI-Programm mit einer Kennung und Ausführungssignale beinhaltet, wobei
der Empfänger
einen Ausführungscontroller
(410) zum Steuern der Ausführung des AVI-Programms beinhaltet, wobei
das Verfahren durch die folgenden Schritte gekennzeichnet ist: im
Ausführungscontroller:
Laden des AVI-Programms in einen Speicher (412) als Reaktion
auf die Anwesenheit des AVI-Programms in dem gewählten einen aus der Mehrzahl
von Paketströmen,
Speichern der Kennung des geladenen Anwendungsprogramms in eine
jeweilige Stelle im Speicher und Durchsuchen von zuvor in dem Speicher
gespeicherten Blöcken,
die Kennungen von minimierten AVI-Programmen enthalten, und wenn
eine in einem Block enthaltene Kennung mit der Kennung des im Speicher
geladenen AVI-Programms übereinstimmt,
Setzen von Ausführungszustand
und Umgebung des neu geladenen AVI-Programms in einen Ausführungszustand
und eine Umgebung, die in dem passenden Block enthalten sind; Senden
einer Aktivieren-Umschaltmeldung an das AVI-Programm als Reaktion
auf eine Benutzereingabe; Senden einer Ausgangsmeldung zum AVI-Programm
als Reaktion auf ein Ausführungsendesignal
in dem gewählten
einen aus der Mehrzahl von Paketströmen; Senden einer Wartemeldung
zum AVI-Programm als Reaktion auf ein Ausführungsunterbrechungssignal
in dem gewählten
einen aus der Mehrzahl von Paketströmen; und Senden einer Fortsetzungsmeldung
zum AVI-Programm als Reaktion auf ein Ausführungsfortsetzungssignal in
dem gewählten
einen aus der Mehrzahl von Paketströmen; Senden einer Minimiermeldung
zu dem AVI-Programm als Reaktion auf die Anwesenheit eines AVI-Programms
in dem Datenstrom mit einer anderen Kennung als der Kennung an der
jeweiligen Stelle in dem Speicher; und im AVI-Programm: Ausführen in:
einem inaktiven Zustand (61), in dem das AVI-Programm inaktiv
ist; einem aktiven Zustand (63), in dem das AVI-Programm abläuft; einem
Wartezustand (65), in dem die Ausführung des AVI-Programms unterbrochen
ist; oder einem minimierten Zustand (67), umfassend die
folgenden Schritte: Haltender Ausführung des AVI-Programms; dann
Speichern der Kennung des AVI-Programms sowie von Ausführungszustand
und Umgebung des AVI-Programms in einem Block des Speichers; dann
Entladen des AVI-Programms aus dem Speicher; Eintreten in den inaktiven
Zustand als Reaktion auf das Laden des AVI-Programms in den Speicher;
Halten der Ausführung
und Entladen des AVI-Programms aus dem Speicher als Reaktion auf die
Ausgangsmeldung; wenn im inaktiven Zustand, Eintreten in den aktiven
Zustand als Reaktion auf eine Aktivieren-Umschaltmeldung; wenn im
aktiven Zustand: Eintreten in den inaktiven Zustand als Reaktion
auf die Aktivieren-Umschaltmeldung; und Eintreten in den Wartezustand
als Reaktion auf eine Wartemeldung; und wenn im Wartezustand: Eintreten
in den aktiven Zustand als Reaktion auf eine Fortsetzungsmeldung;
und Eintreten in den inaktiven Zustand als Reaktion auf eine Aktivieren-Umschaltmeldung;
und Eintreten in den minimierten Zustand als Reaktion auf die Minimiermeldung.
-
In den Zeichnungen zeigen:
-
1 ein
Blockdiagramm eines Teils eines AVI-Signaldecoders, der die vorliegende
Erfindung ausgestaltet;
-
2 ein
Software-Strukturdiagramm der Software, die von der in 1 illustrierten Verarbeitungseinheit 40 ausgeführt wird;
-
3 Ablaufdiagramme
und Speicherlayout-Diagramme, die für das Verständnis der Extraktion von Modulen
aus der Datenkomponente in einem AVI-Programm nützlich sind;
-
4 ein
Diagramm, teilweise in Blockform und teilweise in Speicherlayout-Form,
ebenfalls nützlich
zur Vermittlung des Verständnisses
der Extraktion von Modulen aus der Datenkomponente eines AVI-Programms;
-
5 ein
Ablaufdiagramm, das die Initialisierungsfunktion des Systemladers
illustriert; und
-
6 ein
Zustandsübergangsdiagramm, das
die Datenstromüberwachungsfunktion
des Systemladers illustriert.
-
1 ist
ein Blockdiagramm eines Teils eines die vorliegende Erfindung ausgestaltenden AVI-Signaldecoders.
Ein Decoder gemäß Illustration in 1 wird an einem Zuschauerort
installiert, an dem die Teilnahme an AVI-Programmen gewünscht wird.
Gemäß 1 ist ein Transportmechanismus (nicht
dargestellt) mit einem Eingangsanschluss 5 des Decoders
verbunden. Der Eingangsanschluss 5 ist mit einem Eingangsanschluss
eines Tuners 10 verbunden. Ein Ausgangsanschluss des Tuners 10 ist
mit einem Dateneingangsanschluss eines AVI-Programmkomponenten-Detektors 30 verbunden.
Ein Datenausgangsanschluss des Programmkomponentendetektors 30 ist
mit einem Systembus 416 einer Verarbeitungseinheit 40 verbunden.
Die Verarbeitungseinheit 40 beinhaltet eine Zentraleinheit
(CPU) 410, einen Lese/Schreibspeicher (RAM) 412 und
einen Festwertspeicher (ROM) 414, die auf bekannte Weise über den
Systembus 416 miteinander verbunden sind. Ein Strom-E/A-Adapter 408 ist bidirektional
zwischen dem Systembus 416 und einem Steueranschluss des
Programmkomponentendetektors 30 geschaltet.
-
Ein Audioprozessor 418,
der mit dem Systembus 416 verbunden ist, legt ein Audiosignal
an den AVI-Audioausgangsanschluss 25 an, und ein Videoprozessor 420,
der ebenfalls mit dem Systembus 416 verbunden ist, legt
ein Videosignal an den AVI-Videoausgangsanschluss 15 an.
Weitere Ein- und Ausgabeeinrichtungen sind durch einen E/A-Port 422,
der mit einem ortsgleichen lokalen Prozessor (nicht dargestellt) über einen
bidirektionalen Anschluss 45 verbunden ist, einen Benutzer-E/A-Adapter 424 zum
Empfangen von Daten von einem Benutzer über einen Eingangsanschluss 35 sowie
ein Modem 426 gegeben, das über einen bidirektionalen Anschluss 55 mit
einem externen Computer (nicht dargestellt) verbunden ist; alle
sind auf bekannte Weise auch mit dem Systembus 416 verbunden. Weitere
Geräte,
z. B. mathematische Prozessoren, weitere E/A-Adapter usw., können auf bekannte Weise mit
dem Systembus 416 verbunden werden. Ferner kann eine Buserweiterung
für eine
Verbindung zu anderen Geräten
in Gehäusen
außerhalb
des Decoder-Gehäuses einbezogen
werden.
-
Beim Betrieb trägt der Transportmechanismus,
der beispielsweise eine direkte RF- Satellitenverbindung, eine Kabelsystemzuleitung
oder eine faseroptische Verbindung zum Decoder sein kann, eine Mehrzahl
von AVI-Signalen, von denen beliebige vom Benutzer zum Betrachten
gewählt
werden können.
In einer Direktsatellitenverbindung kann beispielsweise eine Mehrzahl
von AVI-Datenströmen durch
Modulieren jeweiliger RF-Trägersignale
auf dem Transportmechanismus frequenzmultiplexiert werden. Jedes
RF-Trägersignal
wird von einem jeweiligen Transponder im Satelliten zum Zuschauerort weitergeleitet.
Der Tuner 10 wählt
auf bekannte Weise ein gewünschtes
RF-modulierte Signal unter der Steuerung des Prozessors 40.
So wird z. B. im Direktsatellitensystem das RF-modulierte Signal,
das die Paketdienste enthält,
die die Komponenten des gewünschten
AVI-Programmsignals führen,
von einem bekannten RF-Tuner abgestimmt. Der Ausgang des Tuners 10 ist
ein digitaler Basisband-Paketdatenstrom, der diese Paketdienste
enthält.
-
Die CPU 410 fordert die
gewünschten
Paketdienste vom Programmkomponentendetektor 30 durch Schreiben
der gewünschten
Dienstekennungen und RAM 412 Pufferstellen in die entsprechenden
SCID- (Dienstekomponentenkennung) und DMA- (Direktspeicherzugriff)
Controllerregister im Programmkomponentendetektor 30 über den Strom-E/A-Adapter 408 an.
Der Programmkomponentendetektor 30 überwacht dann den Paketdatenstrom
für die
gewünschten
Paketdienste. Wenn Header-Pakete von einem der gewünschten
Paketdienste empfangen werden, dann werden sie mit bekannten DMA-Schreibtechniken
in einem bestimmten Header-Paketpuffer im RAM 412 gespeichert,
und es wird ein Header-Paketunterbrechungssignal erzeugt. Wenn Datenpakete
von beliebigen der gewünschten Paketdienste
empfangen werden, dann werden sie ebenfalls mit bekannten DMA-Schreibtechniken
in den zuvor vorgegebenen Pufferstellen im RAM 412 gespeichert.
Wenn alle Datenpakete in der Übertragungseinheit
empfangen sind, wird ein Daten-komplett-Interruptsignal erzeugt.
Der Empfang von Header- und/oder Datenpaketen von einem Paketdienst kann
unter der Steuerung der CPU 410 freigegeben und gesperrt
werden. Eine detailliertere Beschreibung des Programmkomponentendetektors 30 befindet
sich in der US-Patentanmeldung
mit der Seriennummer 232,787, PACKET VIDEOSIGNAL
INVERSE TRANSPORT PROCESSOR MEMORY ADDRESS CIRCUITRY von K. E. Bridgewater
et al., eingereicht am 22.4.94.
-
Wenn beispielsweise ein neues RF-modulierte
Signal vom Tuner 10 abgestimmt wird, dann wird der den
Programmführer
enthaltende Paketdienst von der CPU 410 angefordert, indem
die feste Programmführer-Dienstekennung
zu einem Dienstekennungsregister im Programmkomponentendetektor 30 gesendet
wird. Wenn die Daten in den Programrnführerpaketen empfangen und im
Speicher gespeichert sind, dann lassen es diese Daten zu, dass die
CPU die Paketdatendienste für
das gewünschte
AVI-Programm anfordert.
-
Wenn der Programmkomponentendetektor 30 Pakete
in den angeforderten Paketdiensten empfangen und sie über DMA
in die zuvor vorgegebenen Pufferstellen im RAM 412 geschrieben hat,
dann lesen der Videoprozessor 420 und der Audioprozessor 418 die
Daten aus den RAM 412 Pufferstellen in Verbindung mit ihren
jeweiligen Paketdiensten mit bekannten DMA-Lesetechniken unter der
Steuerung des Programmkomponentendetektors 30. Videoprozessor 420 und
Audioprozessor 418 decodieren dann die komprimierten und
codierten Daten, um jeweils das AVI-Videosignal am Ausgangsanschluss 15 und
das AVI-Audiosignal am Ausgangsanschluss 25 zu erzeugen.
Es ist auch möglich,
dass die CPU 410 mit dem Videoprozessor 420 und/oder
dem Audioprozessor 418 im Decodierungsprozess zusammenarbeitet.
Die Datenkomponentenpaket-Dienstepakete
werden unter der Steuerung der CPU 410 auf eine nachfolgend
beschriebene Weise verarbeitet.
-
Wie oben beschrieben, wird, wenn
der Programmkomponentendetektor 30 ein Header-Paket von einem angeforderten
Paketdienst empfängt,
dieses an einer bestimmten Stelle im RAM 412 für diesen
Paketdienst gespeichert, und ein Header-Paket-Interruptsignal wird
für die
CPU 410 erzeugt. Als Reaktion auf das Header-Paket-Interruptsignal
wird ein Interrupt-Handler ausgeführt, der den Inhalt des Header-Pakets
analysiert und entweder die RAM 412 Pufferstellen in den
DMA-Registern im
Programmkomponentendetektor 30 aktualisiert und den DMA-Transfer
freigibt oder den DMA-Transfer sperrt, wenn die Übertragungseinheit nicht gewünscht wird. Nach
der Freigabe des DMA-Transfers werden dann die Daten in den Datenpaketen
unter DMA-Steuerung in den RAM 412 geladen. Nach dem Laden
der Datenpakete erzeugt der Programmkomponentendetektor 30 ein
Daten-komplett-Interruptsignal. Als Reaktion auf das Daten-komplett-Interrupt-Signal
wird ein Interrupt-Handler ausgeführt, der "Reinigungs"-Funktionen durchführt und auf das nächste Header-Paket
vorbereitet.
-
2 ist
ein Diagramm des Aufbaus von Software 200, die auf der
in 1 illustrierten Verarbeitungseinheit 40 läuft. 2 illustriert die Hauptsoftwarekomponenten,
aus denen sich das multitaskingfähige
AVI-Verarbeitungsbetriebssystem zusammensetzt. In 2 werden alle Komponenten im ROM 414 gespeichert,
mit Ausnahme des Anwendungsprogramms, das durch den dunklen Bereich angedeutet
ist. Das Anwendungsprogramm wird von der Datenkomponente des AVI-Signals
geführt,
wird von der Rundfunkstelle empfangen und im RAM 412 gespeichert.
Die in 2 illustrierten
Softwarekomponenten repräsentieren
ablauffähigen
Code und zugehörige
konstante Daten. Während
seines Ablaufs kann der Code variable Daten erzeugen und darauf zugreifen,
die im RAM 412 gespeichert sind.
-
Im vorgeschlagenen AVI-Rundfunksystem können verschiedene
Decoder CPUs unter Verwendung verschiedener Anweisungssätze verwenden,
z. B. von verschiedenen Herstellern. In diesem System ist das Anwendungsprogramm
ein prozessorunabhängiger
Zwischencode. Die Software in jedem Decoder beinhaltet eine Komponente,
die den Zwischenanwendungscode interpretiert (INTERPRETER). So kann
das ausgesendete Anwendungsprogramm auf Decodern ausgeführt werden,
die einen beliebigen Typ von CPU 410 enthalten. Dieser
Interpreter liest die AVI-Datenkomponentenanweisungen im Zwischencode
vom RAM 412, manipuliert Speicher und interagiert mit der
Hardware durch andere Softwarekomponenten über eine Anwendungsprogrammierschnittstelle
(API). Diese API, bei der es sich grundsätzlich um eine Liste von einem
Anwendungsprogramm zur Verfügung
stehenden Subroutinen sowie der für deren Abruf notwendigen Informationen
handelt, wird veröffentlicht
und kann vom Anwendungsprogrammierer zum Zugreifen auf die Decoderelemente
verwendet werden.
-
Eine mathematische Bibliothek führt alle
zum Implementieren von Ganzzahlen- und Gleitkomma-Arithmetik benötigten Funktionen
aus. Ein Ablaufbetriebssystem steuert alle Treiber, die zum Überwachen
der Datenkomponente des AVI-Signals notwendig sind, und verarbeitet
angeforderte Module, wie nachfolgend ausführlicher beschrieben wird. Eine
Benutzerschnittstellen-Managementkomponente handhabt die gesamte
Benutzerinteraktion und benutzt eine Graphikbibliothek sowie einen
Event-Manager für
die Kommunikation mit dem Benutzer. Die Graphikbibliothek führt die
gesamte Erzeugung von Graphikbildern aus, die auf das empfangene
AVI-Video gelegt werden, und verwendet die mathematische Bibliothek
zum Zeichnen komplexer Kurven.
-
Die verschiedenen Softwarekomponenten der
Decoder-Software kommunizieren asynchron mit anderen, indem sie
einander Meldungen senden. Jede Programmkomponente hat eine Meldungswarteschlange
und funktioniert dadurch, dass sie wiederholt die nächste Meldung
aus der Warteschlange liest, diese Meldung verarbeitet, möglicherweise
eine Meldung zu einer anderen Programmkomponente sendet und, wenn
keine Meldungen mehr anhängig sind,
auf die nächste
Meldung wartet. Der Event-Manager verwaltet die Kommunikation dieser
Meldungen zwischen den anderen Softwarekomponenten, indem er die
Meldungen ordnungsgemäß leitet
und die Meldungswarteschlangen verwaltet.
-
Jeder Hardware-Adapter beinhaltet
auch einen zugehörigen
Software-Treiber. Der Treiber führt die
eigentliche Interaktion zwischen der CPU 410 und den Registern
im zugehörigen
Hardware-Adapter über
den Systembus 416 aus. So gibt es beispielsweise Treiber
für das
Modem 426, den externen E/A-Port 422, den Strom-E/A-Adapter
408 und die Benutzer-E/A 424. Darüber hinaus steuern separate Treiber
einen Software-Timer sowie die Fronttafel des Decoders an. Diese
Treiber sind stark vom Event-Manager abhängig. Alle obigen Komponenten arbeiten
mit gemeinsamen Funktionen, die von einem Multitasking-Kernel bereitgestellt
werden. So verwaltet der Kernel beispielsweise Prozessprioritäten, Aktive-Tasks-Warteschlangen,
Signale, Semaphore, Präemptiv-Task-Umschalttaktimpulse,
Interrupts (Hardware und Software) sowie Prozessstapel. Darüber hinaus
besorgt der Kernel Hardware-Initialisierung und Einleitung der ersten
Systemtask, nämlich
einem Systemlader.
-
Beim Anstoß führt der Systemlader API-Aufrufe
an das Ablaufbetriebssystem aus, das wiederum den Stromtreiber anweist,
die entsprechenden Daten über
den Strom-E/A-Adapter 408 zum Programmkomponentendetektor 30 zu
senden. Diese API-Aufrufe vom Systemlader leiten in einer nachfolgend ausführlicher
beschriebenen Weise einen Scan des Datenkomponentenpaketdienstes
für das
Verzeichnismodul ein. Wenn das Verzeichnismodul gefunden ist, wird
es in den RAM 412 geladen und es wird geprüft, ob alle
benötigten
Betriebsmittel zur Ausführung
dieses Programms zur Verfügung
stehen. Wenn ja, leitet der Systemlader einen Scan der AVI-Datenkomponente
für das
erste Modul ein, Autostart-Modul genannt, so dass das AVI-Programm
eingeleitet wird. Wenn das Autostart-Modul gefunden ist, wird es
aus dem Datenkomponentenpaketdienst extrahiert und in den RAM 412 geladen.
Dieses Autostart-Modul hat die Form von Zwischencode und wird ausgeführt, indem
es vom Interpreter interpretiert wird. Das Autostart-Modul führt den
Rest der Initialisierung aus und beginnt mit der Ausführung des
AVI-Programms. Dieses Programm kann möglicherweise anderen Code und
andere Datenmodule laden und eine Verkettung zu anderen Code-Modulen
herstellen, alles über API-Aufrufe.
Auf diese Weise funktioniert der Systemlader auf dieselbe Weise
wie eine klassische UNIX® Shell.
-
Zusätzlich setzt der Systemlader
den Scan des Datenkomponentenpaketdienstes fort, indem er übertragene
Verzeichnismodule mit dem aktuellen Verzeichnismodul im RAM 412 vergleicht.
Wenn sich das übertragene
Verzeichnismodul von dem im RAM 412 gespeicherten unterscheidet,
dann bedeutet das, dass sich der Datenkomponentenpaketdienst geändert hat,
wie z. B. dann, wenn ein Zuschauer den Kanal umschaltet oder wenn
eine interaktive Werbesendung ausgestrahlt wird. In diesem Fall
wird mit der API eine Meldung über
den Event-Manager zum Anwendungsprogramm gesendet. Als Reaktion auf
diese Meldung hebt das Anwendungsprogramm die Zuordnung aller seiner
Betriebsmittel auf und behält
nur eine minimale Präsenz
im Verarbeitungselement 40. So kann beispielsweise der
zum Speichern aller Code- und Datenmodule verwendete Speicherplatz
freigegeben werden, und nur der Ausführungszustand der Anwendung
wird im RAM 412 gehalten. Nach Abschluss der Minimierung
des Anwendungsprogramms wird eine. Meldung zum Systemlader gesendet.
-
Der Systemlader weist dann die Betriebsmittel
zu, die zum Ausführen
des durch das neue Verzeichnismodul repräsentierten AVI-Programms notwendig
sind. Wenn ein neues Verzeichnismodul im AVI-Datenkomponentenpaketdienst
erfasst wird, dann wird eine Liste von zuvor minimierten Anwendungen
durchsucht, und wenn die durch das neue Verzeichnis repräsentierte
Anwendung vorhanden ist, wird die Anwendung wieder aufgenommen,
indem die benötigten
Code- und Datenmodule vom Datenkomponentenfluss neu geladen und
die Ausführung
dort wieder aufgenommen wird, wo sie zuvor unterbrochen wurde. Dies
kann am Ende einer zwischengeschalteten interaktiven Werbesendung
geschehen. Dieser Prozess kann rekursiv sein. wo ein zweites AVI-Programm
selbst durch ein drittes AVI-Programm unterbrochen und später wieder
aktiviert werden kann.
-
3 illustriert
Ablaufdiagramme und Speicherlayout-Diagramme, 4 ist ein ausführlicheres Blockdiagramm des
Programmkomponentendetektors 30 (1) sowie ein ausführlicheres Speicherlayout-Diagramm,
das zur Vermittlung eines Verständnisses
der Extraktion von Modulen aus dem Datenpaket in einem AVI-Programm
nützlich
ist. In 4 ist der digitale
Basisband-Paketstrom vom Tuner 10 (von 1) mit jeweiligen Dateneingangsanschlüssen eines
Daten-DMA-Controllers 32 und eines Header-Paket-DMA-Controllers 34 im
Programmkomponentendetektor 30 verbunden. Jeweilige Datenausgangsanschlüsse von
Daten-DMA-Controller 32 und
Header-Paket-DMA-Controller 34 werden mit dem Systembus 416 der
Verarbeitungseinheit 40 verbunden. Der Strom-E/A-Adapter 408 ist zwischen
dem Systembus 416 und jeweiligen Steuereingangsanschlüssen des
Daten-DMA-Controllers 32 und des Header-Paket-DMA-Controllers 34 geschaltet.
Beim Betrieb überträgt der Strom-E/A-Adapter 408 Steuerinformationen,
z. B. Pufferstellenstart- und -endadressen, Lese- und Schreibadressen sowie
Transferzahlen auf bekannte Weise von der CPU 410 (von 1) zum Daten-DMA-Controller 32 und
zum Header-Paket-DMA-Controller 34. Der Strom-E/A-Adapter 408 kann
dann den Daten-DMA-Controller 32 und/oder
den Header-Paket-DMA-Controller 34 befähigen, auf bekannte Weise jeweils
Daten- oder Header-Pakete vom Paketstrom zum Puffer zu übertragen,
oder er kann solche Übertragungen
unter der Steuerung der CPU 410 sperren. Wenn der Daten-DMA-Controller 32 eine Datenübertragung
abgeschlossen hat, dann erzeugt er ein Daten-komplett-Interruptsignal
für die
CPU 410. Wenn der Header-Paket-DMA-Controller 34 das Laden
eines Header-Pakets abgeschlossen hat, dann erzeugt er ein Header-Paket-Interruptsignal
für die
CPU 410.
-
4 repräsentiert
den RAM 412 durch einen großen Block, und Datenstrukturen
werden durch kleinere Blöcke
innerhalb des großen
Blocks dargestellt. Die Blöcke
von 4 sind lediglich
schematisch und sollen keine absoluten oder relativen Stellen oder
Größen illustrieren,
die im RAM 412 für die
Datenstrukturen zugeordnet sind. 412 beinhaltet Datenstrukturen
für die
Modulanforderungswarteschlange 322, einen Header-Paketpuffer 324,
einen Verzeichnismodulpuffer 326 und einen Modulpuffer 328.
Informationsfelder in den Datenstrukturen sind als horizontale Scheiben
dargestellt, die den Namen des in diesem Feld enthaltenen Informationstyp
enthalten. Dies wird nachfolgend ausführlicher erörtert.
-
3 illustriert
die Prozedur zum Extrahieren eines Moduls von dem Datenkomponentenpaketdienst
und zum Speichern desselben in einem Puffer im RAM 412. Ähnliche
Prozeduren erfolgen für
eine andere Modulverarbeitungen, wie nachfolgend beschrieben wird.
In 3 werden Maßnahmen
in einem Anwendungsprogramm (oder dem Systemlader) in der linken
Spalte unter der Überschrift "ANW. PROG" illustriert. In
Block 302 richtet das Anwendungsprogramm unter Verwendung
des API eine Anforderung an das Ablaufbetriebssystem zum Laden eines
Moduls mit der Kennungs-ID vom AVI-Programmkomponentenpaketdienst.
Wie oben beschrieben, sind API-Aufrufe grundsätzlich Subroutinenaufrufe zu Betriebssystemfunktionen.
Die Programmausführung
wird somit zum Ablaufbetriebssystem (FOS) übertragen. Vom FOS durchgeführte Maßnahmen
sind in der nächsten
Spalte rechts unter der Überschrift "FOS" illustriert. Da
die Anforderung das Laden eines Moduls beinhaltet, fordert das FOS
in Block 312 eine Speicherplatzzuweisung vom Speichermanager
mit einer zum Aufnehmen des Moduls ausreichenden Größe an. Wenn
das angeforderte Modul beispielsweise ein Code- oder Datenmodul
ist, dann beinhaltet das zuvor gespeicherte Verzeichnismodul 326 (von 4) ein Feld, das die Länge (LENGTH)
der Modul-ID enthält.
In diesem Fall weist ein Speichermanager einen Modulspeicherpuffer (328 von 4) mit einer Startadresse
START und einer Endadresse END zu. Dann werden in Block 314 Informationen,
die die Anforderung beschreiben, z. B. die Kennungs-ID des Moduls,
der Anforderungstyp REQUEST (in diesem Fall eine Anforderung zum
Extrahieren und Laden eines Moduls) und die zugewiesene Pufferstartadresse
START sowie die Endadresse (END) alle im Einsprung in der Anforderungswarteschlange
(QUEUE) 322 gespeichert. Dann wird der Header-Paket-DMA-Controller 34 zum Laden
von Header-Paketen in den RAM 412 freigegeben, wenn diese
im Paketstrom auftauchen.
-
Wenn ein Verzeichnismodul angefordert wird,
dann ist seine Länge
a priori nicht bekannt. In diesem Fall wird eine relativ große Speicherplatzzuordnung
angefordert. Wenn sich diese Zuordnung als zu klein herausstellt,
dann wird die Anforderung wiederholt, nachdem eine größere Speicherplatzzuweisung
angefordert wurde, bis entweder das Verzeichnismodul geladen ist
oder bis ermittelt ist, dass nicht genügend Speicherplatz zum Laden
vorhanden ist, und in diesem Fall wird der Versuch zum Abarbeiten des
AVI-Programms abgebrochen.
-
Das FOS kehrt dann sofort zum aufrufenden Anwendungsprogramm
zurück.
Das Anwendungsprogramm kann dann eine andere Verarbeitung durchführen, z.B.
Ausgeben von Anforderungen von anderen Modulen, andere Initialisierungen
usw. Wenn ein Zugriff auf das angeforderte Modul benötigt wird,
kann das Anwendungsprogramm in Block 304 einen API-Aufruf
an eine Wartefunktion im Kernel ausgeben. Diese Funktion unterbricht
die Ausführung
des Anwendungsprogramms, bis eine Meldung von diesem Anwendungsprogramm
empfangen wird, die ein erfolgreiches Laden des angeforderten Moduls
anzeigt. Nach Eingang einer solchen Meldung wird das Anwendungsprogramm
zum Verarbeiten dieser Meldung reaktiviert. Alternativ kann das
Anwendungsprogramm aktiv bleiben, z. B. um schneller auf Benutzereingaben
reagieren zu können
und um periodisch seine Meldungswarteschlange nach dieser Meldung
abzufragen, was ein erfolgreiches Laden des angeforderten Moduls
bedeutet, und die Meldung nach dem Empfang zu verarbeiten.
-
Wie oben beschrieben, lädt der Header-Paket-DMA-Controller 34 Header-Pakete
in einen Header-Paket- (HDR PKT) Puffer 324 (von 4) im RAM 412,
zuvor vom Speichermanager zugeordnet, und gibt ein Header-Paket-Interruptsignal
an die CPU 410 aus. Ein Teil der vom Header-Interrupt-Handler
im Kernel durchgeführten
Verarbeitung ist in der Spalte mit dem Titel "HEADER INTR" in 3 illustriert.
In Block 332 wird die Kennung des Moduls, die in der Übertragungseinheit
geführt
wird, für
die dies das Header-Paket ist, aus einer bekannten Stelle, ID, im
Header-Paketpuffer 324 abgerufen. In Block 334 wird
eine Anforderungswarteschlange 322 untersucht, um zu ermitteln,
ob für
dieses Modul eine anhängige
Anforderung vorhanden ist.
-
Wenn eine anhängige Anforderung für dieses
Modul vorhanden ist, wird der Datenpaket-DMA-Controller 32 in Block 336 im
Programmkomponentendetektor 30 wie folgt initialisiert:
mit der Startadresse START des Modulpuffers 328 und der Endadresse
END von der Anforderungswarteschlange 322; einer Schreibadresse,
die die Summe der Startadresse START des Modulpuffers 328 und
des Übertragungseinheitsdatenversatzes
OFFSET (d. h. START + OFFSET) ist; und einer letzten Schreibadresse,
nämlich
START + OFFSET + GRÖSSE
(oder alternativ eine Ladezahl, die die Größe SIZE vom Header-Paketpuffer 324 anstelle
der letzten Schreibadresse ist). Dann wird der Datenpaket-DMA-Controller 32 freigegeben.
-
Wenn dies das erste nach der Ladeanforderung
empfangene Header-Paket ist, dann wird in Block 338 ein
Zeiger auf die erste in der Anforderungswarteschlange 322 gespeicherte
Schreibadresse (FIRST) auf die Schreibadresse dieser ersten Übertragungseinheit
initialisiert (d.h. FIRST = START + OFFSET). Ferner wird ein Zeiger
auf die erwartete nächste
Schreibadresse, NEXT, ebenfalls in der Anforderungswarteschlange 322 gespeichert,
auf die Schreibadresse der ersten Übertragungseinheit initialisiert
(d. h. NEXT = START + OFFSET). Dann erfolgt in Block 338 eine
weitere Verarbeitung, die nachfolgend ausführlicher beschrieben wird.
So wird z. B. ein Sonderzeiger auf die Stelle in der Anforderungswarteschlange 322 der
gerade verarbeiteten Anforderung, CURR REQ, an einer vorbestimmten Stelle
(nicht dargestellt) im RAM 412 gespeichert. Dann kehrt
in Block 339 der Interrupt-Handler (339) zurück.
-
Der Datenpaket-DMA-Controller 32 initialisiert
einen Schreibzeiger (WP) auf die zuvor empfangene Schreibadresse
(START + OFFSET) und lädt Daten
von den folgenden Datenpaketen im AVI-Programmkomponentenpaketdienst
in sequentielle Stellen im Modulpuffer 328 im RAM 412.
Wenn alle Daten in der Übertragungseinheit
in den RAM 412 geladen sind, dann wird das Daten-komplett-Interruptsignal erzeugt.
Ein Teil der durch den Daten-komplett-Interrupt-Handler im Kernel
ausgeführten
Verarbeitung ist in der rechten Spalte mit dem Titel "DATA COMPL INTR" von 3 illustriert.
-
In Block 342 werden Reinigungsfunktionen in
Bezug auf den aktuellen Status der DMA-Übertragung
ausgeführt.
Der aktuelle Anforderungszeiger (CURR REQ), der zuvor im Header-Paket-Interrupt-Handler
eingestellt wurde, zeigt auf den Einsprung in der Anforderungswarteschlange 322,
für die
gerade eine Übertragungseinheit
den Ladevorgang beendet hat. Der erwartete nächste Schreibadresszeiger,
NEXT, in der aktuellen Anforderung wird durch den Wert SIZE vom
Header-Paketpuffer 324 inkrementiert und zeigt jetzt auf
die für
die nächste Übertragungseinheit
erwartete Schreibadresse. Wenn der neue Wert des erwarteten nächsten Schreibadresszeigers,
NEXT, gleich der Endadresse END des Modulpuffers 328 ist,
dann wird er auf die Startadresse START des Modulpuffers 328 auf
umlaufende Weise zurückgesetzt.
-
In Block 344 wird ermittelt,
ob das gesamte angeforderte Modul im Speicher geladen ist. Der Wert
des erwarteten nächsten
Schreibadresszeigers NEXT wird mit dem Wert der ersten geladenen Adresse
START verglichen. Wenn sie gleich sind, dann wurde das gesamte Modul
geladen. In Block 346 wird über den Event-Manager eine
Meldung zum anfordernden Anwendungsprogramm gesendet, um anzuzeigen,
dass das anfordernde Modul vollkommen zurückgespeichert wurde, in 3 als gestrichelte Linie
illustriert. Ferner wird die Anforderung aus der Anforderungswarteschlange 322 herausgenommen.
Wenn der Wert der erwarteten nächsten Schreibadresse
NEXT nicht gleich der ersten geladenen Adresse START ist, kehrt
der Datenkomplett-Intenupt-Handler (349) zurück, und
die nächste
Daten für
das erwartete Modul enthaltende Übertragungseinheit
wird wie oben beschrieben vom Header-Paket-Interrupt-Handler verarbeitet.
In beiden Fällen wird
der aktuelle Anforderungszeiger (CURR REQ) weggenommen.
-
Wenn ein Teil einer Übertragungseinheit
vom Programmkomponentendetektor 30 nicht richtig empfangen
wurde, dann wird ein nachfolgendes Header-Paket empfangen, bevor
das Datenkomplett-Interruptsignal vom vorherigen Header-Paket vom
DMA-Schaltkomplex im Programmkomponentendetektor 30 erzeugt
wurde. Dies hat wiederum zur Folge, dass ein nachfolgendes Header-Paket-Interruptsignal
erzeugt wird, bevor das vorhergehende Datenkomplett-Interruptsignal
erzeugt werden kann. Die Verarbeitung im Header-Paket-Interrupt-Handler und im Daten-komplett-Interrupt-Handler
kann zum Identifizieren dieser Situation zusammenarbeiten und einen
solchen Fehler handhaben.
-
Im Header-Paket-Interrupt-Handler
erfolgt eine solche Verarbeitung in Block 338 (von 3), nachdem der Datenpaket-DMA-Controller
zum Empfangen der nächsten Übertragungseinheit
freigegeben wird. Für
jedes empfangene Header-Paket wird die erwartete nächste Schreibadresse
NEXT im aktuellen Anforderungswarteschlangen-Einsprung, zuvor durch
den Daten-komplett-Interrupt-Handler
aktualisiert, mit der Schreibadresse (START + OFFSET) für das neu
empfangene Datenpaket verglichen. Wenn sie gleich sind, dann wurde
die vorherige Übertragungseinheit
erfolgreich empfangen. Ist jedoch die letzte Endadresse nicht dieselbe
wie der neue Offset, dann bedeutet dies, dass der DMA-Transfer der
vorherigen Übertragungseinheit
nicht vollständig
abgeschlossen wurde. In diesem Fall werden sowohl die erste Schreibadresse
FIRST als auch die erwartete nächste
Schreibadresse NEXT auf die aktuelle Schreibadresse (START + OFFSET)
aktualisiert. Das heißt,
zuvor geladene Übertragungseinheiten
werden im Wesentlichen verworfen, und das Laden des Moduls wird
mit der aktuellen Übertragungseinheit neu
gestartet. Diese Form der Wiederherstellung nach einem Daten-fehlen-Fehlertyp
kann zeitaufwändiger
sein, weil eine Übertragungseinheit,
die zuvor erfolgreich geladen wurde, beim Neuladen in einem Fehler
resultieren kann. Wenn diese Wiederherstellungsform jedoch angewendet
wird, werden die vom Header-Paket-Interrupt-Handler und vom Daten-komplett-Interrupt-Handler
durchgeführten
Tasks minimiert, und es werden nur zwei Zeiger im Speicher benötigt.
-
Im Rahmen der Modul-komplett-Meldungshandhabung
führt der
Event-Handler eine Fehlerprüfung
am empfangenen Modul durch. So wird beispielsweise ein CRC-Prüfcode als
eingebetteter Teil des Moduls übertragen.
Der Event-Handler berechnet einen CRC-Code über das empfangene Modul im Modulpuffer 328 im
RAM 412 und vergleicht ihn mit dem eingebetteten CRC-Code.
Wenn der neu berechnete CRC-Code mit dem eingebetteten übereinstimmt,
dann wurde das Modul korrekt empfangen, ansonsten ist ein Fehler
aufgetreten, und das Modul wird wie oben beschrieben neu geladen.
-
Nach dem vollständigen Laden des angeforderten
Moduls in den Speicher kann die weitere Verarbeitung durch das Anwendungsmodul
fortgesetzt werden, wie in 3 mit
einer Linie von Fuß des API-Aufrufs
zur Wartefunktion 304 angedeutet ist. Es kann jedoch eine
separate Task im Anwendungsprogramm als Reaktion auf den Eingang
der Meldung von der Meldungswarteschlange dieses Anwendungsprogramms
aktiviert werden.
-
Die oben erwähnte API beinhaltet Funktionen
zum Zugreifen auf den Datenstrom durch das Anwendungsprogramm über den
Interpreter oder über
den Systemlader. Ein Anwendungsprogrammierer verwendet die veröffentlichte
API-Beschreibung zum Formulieren eines API-Aufrufs, um auf die gewünschte Datenstromfunktion
zuzugreifen. Eine erste Gruppe von Funktionen bezieht sich auf das
Verzeichnis von Modulen. Eine erste Funktion, DIR_NEW, ist eine
Anforderung für
ein neues Verzeichnis. Wie oben beschrieben, erfolgt als Reaktion auf
diese API-Funktion
eine Zuweisung von Speicherplatz, dann wird eine Anforderung zum
Laden des nächsten
Verzeichnismoduls in den Datenstrom in eine Warteschlange gesetzt,
dann kehrt die API-Funktion zurück.
Nach dem Laden des Verzeichnisses wird eine Meldung zum anfordernden
Programm gesendet. Eine weitere Funktion, DIR_FREE, gibt den Speicherplatz
frei, der von dem aktuellen Verzeichnis angenommen wurde. Die Funktion DIR_SELECT
gibt an, welches Verzeichnismodul in nachfolgenden API-Aufrufen
verwendet wird. Die Funktion DIR_CURRENT gibt einen Handle zum aktuell
gewählten
Verzeichnis zurück.
-
Die Funktionen DIR_SPY und DIR_STOP_SPY
sind der DIR_NEW Funktion ähnlich.
Als Reaktion auf einen DIR_SPY API-Aufruf wird eine Anforderung
in die Anforderungswarteschlange für ein Verzeichnismodul in die
Warteschlange eingereiht, aber anstatt ein Verzeichnismodul zu laden
und nach dem Laden eine Meldung zu senden, sendet diese Funktion
jedesmal eine Meldung, wenn ein Verzeichnismodul im Datenfluss erfasst
wird (das Verzeichnismodul ist nicht geladen). Darüber hinaus bleibt
die Anforderung so lange in der Anforderungswarteschlange, bis ein
DIR_STOP_SPY API-Aufruf erfolgt. Nach erfolgtem DIR_STOP_SPY API-Aufruf wird
die Anforderungswarteschlange nach der Verzeichnisspion-Anforderung durchsucht,
und dieser Einsprung wird entfernt. Diese Funktionen sind zum Ausspionieren
von Änderungen
vom aktuellen Verzeichnis im Datenstrom nützlich. Schließlich gibt
es API-Aufrufe zum Extrahieren von Informationen über das
aktuelle Verzeichnis: DIR_IDENTIFIER, DIR_REQUIREMENT und DIR_NB_MODULES.
-
Aufgrund des eingebetteten CRC-Codes
im Modul muss jede Speicherzuweisungsanforderung zum Laden eines
Moduls diesen Code berücksichtigen.
Dazu werden drei API-Aufrufe bereitgestellt. Die Funktion MODULE_ALLOC
nimmt eine Modulkennung als Argument und fordert eine Zuweisung
der richtigen Speichermenge zum Laden dieses Moduls an, unter Berücksichtigung
von CRC- oder anderen Speichererfordernissen. Die Funktion MODULE_FREE
gibt den von einem Modul eingenommenen Speicherplatz frei. MODULE_CHECK führt eine
CRC-Prüfung
eines geladenen Moduls durch und gibt das Ergebnis zurück. Dies
kann jederzeit erfolgen, weil der CRC-Code in dem Modul wie im Speicher
geladen eingebettet ist.
-
Ein weiterer Satz von API-Aufrufen
befasst sich mit den Modulen unter Verwendung des aktuell gewählten Verzeichnisses
für deren
Identifikation. Es gibt API-Aufrufe zum Extrahieren von Informationen über ein
Modul: MODULE_REQUIREMENT, MODULE_SIZE und MODULE_FLAGS. Diese befähigen das
System zu ermitteln, ob ein Modul geladen und/oder ausgeführt werden
kann. Die Funktion MODULE_RUN dient zum Laden eines ablauffähigen Moduls,
wie oben beschrieben, zum Erzeugen eines neuen Prozesses und zum
Beginnen der Ausführung an
der Einsprungstelle des Moduls. Diese Funktion wird vom Systemlader
zum Einleiten der AVI-Programmausführung benutzt. Die Funktion MODULE_CHAIN
dient zum Laden eines nachfolgenden ablauffähigen Moduls, zum Beenden der Ausführung des
aktuellen Moduls und zum Beginnen der Ausführung des neu geladenen Moduls
an seiner Einsprungstelle. Es wird in diesem Fall kein neuer Prozess
erzeugt. Die Funktion MODULE_LOAD dient zum Laden eines Moduls,
aber nicht zum Starten der Ausführung.
Wie oben beschrieben, wird eine Meldung zum anfordernden Programm
gesendet, wenn das Modul fertig geladen ist. Die Funktion MODULE_EXEC
dient zum Erzeugen eines neuen Prozesses und zum Beginnen der Ausführung eines Moduls,
das zuvor vom MODULE_LOAD API-Aufruf an seiner Einsprungstelle geladen
wurde.
-
Die Funktion MODULE_LINK führt ein
neues Modul mit dem aktuellen Prozess, den aktuellen Betriebsmitteln
und Variablen aus. Sie erlaubt Subroutinen-ähnliche Aufrufe aus einem Modul
heraus durch Bereitstellen einer dynamischen Verbindung zu dem neuen
Modul. So können
AVI-Programme in kleinere Module unterteilt werden, die nur bei
Bedarf dynamisch verknüpft
werden. Die MODULE_LINK Funktion führt Relokations- und Sprungtabellen.
Die Funktionen MODULE_SPY und MODULE_STOP_SPY funktionieren ähnlich wie
DIRECTORY SPY und DIRECTORY_STOP_SPY, aber mit Bezug auf identifizierte
Module. Der MODULE_SPY API-Aufruf
fügt einen
Einsprung in die Anfordergungswarteschlange ein, einschließlich der
Kennung des Moduls. Wann immer ein Header-Modul mit derselben Kennung
im Datenstrom erfasst wird, wird eine Meldung zum anfordernden Programm
gesendet. Dies wird so lange fortgesetzt, bis ein MODULE_STOP_SPY
API-Aufruf erfolgt. Als Reaktion auf den MODUL_STOP_SPY API-Aufruf wird der die
Spionageanforderung für
das identifizierte Modul enthaltende Einsprung aus der Anforderungswarteschlange
entfernt. Die MODULE_STOP_LORD Funktion stoppt jede gerade laufende
Modulladeanforderung und nimmt den Ladeanforderungseinsprung aus
der Anforderungswarteschlange heraus. Die Funktionen FLOW_MESSAGE
und FLOW_STOP_MESSAGE erzeugen und beseitigen jeweils eine Anforderung
für eine
Meldung, wenn ein besonderes Signalgabepaket, das sich auf den Datenstrom
bezieht, auftritt, wie z. B. ein unterbrochener Datenfluss oder
das Ende des Datenflusses. Im Falle eines solchen Events wird eine
Meldung zum anfordernden Programm gesendet.
-
Wie oben beschrieben, führt der
Systemlader Systeminitialisierung durch und überwacht den Datenstrom, um
zu gewährleisten,
dass die Ausführung
des Anwendungsprogramms synchron zu den empfangenen Audio- und Videokomponenten
erfolgt. 5 ist ein Ablaufdiagramm,
das die Initialisierungsfunktion des Systemladers illustriert. In
Block 52 von 5 werden
verschiedene Hardware- und Software-Komponenten des Decoders (von
17) initialisiert. Ferner werden Stellen im RAM 412 zugewiesen
und für
verschiedene Datenstrukturen initialisiert. Diese Initialisierungsfunktionen
sind hinlänglich
bekannt und sind von anderen Software-Komponenten im Decoder abhängig. Ein
Systemprogrammierer wird verstehen, welche Hardware- und Software-Initialisierungen
nötig sind,
welche Datenstrukturen benötigt
werden und wie die Initialisierungen durchgeführt werden. Daher wird dieser
Block hier nicht ausführlich
beschrieben.
-
In Block 54 erfolgt der
oben beschriebene DIR_NEW API-Aufruf. Dieser API-Aufruf lädt das nächste Verzeichnismodul,
das im AVI-Programmkomponentenpaket erscheint, in den zugewiesenen Puffer
im RAM 412. Dieser API-Aufruf kehrt sofort zum Systemlader
zurück,
auch wenn das Verzeichnis möglicherweise
erst später
in den RAM 412 geladen wird. Der Systemlader führt andere
Funktionen und dann, falls notwendig, einen Warte-API-Aufruf (nicht dargestellt)
aus, bis eine Meldung über
den Event-Manager empfangen wird, die anzeigt, dass das Verzeichnismodul
geladen ist. In Block 56 werden die im Decoder (von 1) verfügbaren Betriebsmittel mit den
Daten verglichen, die die benötigten
Betriebsmittel im Verzeichnismodul anzeigen. Wenn der Decoder genügend Betriebsmittel
zum Ausführen
des AVI-Programms hat, erfolgt ein MODULE_RUN API-Aufruf zum Laden
des Autostart-Code-Moduls, wie oben beschrieben im zuvor geladenen
Verzeichnismodul identifiziert. Auch hier kehrt der API-Aufruf sofort
zurück,
aber das Code-Modul wird evtl. erst zu einem späteren Zeitpunkt vollständig vom
Datenstrom geladen. Nach dem vollständigen Laden des Autostart-Code-Moduls
wird eine andere Task auf bekannte Weise unter Verwendung des Multitasking-Kernels
zum Ausführen
des AVI-Programms über den
Interpreter erzeugt.
-
In Block 58 beginnt der
Systemlader mit der Überwachung
der AVI-Programmkomponente für Ausführungssignale
und Verzeichnisänderungen
und steuert die Ausführung
des AVI-Programms
durch Senden von Meldungen zum AVI-Programm wie nachfolgend beschrieben. 6 ist ein Statusübergangsdiagramm,
das die Überwachungsfunktion
des Systemladers illustriert, und trägt zum Verständnis des
Betriebs des Systemladers bei. Wenn ein Verzeichnis in einem AVI-Programmkomponentenpaketdienst
erfasst wird, dann ist das Programm, das der Zuschauer gewählt hat,
ein interaktives Programm. Nach dem Laden des Verzeichnisses in
den RAM 412 und dem Anfordern des Autostart-Code-Moduls vom
AVI-Komponentenpaketdienst tritt das AVI-Programm unter der Steuerung
des Systemladers in den INAKTIV-Zustand 61 ein. Im INAKTIV-Zustand 61 wurden
alle Betriebsmittel zum Starten der Anwendung zugewiesen, und die
Anwendung kann ganz oder teilweise geladen werden, aber es gibt
keine Interaktion mit dem Zuschauer. Zum Beispiel bleibt das AVI-Programm,
während
das Autostart-Modul geladen wird, im INAKTIV-Zustand 61. Ferner wechselt der
Zuschauer, selbst nach dem Laden des Autostart-Moduls, vielleicht
nur Kanäle
durch den das AVI-Programm führenden
Kanal und hat gar keine Absicht, mit dem AVI-Programm zu interagieren. Oder
der Zuschauer möchte
lediglich das AVI-Programm beobachten, bevor er eine Entscheidung
zur Teilnahme an der Interaktion trifft. In allen diesen Fällen ist
es wichtig, dass die Fernbedienung im normalen Kanalumschaltmodus
und nicht in einem interaktiven Modus arbeitet. Dies ist der Zweck
des INAKTIV-Zustands 61. Um dem Zuschauer mitzuteilen, dass
der betrachtete Kanal ein interaktives Programm ausstrahlt, wird
ein spezielles interaktives Programmzeichen oder -symbol über das
AVI-Video gelegt.
-
Damit ein Zuschauer tatsächlich mit
einer Interaktion mit dem AVI-Programm beginnen kann, wird eine
spezielle Taste, nachfolgend "AKTIVIEREN" genannt, auf der
Fernbedienung vorgesehen. Wenn das interaktive Programmzeichen oder
-symbol angezeigt wird, kann der Betrachter die "AKTIVIEREN"-Taste betätigen. Der Systemlader sendet als
Reaktion auf die Betätigung
der AKTIVIEREN-Taste eine AKTIVIEREN-Meldung zum AVI-Programm, das
dann in den AKTIV-Zustand 63 übergeht. Im AKTIV-Zustand 63 beginnt
der Interpreter tatsächlich
mit der Ausführung
des zuvor geladenen AVI-Programms an der Einsprungstelle. Wenn das
Autostart-Modul
des AVI-Programms mit der Ausführung
beginnt, weist es seine Datenstrukturen im RAM 412 selbst
zu und initialisiert sie, lädt
weitere Code- und/oder Datenmodule und steuert sämtliche Benutzeraktionen von
der Fernbedienung und von der Frontschalttafel.
-
Da das AVI-Programm alle Benutzerinteraktionen
steuert, kann es verhindern, dass der Benutzer Kanäle wechselt
oder andere normale Fernbedienungsfunktionen ausführt. Um
zu den normalen Fernbedienfunktionen zurückzukehren, muss der Zuschauer
zuvor das aktuelle AVI-Programm
stoppen. Der Zuschauer betätigt
die AKTIVIEREN-Taste nochmals, um das Programm zu deaktivieren.
Als Reaktion auf diesen Tastendruck sendet der Systemlader eine
DEAKTIVIEREN-Meldung zum ablaufenden AVI-Programm, so dass der AKTIV-Zustand 63 verlassen
wird und das System in den INAKTIV-Zustand 61 zurückkehrt.
Es erscheint wieder das besondere interaktive Programmzeichen oder
-symbol, was bedeutet, dass das AVI-Programm geladen ist, aber nicht
abläuft.
Der Zuschauer kann dann Kanäle wechseln
oder andere normale Fernbedienfunktionen ausführen, oder er kann das AVI-Programm durch
nochmaliges Betätigen
der AKTIVIEREN-Taste reaktivieren. Die AKTIVIEREN-Taste dient somit als
Umschalter zwischen dem AKTIV-Zustand 63 und dem INAKTIV-Zustand 61,
wenn sie betätigt
wird. Die Meldungen AKTIVIEREN und DEAKTIVIEREN können auch
als AKTIVIEREN-Umschaltmeldungen
verstanden werden, deren Bedeutung (AKTIVIEREN oder DEAKTIVIEREN)
vom Zustand des AVI-Programms (INAKTIV bzw. AKTIV) abhängig ist,
wenn die AKTIVIEREN-Taste betätigt
wird.
-
Während
das AVI-Programm im AKTIV-Zustand 63 abläuft, gibt
es Zeiten, wenn sein Ablauf möglicherweise
unterbrochen werden soll. Wenn beispielsweise eine nicht interaktive
Werbesendung gesendet werden soll, dann stimmen die übertragenen Audio-
und Videosignale nicht mehr mit den vom Decoder 10 (von 1) erzeugten Ton- und Graphiksignalen überein,
und es soll dem Zuschauer gestattet werden, auf normale Weise mit
der Fernbedienung zu arbeiten. Der Anwendungsprogrammierer kann
jedoch nicht im Voraus wissen, wann solche Unterbrechungen gewünscht werden.
So kann der Programmanbieter in diesem Fall unabhängig vom
AVI-Programm möglicherweise
repetitiv besondere Signalpakete (wie oben beschrieben), Unterbrechungssignalpakete
genannt, in den AVI-Programmkomponentenpaketdienst integrieren.
Jedes solche Paket enthält
Daten, die anweisen, dass das gerade ablaufende AVI-Programm die
Ausführung
unterbrechen soll.
-
Der Systemlader empfängt über einen FLOW_MESSAGE
API-Aufruf jedesmal eine Meldung, wenn solche Pakete im AVI-Programmkomponentenpaketdienst
empfangen werden. Wenn beispielsweise ein Unterbrechungssignalpaket
empfangen wird, dann empfängt
der Systemlader eine Unterbrechungssignalmeldung und sendet als
Reaktion auf die erste Unterbrechungssignalmeldung eine UNTERBRECHEN-Meldung
zum AVI-Programm, das die Ausführung
wiederum unterbricht und in den UNTERBROCHEN-Zustand 65 übergeht.
Im UNTERBROCHEN-Zustand 65 wird die Ausführung des AVI-Programms
auf eine solche Weise unterbrochen, dass es an der Stelle wieder
gestartet werden kann, an der es unterbrochen wurde. Das heißt, alle
zum Ausführen
des AVI-Programms notwendigen Betriebsmittel bleiben zugewiesen,
und der Ausführungszustand
des AVI-Programms wird an einer Stelle im RAM 412 gespeichert.
Zusätzlich
wird ein zweites Zeichen oder Symbol, das angibt, dass ein zuvor ablaufendes
interaktives Programm unterbrochen ist, aber wieder aufgenommen
werden kann, wenn dies zugelassen wird, über das aktuelle Videobild
gelegt.
-
Nach der Unterbrechung (z. B. der
nicht interaktiven Werbesendung) stoppt der Programmanbieter den
Einschluss der Unterbrechungssignalpakete im AVI- Programmkomponentenpaketdienst. Der Systemlader
sendet nach einer vorbestimmten Zeitperiode ohne Empfang einer Unterbrechungssignalmeldung
eine FORTSETZEN-Meldung zum AVI-Programm,
das wiederum die Ausführung
dort wieder aufnimmt, wo sie zuvor unterbrochen wurde, und wie oben
beschrieben in den AKTIV-Zustand 63 übergeht.
-
In einer alternativen Ausgestaltung
der oben beschriebenen UNTERBRECHEN / FORTSETZEN Signalgabeanordnung
schließt
der Programmanbieter ein einzelnes Unterbrechungssignalpaket in
den AVI-Programmkomponentenpaketdienst ein, wenn die Ausführung des
AVI-Programms unterbrochen werden soll. Der Programmanbieter schließt dann
ein anderes besonderes Signalpaket, Fortsetzungssignalpaket genannt,
in den AVI-Programmkomponentenpaketdienst
ein, wenn die Ausführung
des AVI-Programms wieder aufgenommen werden soll. Dieses Programm
enthält
Daten, die das gerade unterbrochene AVI-Programm anweisen, die Ausführung wieder
aufzunehmen. Der Systemlader erkennt das Fortsetzungssignalpaket
und sendet eine FORTSETZEN-Meldung zum AVI-Programm, das die Ausführung wieder
aufnimmt und wie oben beschrieben in den AKTIV-Zustand 63 eintritt.
-
Es ist auch möglich, dass ein Zuschauer die Ausführung eines
unterbrochenen AVI-Programms stoppt.
Wenn das Programm-unterbrochen-Zeichen oder -Symbol erscheint, dann
kann der Zuschauer die AKTIVIEREN-Taste betätigen. Der Systemlader sendet
als Reaktion auf diese Tastenbetätigung
eine DEAKTIVIEREN-Meldung zum unterbrochenen AVI-Programm, das wiederum
in den oben beschriebenen INAKTIV-Zustand 61 übergeht.
Vom INAKTIV-Zustand 61 kann das Programm die Ausführung erst
dann wieder aufnehmen, wenn der Zuschauer die AKTIVIEREN-Taste betätigt, so
dass der Systemlader eine AKTIVIEREN-Meldung zum AVI-Programm sendet,
das dann in den AKTIV-Zustand 63 übergeht. Wenn der Systemlader
immer noch Unterbrechungssignalpakete empfängt, dann wird eine weitere
UNTERBRECHEN-Meldung unmittelbar zum AVI-Programm gesendet, das
wiederum in den UNTERBROCHEN-Zustand 6S übergeht.
Der INAKTIV-Zustand 61, der AKTIV-Zustand 63 und
der UNTERBROCHEN-Zustand 65 sind die Zustände, zwischen
denen das AVI-Programm als Reaktion auf Meldungen umschalten kann,
die ihm vom Systemlader gesendet werden. Es gibt jedoch zwei weitere
Zustände,
in die unter direkter Steuerung des Systemladers eingetreten werden
kann.
-
Ein AVI-Programm kann ein Ende seiner Ausführung erreichen.
So kann der Programmanbieter beispielsweise ein weiteres Sondersignalpaket, Ausführungssignalpaket
genannt, in den AVI-Programmkomponentenpaketdienst integrieren.
Der Systemlader empfängt
eine Ausführungsendemeldung,
wenn ein Ausführungsendesignalpaket
im AVI-Programmkomponentenpaketdienst über den FLOW_MESSAGE
API-Aufruf erkannt wird. Als Reaktion auf die Ausführungsendemeldung
sendet der Systemlader eine EXIT-Meldung zum AVI-Programm. Unabhängig davon, in welchem Zustand
sich das AVI-Programm befindet, ob INAKTIV 6l, AKTIV 63 oder
UNTERBROCHEN 65, reagiert das AVI-Programm auf die EXIT- Meldung durch Aufheben
der Zuweisung aller seiner Betriebsmittel und entfernt alle Datensätze selbst
aus dem Decoder 10 (von 1).
Dies wird so angesehen, dass das Programm in den GESTOPPT-Zustand 69 eingetreten
ist und aus dem Decoder 10 verschwindet. In einigen Fällen kann
das Programm selbst erkennen, dass seine Ausführung abgelaufen ist, entweder über einen
Benutzerbefehl oder über
seine eigene Ausführung. Wenn
das AVI-Programm erkennt, dass seine Ausführung beendet ist, führt es dieselbe
Verarbeitung durch, die es durchgeführt hätte, wenn es eine EXIT-Meldung
empfangen hätte,
und tritt von sich alleine in den GESTOPPT-Zustand 69 ein.
-
Wenn sich ein AVI-Programm im UNTERBROCHEN-Zustand
befindet, dann ist es möglich, dass
ein anderes interaktives AVI-Programm auf dem AVI-Programmkomponentendatenfluss
empfangen wird. Wenn das AVI-Programm beispielsweise für eine Werbesendung
unterbrochen wurde, dann kann diese Werbesendung selbst ein interaktives
Programm sein, oder der Benutzer kann Kanäle auf einen Kanal umgeschaltet
haben, der ein anderes AVI-Programm ausstrahlt. In beiden Fällen enthält das AVI-Programm
ein Verzeichnismodul, das sich von dem des unterbrochenen AVI-Programms
unterscheidet.
-
Der Systemlader empfängt über den
DIR SPY API-Aufruf immer dann eine Meldung, wenn ein Verzeichnis
im AVI-Prograrnmkomponentenpaketdienst erfasst wird. Der Systemlader
vergleicht das gerade aktive Verzeichnis mit dem gerade erfassten Verzeichnis.
Wenn der Systemlader erkennt, dass ein anderes Verzeichnis im AVI-Programmkomponentenpaketdienst
vorhanden ist, dann beginnt er mit dem Laden des AVI-Programms,
das durch dieses Verzeichnis repräsentiert wird.
-
Zunächst wird eine Meldung zu dem
gerade unterbrochenen AVI-Programm gesendet, die besagt, dass der
Programmkomponentenpaketdienst nicht mehr sein Programm ausstrahlt
oder dass das Programm 'den
Ablauf verloren' hat.
Diese Meldung ist eine Anforderung an das gerade ablaufende Programm,
sich zu minimieren, d. h. sie ist eine MINIMISIEREN-Meldung. Als
Reaktion auf die MINIMISIEREN-Meldung speichert das gerade unterbrochene AVI-Programm
zunächst
seinen aktuellen Ausführungszustand
und seine Umgebung in einem kleinen Block des RAM 412,
der die Identifikation der AVI-Anwendung und eine Zeitdauer enthält, wie
nachfolgend beschrieben wird. Dann beginnt das unterbrochene AVI-Programm
mit der Aufhebung der Zuweisung seiner Betriebsmittel. Ein minimiertes
AVI-Programm beinhaltet keinen Code und kann somit seine Zustände nicht
als Reaktion auf Meldungen ändern oder
sich selbst neu starten.
-
Der Systemlader lädt dann das neu erfasste Verzeichnis-
und Autostart-Modul und setzt das neue AVI-Programm in den INAKTIV-Zustand 61,
wo das interaktive Programmzeichen oder – symbol wie oben beschrieben
angezeigt wird. Der Zuschauer startet und stoppt dann die Interaktion
mit dem neuen AVI-Programm durch Betätigen der AKTIVIEREN-Taste,
und das Programm selbst kann unterbrochen und fortgesetzt werden.
-
Der Minimisierungsprozess ist ein
rekursiver Prozess. Dieses neue AVI-Programm kann beispielsweise,
wenn es unterbrochen wird, auch minimiert werden, wenn noch ein
anderes AVI-Programm
im AVI-Programmkomponentenpaketdienst erfasst wird. In diesem Fall
wird ein weiterer Speicherblock zugewiesen, und Ausführungszustand
und -umgebung dieses AVI-Programms
werden zusammen mit seiner Kennung und einer Zeitdauer in diesem
Speicherblock. gespeichert. Dann wird das neu erfasste AVI-Programm
wie oben beschrieben geladen. Die Zahl der Programme, die gleichzeitig
minimiert werden können,
ist nur durch die Menge an Speicherplatz begrenzt, die zum Speichern
aller Speicherblöcke
benötigt
wird, die die Ausführungszustände und -umgebungen
der minimierten Programme enthalten.
-
Wenn nicht genügend verfügbarer Speicherplatz vorhanden
ist, um das neue Verzeichnismodul zu laden oder das durch das zuvor
geladene Verzeichnismodul repräsentierte
Programm auszuführen,
und wenn Speicherblöcke
zugewiesen sind, die minimierte Programme repräsentieren, dann kann der Systemlader
automatisch die Zuweisung einiger oder aller Speicherblöcke gemäß einem
Algorithmus aufheben (wie z. B. die Zuweisungsaufhebung des ältesten
Speicherblocks zuerst, oder zunächst
die Zuweisungsaufhebung von Speicherblöcken, die als unentbehrlich
von der aufrufenden Anwendung markiert sind), in einem Versuch,
ausreichend Speicherplatz abzuleiten. Alternativ kann der Systemlader dem
Zuschauer eine Liste von minimieren Anwendungen vorliegen und es
dem Zuschauer gestatten, einige oder alle zum Löschen auszuwählen. Die
Zuweisung von gewählte
minimierte Anwendungen repräsentierenden
Blöcken
wird dann aufgehoben, um ausreichend Speicherplatz abzuleiten.
-
In der Zwischenzeit bleiben die Speicherblöcke, die
die Ausführungszustände und
-umgebungen von zuvor minimieren AVI-Programmen enthalten, im Speicher
zugewiesen. Wie oben beschrieben, gibt es eine Zeitdauer in jedem
solchen Speicherblock. Wenn die Zeitdauer in einem Block überschritten wird,
dann erfolgt eine Zeitabschaltung des zuvor minimierten AVI-Programms. In diesem
Fall wird dieses Programm als in den GESTOPPT-Zustand 69 eingetreten
angesehen, und die Zuweisung seines Speicherblocks, der den Ausführungszustand
und die Ausführungsumgebung
enthält,
wird aufgehoben, und sämtliche
Datensätze
des zuvor minimierten AVI-Programms gehen verloren.
-
Es ist jedoch möglich, dass der Decoder 10 nochmals
eine AVI-Programmkomponente empfängt,
die die Verzeichnis-, Code- und Datenmodule eines zuvor minimierten
AVI-Programms enthält, oder
dass dieses AVI-Programm 'den
Ablauf wiederfindet'.
So ist möglicherweise
die interaktive Werbesendung beendet, das Programm tritt in den
GESTOPPT-Zustand 69 ein oder der Zuschauer hat wieder auf
diesen Kanal zurückgeschaltet.
Der Systemlader beginnt mit dem Laden des 'neuen' Verzeichnisses im AVI-Programmkomponentenpaketdienst.
Bei jedem Laden eines neuen Verzeichnisses wird die Anwendungskennung
mit den Kennungen in allen Blöcken
verglichen, die Ausführungszustand
und -umgebungen enthalten, die gerade im RAM 412 gespeichert
sind. Wenn ein übereinstimmender
Block gefunden wird, dann werden die Code- und Datenmodule geladen,
und das AVI-Programm wird in den INAKTIV-Zustand 61 gesetzt,
aber sein Ausführungszustand
wird auf den unmittelbar vor der Minimierung aktualisiert. Wenn
der Zuschauer die AKTIVIEREN-Taste betätigt, dann tritt das AVI-Programm
in den AKTIV-Zustand 63 ein und beginnt dort mit der Ausführung, wo
diese zuvor unterbrochen wurde. Auf diese Weise kann ein AVI-Programm
vorübergehend gestoppt
werden, um ein anderes AVI-Programm abzuarbeiten, und dies kann
dann wieder aufgenommen werden, ohne dass ausreichende Betriebsmittel für beide
Programme gleichzeitig im Speicher bleiben müssten.