-
HINTERGRUND DER ERFINDUNG
-
1. Gebiet der Erfindung
-
Die
vorliegende Erfindung betrifft Videoübermittlungs-/Empfangssysteme.
Insbesondere betrifft die vorliegende Erfindung ein Protokoll und
eine Vorrichtung zum Übermitteln
von Informationen in Verbindung mit einem Videosignal.
-
2. Hintergrundinformationen
-
Mit
der Ausbreitung von Personalcomputersystemen und dem Rückgang der
Kosten von Hochleistungstechnologie im allgemeinen beginnen die Technologien
von Fernsehübermittlung
und Computeranwendungen zu verschmelzen. Lösungen jedoch sind nur langsam
aufgezeigt worden.
-
Für bestimmte
Anwendungen der Fernsehprogrammübermittlung
ist es wünschenswert,
Informationen zusammen mit dem Audio/Videoteil des Signals zu übermitteln.
Beispielsweise wird die Closed-Captioned-Programmierung nun ausgiebig verwendet,
um die Bedürfnisse
von Hörgeschädigten zu
befriedigen. Tatsächlich
umfaßt
die jüngste
Anforderung für
Fernsehempfänger
die Anforderung, daß sämtliche
Empfänger
diese Möglichkeit
zum Anzeigen des Audioteils des übermittelten
Programms als Text zur Verfügung
stellen.
-
Bei
neuen Nachrichtenprogrammen traten andere Bedürfnisse auf. Beispielsweise
werden bei Nachrichtenprogrammen, die 24 Stunden am Tag laufen,
Echtzeitaktienkursen und Sportergebnissen bei Diensten wie beispielsweise
Headline News (eine Marke von Turner Broadcasting, Inc.) nun als
Teil des Videoteils des Signals angezeigt. Obwohl es den Bedürfnissen
des Zuschauers dient, solche Echtzeitinformationen bereitzustellen,
lenkt diese Lösung
den Zuschauer nicht nur von dem Videobildschirm ab, sondern verbraucht
auch unnötigerweise
Bildschirmfläche
und ermöglicht
es dem Zuschauer nicht, sich die Informationen anzuschauen, welche
ihn interessieren. Beispielsweise muß der Zuschauer, um den Preis
einer bestimmten Aktie zu sehen, warten, bis der Ticker zur Anzeige
dieser Informationen durch läuft.
Andere Zuschauer, beispielsweise solche, die Echtzeitwetterinformationen
benötigen,
werden ebenfalls nicht erreicht. Daher ist ein verbessertes Mittel
zum Erhalten solcher Informationen erforderlich.
-
Lösungen gemäß dem Stand
der Technik, wie beispielsweise Closed-Captioning, verwenden die
vertikale Bildaustastlücke
(VBI) zum Kodieren von Text für
den Audioteil des Programms. Es wird üblicherweise Zeile 21 des vertikalen
Synchronisierungsteils des Videosignals verwendet. Obwohl dies nicht
die Übermittlung
des Videosignals stört,
so fehlt die Fähigkeit,
auf einem anderen Wege als der Echtzeitanzeige für den Benutzer genutzt zu werden,
wie beispielsweise zur Indizierung, Volltexterfassung und/oder anderen
Textverarbeitungsoperationen, welche von Textverarbeitungsanwendungsprogrammen
auf modernen Personalcomputern üblicherweise
ausgeführt
werden.
-
Ein
weiterer Mangel von Closed-Captioning ist, daß obwohl es einen Teil der
VBI zum Übermitteln (Zeile
21) verwendet, es die Bandbreite dieses Teils des nichtangezeigten
Videosignals nicht effizient nutzt. Es wird geschätzt, daß eine einzige
Zeile der VBI für
eine nichtkomprimierte Datenübermittlung von
ungefähr
14,4 Kilobytes/sec. genutzt werden kann. Somit nutzt das Echtzeit-Closed-Captioning des
Audioprogramms einer gesendeten Fernsehsendung nicht den ganzen
Vorteil der Bandbreite des Signals. Es ist ferner ein Einkanalsystem,
bei welchem lediglich die Closed-Captioning-Informationen übermittelt
werden, anstatt den Vorteil der gesamten Bandbreite des Signals
zu nutzen.
-
Informationen
gemäß dem Stand
der Technik, welche in Verbindung mit einem Fernsehprogramm übertragen
wurden, übertragen
teilweise lediglich begrenzte Informationen über das Programm. Beispielsweise
wurden bei Endverbraucher-Satellitenfernsehen-Empfangssystemen üblicherweise
lediglich Textinformationen, welche den Titel des Programms und
bestenfalls noch die abgelaufene Zeit oder verbleibende Zeit des
Programms darstellen, mit dem Programm übertragen. Detaillierte Informationen,
wie beispielsweise Bezugnahmen auf das Programm betreffende äußere Quellen
oder andere Informationen, welche mit dem Programm synchronisiert
sind, wurden nicht zusammen mit dem Signal übermittelt.
-
Ein
weiteres Beispiel einer Vorrichtung gemäß dem Stand der Technik ist
in der WO 93/22876 beschrieben.
-
Daher
weist der Stand der Technik zum Übermitteln
von Informationen mit Fernsehprogrammen verschiedene Mängel auf.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Gemäß der vorliegenden
Erfindung wird ein computer-implementiertes Verfahren zum Übermitteln
von Informationen zusammen mit einem Videosignal bereitgestellt,
umfassend die folgenden Schritte:
- a. daß wenigstens
eine Client-Anwendung eine an einen Empfänger zu übermittelnde Nachricht erzeugt;
- b. daß die
Client-Anwendung die Nachricht an einen Datencodierer übermittelt;
- c. daß der
Codierer die Nachricht und zumindest eine weitere Nachricht von
wenigstens einer weiteren Client-Anwendung empfängt;
- d. daß der
Datencodierer die Nachricht und die wenigstens eine weitere Nachricht
in Pakete transformiert und die Pakete in einen Bitstrom multiplext,
der mit einem Videoprogrammsignal eines Videoprogramms verschmolzen
werden soll, wobei das Multiplexen in Übereinstimmung mit Prioritäten, die
der wenigstens einen Client-Anwendung und der wenigstens einen weiteren
Client-Anwendung zugewiesen sind, ausgeführt wird; und
- e. daß der
Codierer den Bitstrom an einen Videocodierer übermittelt, welcher den Bitstrom
mit dem Videoprogrammsignal verschmilzt und das verschmolzene Signal
an den Empfänger übermittelt.
-
Gemäß der vorliegenden
Erfindung wird ferner ein Codiersystem bereitgestellt, welches aufweist:
eine
Kommunikationsverbindung;
ein mit der Kommunikationsverbindung
gekoppeltes Computersystem, wobei das Computersystem zumindest eine
Client-Anwendung abarbeitet, um eine an einen Empfänger zu übermittelnde
Nachricht zu erzeugen;
einen mit der Kommunikationsverbindung
gekoppelten Mastercodierer, wobei der Mastercodierer (i) die Nachricht
von dem Computersystem und wenigstens eine weitere Nachricht von
wenigstens einer weiteren Client-Anwendung empfängt, (ii) die Nachricht und die
wenigstens eine weitere Nachricht in eine Mehrzahl von Rahmen transformiert,
wobei jeder Rahmen zumindest ein Paket enthält, und (iii) die Rahmen in einen
Bitstrom in Übereinstimmung
mit Prioritäten, die
der wenigstens einen Client-Anwendung und der wenigstens einen weiteren
Client-Anwendung
zugewiesen sind, multiplext; und
einen mit dem Mastercodierer
gekoppelten Videocodierer, wobei der Videocodierer den Bitstrom
mit einem Videoprogrammsignal eines Videoprogramms verschmilzt und
das verschmolzene Signal an den Empfänger übermittelt.
-
Gemäß der vorliegenden
Erfindung wird ferner ein Decodiersystem bereitgestellt, welches
aufweist:
einen Videodecodierer zum Empfangen eines verschmolzenen
Signals, welches einen mit einem Videoprogrammsignal, das einem
Videoprogramm entspricht, verschmolzenen Bitstrom enthält, und
zum Extrahieren des Bitstroms aus dem verschmolzenen Signal, wobei
der Bitstrom durch Multiplexen einer Mehrzahl von Rahmen gebildet
ist, wobei die Mehrzahl von Rahmen aus einer durch zumindest eine
Client-Anwendung erzeugten Nachricht und zumindest einer weiteren
durch zumindest eine weitere Client-Anwendung erzeugten Nachricht
konvertiert ist, wobei jeder Rahmen zumindest ein Paket enthält und das
Multiplexen in Übereinstimmung
mit Prioritäten ausgeführt ist,
die der wenigstens einen Client-Anwendung und der wenigstens einen
weiteren Client-Anwendung zugewiesen sind;
eine Kommunikationsverbindung;
zumindest
ein mit der Kommunikationsverbindung gekoppeltes Computersystem;
und
einen mit der Kommunikationsverbindung und dem Videodecodierer
gekoppelten Decodierer, wobei der Decodierer den Bitstrom empfängt und
die Nachricht und die wenigstens eine weitere Nachricht in dem Bitstrom
gemäß den Prioritäten in zumin dest
einen durch das wenigstens eine Computersystem lesbaren Kanal separiert.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Die
vorliegende Erfindung wird exemplarisch und nicht beschränkt auf
die Figuren der beiliegenden Zeichnungen beschrieben, bei welchen
gleiche Bezugszeichen auf gleiche Elemente hinweisen, und in welchen:
-
1 ein
System zeigt, bei welchem ein Codierer implementiert werden kann.
-
2 zeigt
ein System, bei welchem ein Decodierer implementiert werden kann.
-
3 zeigt
eine Blockdarstellung von Einrichtungen in einem Netzwerksystem,
bei welchem Ausführungsbeispiele
der vorliegenden Erfindung implementiert werden können.
-
4 zeigt
die Softwarearchitektur eines Codierers.
-
5 zeigt
die Softwarearchitektur eines Decodierers.
-
6 zeigt
eine spezielle Implementierung der Software in einen Decodierer.
-
7a zeigt
die von dem Codierprozeß durchgeführten Prozesse.
-
7b zeigt
die Beziehung der Nachrichten, Pakete und Rahmen (frames) in dem
Codierer in Beziehung zu dem ISO/OSI-Modell bei einem Ausführungsbeispiel
der vorliegenden Erfindung.
-
8 zeigt
das Format einer Nachricht, welche für die Anwendungsprogrammschnittstelle
(API) zwischen dem Codierer/Decodierer und Client-Anwendungen verwendet
wird.
-
9 zeigt
das Format eines Paketes.
-
10 zeigt
das Format eines Rahmens.
-
11 zeigt
das Format eines Status-Composite-Packets.
-
12 zeigt
das Format eines Programm-Marker-Pakets.
-
13 zeigt
das Format eines Nicht-Programm-Aktienkurs-Pakets.
-
14 zeigt
ein Beispiel eines Paket-Bitstroms.
-
15a–15c zeigen die Funktion des Hauptprozesses des
Codierers.
-
16a–16c zeigen die Funktion der Hauptprozesse des
Decodierers.
-
17 zeigt
ein exemplarisches Benutzerschnittstellenfenster, welches von einem
Client-Anwendungsprogramm eines Codierers oder einem Autoren-Client-Anwendungsprogramm
bei dem Übermittler
verwendet werden kann.
-
18 zeigt
ein Beispiel einer Benutzeranzeige, welche das Audio/Video-Programm,
die Programminformationen und Nicht-Programminformationen, welche von separaten
Client-Anwendungen angezeigt werden können, anzeigt.
-
DETAILLIERTE
BESCHREIBUNG
-
Die
vorliegende Erfindung ist ein Verfahren und eine Vorrichtung zum Übermitteln
von Informationen zusammen mit einem Videosignal. Das hier zu beschreibende
System umfaßt
das Video-Indizierungs-Protokoll (VIP). Die hier zu beschreibenden Techniken
können
zum Übermitteln
beliebiger Information zusammen mit einem Videosignal verwendet werden,
obwohl spezielle Informationen für
beschreibende Zwecke verwendet wurden. Obwohl die vorliegende Erfindung
unter Bezugnahme auf bestimmte spezielle Ausführungsbeispiele beschrieben
wird, einschließlich
spezieller Datenpakete, Arten von Kommunikationsmedien, Netzwerksystemen, Übermittlungsvorrichtungen
etc., ist dem Fachmann klar, daß dies
lediglich veranschaulichenden Zwecken dient und nicht dazu gedacht
ist, die vorliegende Erfindung zu beschränken. Andere Abweichungen,
Modifikationen und andere Änderungen
können
von dem Fachmann vorgenommen werden, ohne von der Lehre der vorliegenden
Erfindung abzuweichen.
-
Die
Verfahren und die Vorrichtung, die bei implementierten Ausführungsbeispielen
der vorliegenden Erfindung verwendet werden, weisen einen Codiererteil
und einen Decodiererteil auf, wobei Beispiele davon in den 1 und 2 gezeigt
sind. Der Codierer oder das "Kopfende" des Videoübermittlungssystems
kann eine Struktur wie in 1 gezeigt
aufweisen. Das System umfaßt
einen Mastercodierer 100, welcher codierte Nachrichten
von einer Mehrzahl von Computersystemen 110–114,
welche mit dem Codierer 100 über ein Netzwerkmedium 150 kommu nizieren,
empfangen kann. Das Netzwerk 150 kann eine beliebige Anzahl
von Netzwerken gemäß dem Stand
der Technik sein, einschließlich
Local-Area-Netzwerken (LAN's)
wie beispielsweise Ethernet, Token-Ring, FDDI oder andere Netzwerkmedien,
welche kommerziell verfügbar
sind. Die Codierer 110–114 konvertieren
ihre entsprechenden Informationen in Nachrichten, welche von dem
Codierer 100 zu verarbeiten sind, und Software, welche
in dem Codierer 100 arbeitet, wird diese Nachrichten dann
in Pakete, welche anschließend
an einen VBI-Inserter 130 übermittelt werden, umwandeln
und mit einer Priorität
versehen.
-
Der
VBI-Inserter 130 kann ein beliebiger kommerziell verfügbarer VBI-Inserter
sein, wie beispielsweise der VBI-Inserter mit der Modellnummer TDS-3
(Marke), welcher von norpak Corporation of Ottawa, Ontario, Kanada,
verfügbar
ist. Es sei angemerkt, daß für den Rest
dieser Anmeldung VBI-Inserter in ein Audio/Video-Programmsignal
(NTSC) beschrieben werden, jedoch geschieht dies lediglich aus veranschaulichenden
Zwecken, und andere Audio/Video-Codierungen für andere Formate (beispielsweise
PAL, SECAM) und andere Übertragungsmethoden
(beispielsweise Digitalvideo). Diese Informationen können dann über einen
Satelitten-Uplink 140 zusammen mit dem Audio/Video-Programminhalt übermittelt
werden. Das Signal kann auch über
Rundfunk ausgestrahlt, über
Kabel gesendet oder, gemäß der Implementierung,
auf anderen Wegen übermittelt
werden, und diese Erfindung ist nicht auf Satelliten-Uplinks oder
-Downlinks beschränkt.
Jeder der Codierer 110–114 kann
eine unterschiedliche Codierfunktion aufweisen, wie beispielsweise
Closed-Captioned
oder Fremdsprachenuntertitel, Aktienkurse, Nachrichtentexte, Sportergebnisse
oder Wetterinformationen, wobei serielle Bitströme diese Codierer versorgen.
Zusätzlich
zu diesen Informationen werden Statusinformationen für die Übermittlung
wie beispielsweise Zeitcodes (z.B. Zeitcodes wie SMPTE-Zeitcodes
oder Zeitreferenzmarkierungen wie GMT), Station-IDs und eine Channel-Map übertragen.
Dies kann Programminhaltinformationen enthalten. Dies kann generische
Informationen, wie beispielsweise Szenen- oder Story-Markierungen
umfassen, und für
eine Anwendung wie beispielsweise eine Nachrichtenübermittlung
können die
Programminhaltinformationen den Text der Nachrichten umfassen. Beliebige
andere Informationen, Echtzeit oder nicht, können in den codierten Informationen
enthalten sein.
-
Die
Struktur des Decodierers ist in 2 gezeigt. 2 führt im wesentlichen
das Gegenteil der in 1 gezeigten Vorrichtung aus.
Ein Satelliten-Downlink 240 kann das codierte Audio/Video-Programm
empfangen, welches anschließend mit
einem VBI-Decodierer 230 in getrennte Programm- und codierte
Datenabschnitte decodiert wird. Anschließend empfängt ein Masterdecodier oder
ein Gateway-Computersystem die codierten Daten, und die verschiedenen
Informationskanäle
können über beispielsweise
ein Netzwerkmedium einer Mehrzahl von Client-Systemen 210–214 verfügbar gemacht werden.
Beispielsweise kann jedes der Computersysteme 210–214 an
einem separaten Teil des Bitstromes interessiert sein. Somit müssen diese
Clients lediglich einen Teil oder Kanal (beispielsweise Programminformationen,
Aktien, Sportergebnisse, Wetter) des eingehenden Bitstromes gemäß den Benutzeranforderungen
untersuchen. Die diesbezüglichen
Details werden weiter unten beschrieben.
-
Obwohl
in den 1 und 2 separate Systeme gezeigt sind,
ist verständlich,
daß dies
lediglich aus veranschaulichenden Zwecken geschieht, und daß in einer
Multitasking-Umgebung ein einziges der Systeme (beispielsweise 100, 200)
zum Codieren verwendet werden kann, wobei ein beliebiger oder sämtliche
der separaten Codierer (beispielsweise 110–114, 210–214)
als separate Prozesse in einem einzigen Computer implementiert sein
können.
Die Techniken haben gleiche Anwendungen bei Multitasking-, Multicomputing-
oder Netzwerkumgebungen.
-
Es
wird auf 3 Bezug genommen. Ein System 310,
bei welchem ein Ausführungsbeispiel eines
Computersystems (beispielsweise Codierer 100 oder Decodierer 200)
gemäß der vorliegenden Erfindung
implementiert ist, ist gezeigt. 310 weist zum Kommunizieren
von Informationen einen Bus oder andere Kommunikationsmittel 301 und
ein Verarbeitungsmittel 302 auf, welches zum Verarbeiten von
Informationen mit dem Bus 301 gekoppelt ist. Das System 310 weist
ferner einen Speicher mit wahlfreiem Zugriff (RAM) oder eine andere
flüchtige Speichereinrichtung 304 (bezeichnet
als Hauptspeicher) auf, welche zum Speichern von Informationen und
von von einem Prozessor 302 auszuführenden Befehlen mit dem Bus 301 gekoppelt
ist. Der Hauptspeicher 304 kann bei der Ausführung von
Befehlen durch den Prozessor 152 ferner zum Speichern von temporären Variablen
oder anderen Zwischeninformationen verwendet werden. Das System 310 weist ferner
zum Speichern von statischen Informationen und von Befehle für den Prozessor 302 einen
Nur-Lese-Speicher
(ROM) und/oder eine andere statische Speichereinrichtung 306,
welcher bzw. welche mit dem Bus 301 gekoppelt ist, und
eine Datenspeichereinrichtung 307, wie beispielsweise eine
Magnetscheibe oder eine optische Scheibe und deren entsprechendes
Scheibenlaufwerk, auf. Die Datenspeichereinrichtung 307 ist
zum Speichern von Informationen und Befehlen an den Bus 301 gekoppelt.
-
Das
System 310 kann ferner an eine Anzeigeeinrichtung 321,
wie beispielsweise eine Kathodenstrahlröhre (CRT) oder eine Flüssigkristallanzeige
(LCD), gekoppelt sein, welche zum Anzeigen von Informationen für einen
Computerbenutzer mit einem Bus 301 gekoppelt ist. Eine
alphanumerische Eingabeeinrichtung 322 mit alphanumerischen
und anderen Tasten kann ebenfalls zum Kommunizieren von Informationen
und von Befehlsauswahlen an den Prozessor 302 an den Bus 301 gekoppelt
sein. Eine weitere Benutzereingabeeinrichtung ist eine Cursor-Steuerung 323,
wie beispielsweise eine Maus, ein Trackball, ein Stylus oder Cursor-Richtungstasten,
welche zum Kommunizieren von Richtungsinformationen und Befehlsauswahlen
an den Prozessor 302 und zum Steuern der Cursor-Bewegung
auf der Anzeige 321 mit dem Bus 301 gekoppelt
ist.
-
Bei
implementierten Ausführungsbeispielen umfassen
andere Einrichtungen, welche mit dem Bus 301 gekoppelt
sein können,
eine serielle Schnittstelle 324 und/oder eine Kommunikationseinrichtung 325, wobei
die Beiden Mittel zum Kommunizieren mit anderen Einrichtungen aufweisen.
Die Kommunikationseinrichtung kann ferner ein Mittel zum Kommunizieren
mit anderen Knoten in einem Netzwerk aufweisen. Bei implementierten
Ausführungsbeispielen kann
dies eine Standard-Ethernet-Schnittstelle umfassen, die zum Kommunizieren
von Informationen mit anderen Computern (beispielsweise Codierern 110–114 oder
Decodierern 210–214)
mit einer CSMA/CD-Bus-Leiterplatte (CSMA/CD backplane) gekoppelt
ist.
-
Es
sei ferner angemerkt, daß beliebige
oder sämtliche
der Komponenten von System 310 und entsprechende Hardware
bei verschiedenen Ausführungsbeispielen
verwendet werden kann, es ist jedoch verständlich, daß eine beliebige Konfiguration des
Systems, welches einen Prozessor 302 umfaßt, für verschiedene
Zwecke gemäß der entsprechenden
Implementierung verwendet werden kann.
-
Bei
einem Ausführungsbeispiel
ist System 310 eines vom Typ IBM-AT-kompartibler Personalcomputer,
wie beispielsweise Personalcomputer der Marke Gateway 2000, hergestellt
von Gateway Computer Systems. Der Prozessor 302 kann einer
der Pentium® Mikroprozessoren
sein, verfügbar
von Intel Corporation aus Santa Clara, Kalifornien (Pentium und
Intel sind Marken der Intel Corporation).
-
Es
sei angemerkt, daß die
folgende Beschreibung von verschiedenen hierin beschriebenen Ausführungsbeispielen
speziell auf eine Serie von Routinen Bezug nimmt, welche in einer
höheren
Programmiersprache (beispielsweise die C- oder C++-Sprache) erzeugt,
kompiliert und gelinkt werden und anschließend als Objektcode auf System 310 während der
Laufzeit ausgeführt
werden. Es ist jedoch für
den Fachmann ersichtlich, daß die
folgenden Verfahren und die folgende Vorrichtung auf Hardwareeinrichtungen
für ein
speziellen Zweck implementiert werden können, wie beispielsweise diskrete Logikeinrichtungen,
Schaltkreisen mit hohem Integrationsgrad (LSI's), kundenspezifischen integrierten Schaltungen
(ASIC's) oder anderer
spezialisierter Hardware. Die Beschreibung hier findet entsprechend
Anwendung für
Vorrichtung mit ähnlicher Funktion.
-
4 zeigt
ein Beispiel einer Softwarearchitektur für die Prozesse, welche den
Codierer umfassen. Eine Mehrzahl von Prozessen, welche entweder in
einer einzigen Einrichtung (beispielsweise 100 von 1)
oder in jedem einer Mehrzahl von Client-Codierern (beispielsweise 100–114)
resident sind, kann eine Mehrzahl von Client-Anwendungsprogrammen 401–403 umfassen,
welche über
Nachrichten mit dem Haupt-Videoindizierungsprotokoll(VIP)-Codierer 410 kommunizieren.
Der VIP-Codierer 410 implementiert die Transport-, Vermittlungs-
und Sicherungsschicht des ISO/OSI-Netzwerkmodells über getrennte
Abschnitte 410a, 410b und 410c des Codierers.
Client-Anwendungen arbeiten auf der Anwendungsschicht. Der VIP-Codierer 410 stellt
die notwendige Verbindung zwischen der Anwendungsschicht (Client-Anwendungsprogrammschnittstelle oder
API) und dem VBI-Inserter 130 zur Verfügung, welcher in der Bitübertragungsschicht
vorhanden ist. Spezielle Client-Anwendungen, die Aktienkurse umfassen
können,
können
bereitgestellt werden. Der VIP-Codierer 410 kann ferner
als Eingaben einen Zeitcode, GMT-Zeitreferenzen
oder andere Zeitreferenzen über
eine interne oder Gehäuseuhr
bei dem Codierer über
eine Client-Anwendungsprogramm mit speziellem Zweck empfangen, welche
zum Übermitteln
von Statusinformationen an Decodierer, wie beispielsweise den in 2 gezeigten 200,
verwendet wird.
-
5 zeigt
eine detaillierte Ansicht der Softwareprozesse, welche in einem
Decodierer (beispielsweise 200 gemäß 2) ablaufen.
Der Decodierer umfaßt
einen VIP-Decodierprozeß 500,
welcher mit der VBI-Decodiervorrichtung 230 kommuniziert,
nachdem die von dem Downlink 240 empfangenen Eingangsdaten
von dem Audio/Video-Programm decodiert wurden. Der VIP-Decodierer 500 kommuniziert über Client-Bitströme mit einer
Mehrzahl von registrierten Client-Anwendungen 510–513,
wobei jeder einen separaten Teil oder separate Teile des gemultiplexten
Datenstromes aufweisen kann, gemäß den Anforderungen
der Client-Anwendungen.
-
Bei
implementierten Ausführungsbeispielen der
vorliegenden Erfindung können
256 getrennte, mit einer Priorität
versehene Kanäle
zwischen einem VIP-Codierer/Decodierer und Client-Prozessen übermittelt
werden. Der VIP-Decodierer kann einen Statuskanal für Statusinformationen
separieren, welche von dem Codierer bei periodischen Intervallen
empfangen werden, welche zum Steuern/Timen des Decodierers und der
anderen Client-Anwendungsprogramme
verwendet werden. Dies kann von einem in 6 dargestellten
Status-Client 610 durchgeführt werden, welcher mit einem
Steuermodul 601 kommuniziert, welches für eine Steuerung des Decodierprozesses 500 selbst
verantwortlich ist. Darüber
hinaus können
der Programmanwendung 620, welche beispielsweise dafür verantwortlich
ist, beschreibende Echtzeitinformationen über das Programm zu empfangen,
Statusinformationen zur Verfügung
gestellt werden. Derartige beschreibende Informationen können Programm/Story/Segment-Markierungen, den
Volltext des Programms und/oder andere beschreibende Informationen über das
Programm enthalten, welche mit der Übermittlung synchronisiert sind.
Die Details von programmbeschreibenden Informationen werden detaillierter
im folgenden beschrieben. Statusinformationen können, gemäß der Implementierung, ferner
Eingabe für
ein beliebiges und/oder sämtliche
andere Client-Anwendungsprogramme 631–633 sein. Die verbleibenden
Nicht-Programm-Informationskanäle,
welche eine geringere Priorität
als Status- oder Programminformationen aufweisen, können Aktienkurse,
Sportergebnisse, Wetterinformationen oder andere Informationen umfassen,
welche übermittelt
(oder empfangen) werden, wie es die Bandbreite erlaubt.
-
Die
Einzelheiten der Funktion des Codierers werden unter Bezugnahme
auf 7a detaillierter beschrieben. Eine Mehrzahl von
VIP-Anwendungsprogrammen 701–703 kommuniziert
mit dem VIP-Codiererprozeß 400 über Vt_Nachrichten,
deren Details in 8 dargestellt sind. Jede der
Anwendungen weist eine Priorität
auf. Beispielsweise hat eine Statusanwendung die Priorität 0 (die
höchste), und
Programminformationen haben die Priorität 1 (zweithöchste), und andere, Nicht-Programm-Kanäle haben
die Priorität
3. Wenn Vt_Nachrichten 711–713 von dem Codierer
empfangen werden, wird eine Übermittlung
von Paketen wie beispielsweise 722 zu der Sicherungsschicht
durchgeführt,
und zwar auf einer mit einer Priorität versehenen Round-Robin-Basis.
Mit anderen Worten werden Vt_Nachrichten-Kanäle
mit höchster
Priorität
bedient, bis diese erschöpft sind,
und Kanäle
mit der gleichen Priorität werden
auf eine Round-Robin-Art bedient. Diese werden dann von der Sicherungsschicht 724 in
Rahmen 725 für
die Übermittlung
zu dem VBI-Inserter 130 umgewandelt.
Die Details der Annahme von Nachrichten und der Transformation von
Nachrichten in Pakete und Pakete in Rahmen ist in 7b gezeigt.
-
Wenn
Vt_Nachrichten 750 in dem Eingabepuffer überführt werden,
werden diese von der Vermittlungsschicht 755 in dem Codierer
in Vt_Pakete 760–762 transformiert,
wie es detaillierter in 9 gezeigt ist. Pakete werden
mit einer Nachrichtennummer und ihrer Sequenz in der Nachricht identifiziert.
Sobald sie von der Vermittlungsschicht 755 in Pakete umgewandelt
wurden, werden diese Nachrichten dann als Pakete 760–762 an
die Sicherungsschicht 724 in dem Codierer gesendet. Die
Sicherungsschicht 724 erzeugt dann für jedes der Pakete 760–762 einen
Vt_Rahmen 770–772.
Diese Rahmen werden dann zum Codieren in die vertikale Austastlücke durch
den VBI-Inserter 130 an
die Bitübertragungsschicht übermittelt.
-
Vt_Rahmen
werden detaillierter unter Bezugnahme auf 10 weiter
unten diskutiert und beschrieben. Die Vt_Rahmen werden in eine serielle Reihenfolge
gebracht und dann zur Übermittlung
auf eine beliebige bekannte Art von dem VBI-Inserter 130 codiert.
-
Das
Format einer Vt_Nachricht ist als 800 in 8 veranschaulicht.
Jede Nachricht enthält
ein erstes Feld nMessageProtocol 801, ein Byte, welches
zum Identifizieren der übermittelten
Informationen (beispielsweise Status, Programm, Aktien, Sport, Wetter
etc...) verwendet wird. Auf diesem Wege können die Nachrichten mit einer
Priorität
versehen werden. Das nächste
Feld, nVersion 802, ist ein Byte, welches die Version des
verwendeten Protokolls identifiziert. Das Feld flsHint 803 zeigt
an, daß die
Nachricht vor einem Ereignis zur Verfügung gestellt wird. Dies ermöglicht,
falls notwendig, ein "Pre-Roll" der Ausrüstung im
Receiver. Das flsUPDate-Feld 804 zeigt geupdatete Informationen
an (beispielsweise Outline-Updates
oder revidierte Nachrichten). Das fReserved-Feld 805 wird
gegenwärtig
nicht verwendet. Das Feld nDataSize 806 ist ein Doppelwort,
welches zum Spezifizieren der Anzahl von Datenbytes verwendet wird,
die in dem bData-Feld 809 enthalten sind. Das Feld nOpcode 807 wird
zum Spezifizieren der speziellen Operation verwendet, die auf die
in der Nachricht enthaltenen Daten auszuführen ist. Die Anwendungen kommunizieren
mit dem Codierer durch Öffnen
eines Kommunikationskanals und Senden von Nachrichten an den Codierer.
In diesem Beispiel können
Opcodes Integerwerte sein, welche eines der folgenden spezifizieren:
GetStationID, SetStationID, GetTime, SetTime, GetChannelMap, ChannelOpen,
ChannelClose, ChannelGetPriority, ChannelSetPriority und SendMessage.
Das nächste
Feld fReserved2 808 wird gegenwärtig nicht verwendet, und das
bDate-Feld 809 weist eine variable Länge auf, und zwar entsprechend
der Länge
der in dem Feld 806 spezifizierten Daten. In Beantwortung
auf eine beliebige der durch die Opcodes spezifizierten Operationen
kann der Codierer Ergebniscodes, wie beispielsweise Fehler- oder
Beendigungscodes, an die Client-Anwendungen
senden. Diese Ergebniscodes können
umfassen: ChannelAlreadyOpen, ChannelNotOpen, ChannelBusy, NotChannelOwner,
ProtocolMismatch, CommError, NoMoreChannels, NoMessage oder BadData.
-
Wie
oben beschrieben, bearbeitet das Steuerprogramm in dem Codierer
Anwendungen zum Erzeugen und Übermitteln
von Paketen gemäß der Priorität des Kanals
und dann auf eine Round-Robin-Art.
Die Struktur eines Paketes ist in 9 veranschaulicht. 900 von 9 zeigt
das Format der Pakete, welche erzeugt und dann in Vt_Rahmen in den seriellen
gemultiplexten Bitstrom an den VBI-Inserter 130 übermittelt
werden. Das nPacketProtocol-Feld 901 ist ein 1 Byte langes
Feld, welches das Paket identifiziert als eines, welches durch dieses
Protokoll unterstützt
wird, oder andere Werte für
andere Protokolle aufweist, welche in zukünftigen Ausführungsbeispielen übermittelt
werden können.
Das Feld nVersion 902 wird zum Spezifizieren der Version
des Codierers verwendet, welcher die Pakete erzeugt und übermittelt.
Das nChanID-Feld 903 ist ein Byte, welches als Integer-wert
die Kanalnummer des Paketes in dem seriellen Bitstrom spezifiziert.
Das nMessageID-Feld 904 spezifiziert die Nachrichtennummer
auf dem jeweiligen Kanal, von welchem das Paket erhalten wurde.
Dies wird zum Senden der Nachricht an den Decodierer in der richtigen
Reihenfolge verwendet. Das nPacketID-Feld 905 gibt die Nummer
des Paketes in der jeweiligen Nachricht wieder. Wiederum wird dies
zum Aufbauen der Nachricht verwendet. Das fMorePackets-Feld 906 ist
ein boolescher Ausdruck, welcher dazu verwendet wird, zu spezifizieren,
ob es weitere Pakete für
die Nachricht gibt. Wenn nicht, dann kann der Decodierer feststellen,
daß er
sämtliche
der Pakete für
die Nachricht hat und kann die Nachricht an den entsprechenden Client
bzw. die entsprechenden Clients übermitteln.
Das fReserved-Feld 907 ist zur Zeit ungenutzt, und das nDataSize-Feld 908 spezifiziert
die Größe des bData-Feldes 909 in
Bytes. Das bData-Feld 909 ist ein Feld mit variabler Länge, welches
dazu verwendet wird, die Daten zu enthalten. Es hat die im nDataSize-Feld 908 spezifizierte
Länge.
-
Die 10 veranschaulicht
das Format eines Vt_Rahmens 1000, welcher an den VBI-Inserter 130 übermittelt
wird. VIP-Pakete
werden in serielle, an den VBI-Inserter 130 zu sendende
Bytestromrahmen (byte stream frames) umgewandelt. Rahmen bestehen
aus Feldern zum Anzeigen des Beginns und des Endes des Rahmens,
und die Daten werden vorgefertigt, so daß kein Start- oder Endzeichen
vorkommt. Wie es in 10 veranschaulicht ist, geht das
Startrahmenfeld STX 1001 den Vt_Paket-Informationen 1002,
einem einzigen Vt_Paket, wie beispielsweise 900, voraus.
Dem Bitstrom 1002 folgen ein CRC-Scheck-Feld 1003 und
ein Rahmenende-Zeichen ETX 1004 zum Anzeigen des Endes
des Rahmens.
-
11 veranschaulicht
ein Vt_Status_Composite-Paket, welches von dem Codierer erzeugt
wird und an sämtliche
Decodierer zu regelmäßigen (beispielsweise
5 Sekunden) Intervallen gesendet wird. Das Vt_Status_Composite-Paket ermöglicht eine
Synchronisation von Decodierer-Anwendungen mit dem Codierer. Das
Paket 1100 umfaßt
ein xStationID-Feld 1101, welches die Station identifiziert,
welche die Übermittlung
durchführt
(beispielsweise "CNN
Headline News").
Das Paket umfaßt
das xTime-Feld 1102, welches eine Zeitangabe ist, die mit
der hausinternen Uhr des Übermittlers synchronisiert
ist. Bei implementierten Ausführungsbeispielen,
welche Statuspakete in 5-Sekunden-Intervallen übermitteln,
ist die Zeit GMT, jedoch können bei
anderen Ausführungsbeispielen
SMPTE-Zeitcodes verwendet werden, wobei Statuspakete mit jedem Videorahmen
(30 fps) gesendet werden. Gemäß der Implementierung können andere
Zeitangaben verwendet werden. Schließlich ist eine Channel-Map 1103 von
dem Paket umfaßt,
welche den höchsten Übermittlungskanal,
und einen Abschnitt variabler Größe umfaßt, welcher
Identifizierungsinformationen für
jeden Kanal (beispielsweise VIP-Protokolle) enthält.
-
12 veranschaulicht
ein Programmpaket, Vt_Program_Marker 1200, welches für eine Echtzeitbeschreibung
von Audio/Video-Programmdaten verwendet wird. Andere Programmpakete
können
ebenfalls übermittelt
werden. Diese umfassen:
- 1. Ereignisse – welche
einen momentanen Aktionstypen codieren, wie beispielsweise eine
Kameraumschaltung, einen Zoom, einen Wechsel oder einen anderen
Editierungsbefehl. Dieser Typ kann umfassen:
a. einen Typ (Kameraumschaltung,
Zoom, Wechsel, etc... );
b. eine Länge;
c. einen Körper (Daten
für das
Ereignis);
- 2. VIF's (Videobildformat) – zeigt
an, daß eine Mehrzahl
von Rahmen von einer Digitalisierungsbaugruppe in dem Receiver aufgenommen
werden soll. Dies kann gespeichert und zur Referenz verwendet werden
(beispielsweise eine Wetterkarte);
- 3. Untertitel – Volltext
von sämtlichem
gesprochenen Material;
- 4. Seitenleisten – Bezugsdaten.
Diese können umfassen,
sind aber nicht beschränkt
auf:
a. URL (Universal Resource Locaters) – zum Auffinden von Informationen
in dem WWW (World-Wide-Web), welche sich auf das Programm beziehen
können;
b.
OLE-Zeiger – Microsoft's Object Linking
und Embedding-Protokoll zum Auffinden von Daten auf der Client-Maschine,
welche programmbezogen sind.
-
Der
Vt_Programm_Marker 1200 wird zur Echtzeit-Identifikation
des übermittelten
Programms verwendet. Es wird alle 5 Sekunden übermittelt, oder wenn sich
der Status des Programms (beispielsweise nLevel oder nItem) ändert. Andere
Typen von Programmpaketen werden auf einer Wie-Gebraucht-Basis gemäß den Anforderungen
der Anwendung gesendet. Programm-Marker können gemäß der Implementierung synchronisiert
mit dem Videoprogramm oder einer Zeitspanne in bezug auf das Programm gesendet
werden. Beispielsweise können
Programm-Marker eines bestimmten Typs dem Ereignis in gewisser Beziehung
vorausgehen, um eine Aktivierung und Synchronisation einer Einrichtung
bzw. von Einrichtungen in dem Empfänger zu ermöglichen. Das nType-Feld 1201
geht den Programmpaketen voraus, um den Typ des Pakets (beispielsweise
Marker, Ereignis, Untertitel, Seitenleiste etc...) zu identifizieren.
Es gibt auch verschiedene Typen von Markern, welche in das Feld 1201 codiert
werden können,
welche spezifizieren: Programm, Story, Segment, Abschnitt, Segment
oder Werbung. Diese werden zum Anzeigen des Anfangs/Endes eines
Programmteils verwendet.
-
Der
Vt_Program_Marker 1200 verwendet das nLevel-Feld 1202,
um das diesen Marker beschreibende Outline-Level zu identifizieren.
Dies wird verwendet, um das Programm anzuzeigen, auf dieses zuzugreifen
oder es zu reassemblen. Das nLevel-Feld 1202 kann verwendet
werden, um Identifizierungsinformationen in der Outline-Form auf
einem Client-Computer anzuzeigen. Das nItem-Feld 1203 identifiziert
den jeweiligen Gegenstand bei dem identifizierten Outline-Level.
Das nBytes-Feld 1204 identifiziert die Länge der
Zeichenkette, welche in das Feld szText 1205 gepackt wurde.
Wenn das nLevel-Feld 1202 beispielsweise eine 2 enthält, dann
wären drei
Zeichenketten (für
drei Level) in das szText-Feld 1205 gepackt (das Level
ist 0-basierend, wobei
0 das erste Level ist). Bei einem Nachrichtenprogramm können die
Informationen beispielsweise umfassen: Programm – "CNN Headline News", Segment – "Dollars & Sense" und Geschichte – "Intel-Aktie steigt". Bei einem übertragenen Theaterstück können sie
beispielsweise umfassen: Stück – "Henry IV", Akt – "Akte Drei" und Szene – "Szene Fünf – Cade Conspires
with Dirk". Andere
Typen von Programmpaketen können
ebenfalls übermittelt
werden und liegen im Geist und Schutzumfang der vorliegenden Erfindung.
-
Andere
Typen von Nicht-Programm-Paketen können ebenfalls übermittelt
werden. Diese umfassen: Aktiennotierungen, Sportergebnisse und Wetterinformationen.
Diese werden prioritätsmäßig sowohl nach
Status- als auch nach Programminformationen in Abhängigkeit
von verfügbarer
Bandbreite auf einer Echtzeitbasis übertragen. Ein Beispiel eines
Aktiennotierungspaketes ist in 13 als Vt_Quote_Tick-Paket 1300 gezeigt,
welches immer dann gesendet wird, wenn eine Aktiennotierung aus einer
Eingabe an den Codierer gelesen wird. Dieses Paket umfaßt ein Signatur-Wort-Feld
wSig 1301 zum Identifizieren der Notierung, ein Börsen-Identifizierungsfeld
xExchange 1302, ein Ticker-Symbol-Feld szSymbol 1303,
eine Anzahl von Transaktionsfeldern 1304 und ein Transaktionsarray 1305,
welches Transaktionsinformationen für die Anzahl von Transaktionen
enthält,
die in Feld 1304 spezifisiert sind.
-
Ein üblicher
VIP-Bitstrom ist als 1400 in 14 dargestellt.
Pakete sind als 1401–1412 dargestellt,
wobei Statuspakete, wie beispielsweise 1401 und 1411,
auf einer regelmäßigen Basis
(beispielsweise alle 5 Sekunden) gesendet werden, um die Empfänger mit
dem Übermittler
zu synchronisieren.
-
Programm-Marker-Pakete,
wie beispielsweise 1402 und 1412, werden entsprechend
versendet, und zwar wenn sich der Programminhalt ändert, um die Änderung
anzuzeigen. Nicht-Status-, Nicht-Programm-Pakete 1403–1410 werden
in der verbleibenden Zeit versendet, und zwar auf eine Round-Robin-Art,
wie es die Bandbreite zuläßt.
-
Die
drei Hauptprozesse des Codierers für die unterschiedlichen Schichten
sind in den 15a–15c gezeigt. 15a veranschaulicht die Abfolge von Schritten,
welche bei der Transport/API-Schicht des ISO/OSI-Modells ausgeführt werden.
Es sei angemerkt, daß Prozesse
unter Verwendung von objekt orientierten Techniken implementiert
werden, und daher bezieht sich der Source-Code auf ein Objekt bzw.
Objekte und begleitende Prozesse, welche diesem Objekt bzw. diesen
Objekten dient bzw. dienen. Daher ist die genaue Ausführungsreihenfolge
der drei in den 15a–15c gezeigten
Unterprozesse nicht notwendigerweise genau sequentiell. Auf jeden
Fall empfängt
die Transport/API-Schicht eine Nachricht von einer Client-Anwendung
und bestimmt bei Schritt 1504, ob es ein Timer-Ereignis
ist (und beispielsweise somit eine Übermittlung einer Statusnachricht
erfordert). Ist dies der Fall, dann wird bei Schritt 1506 eine Vt_Status_Composite-Nachricht
gesendet. Ist dies nicht der Fall, wird bestimmt, ob die Nachricht
von dem ChannelOpen/Close-Typ ist. Ist dies der Fall, dann wird
die entsprechende Aktion bei Schritt 1510 ausgeführt, und
eine Statusnachricht wird versendet, welche den Kanalwechsel anzeigt.
Wenn die Nachricht nicht vom Open/Close-Typ war, wie es bei Schritt 1508 festgestellt
wird, dann schreitet der Prozeß zu
Schritt 1512 fort, welcher bestimmt, ob eine Nachricht
auf dem Kanal ansteht. Wenn dies der Fall ist, dann wird eine Beantwortungsnachricht
(beispielsweise ChannelBusy) bei Schritt 1514 an die Anwendung
zurückgegeben,
und die Anwendung kann eine korrigierende Aktion vornehmen. Wenn
nicht, dann wird die Nachricht bei Schritt 1516 auf den
aktuellen Kanal eingereiht und an die Vermittlungsschicht zum Paketieren
gesendet. Der Prozeß ist
somit bei Schritt 1518 beendet.
-
Die
Vermittlungsschicht-Bearbeitung in dem Codierer ist in 15b veranschaulicht. Wenn keine Nachrichten mehr
in der Nachricht anstehen, was bei Schritt 1520 bestimmt
wird, dann verbleibt der Prozeß bei
Schritt 1522 untätig.
wenn jedoch eine Nachricht bzw. Nachrichten die Bearbeitung erwarten, dann
wird der Kanal mit höchster
Priorität
mit einer wartenden Nachricht bzw. wartenden Nachrichten bei Schritt 1524 bestimmt.
Der nächste
Kanal mit der gewählten
Priorität
wird dann für
die Nachrichtenbearbeitung bei Schritt 1526 gewählt, und
zwar auf eine Round-Robin-Art. Dies ermöglicht eine gleichwertige Bearbeitung
von Nachrichten von Anwendungen mit der gleichen Kanal-Priorität. Bei Schritt 1528 wird dann
ein Vt_Packet aus einem Teil der Vt_Nachricht von dem gewählten Client
erzeugt. Die maximale Paketlänge
für jedes
Paket wird verwendet, bis die Nachricht erschöpft ist, wobei das letzte Paket
für eine
Nachricht eine variable Länge
aufweist, und zwar gemäß dem verbleibenden
Teil der Nachricht. Sobald dies durchgeführt wurde, wird das Vt_Packet bei
Schritt 1530 dann an die Sicherungsschicht gesendet, und
der Prozeß fährt fort,
bei Schritt 1520 Nachrichten zu bearbeiten.
-
15c veranschaulicht die Sicherungsschicht-Bearbeitung,
welche in dem Codierer durchgeführt
wird. Die Schritte 1532–1548 werden zum Erzeugen
eines Vt_Rahmen für
jedes von der Vermittlungsschicht empfangene Vt_Packet durchgeführt. Zuerst
wird bei Schritt 1532 eine CRC(zyklische Redundanzprüfung)-Berechnung
für das
Paket durchgeführt,
und zwar bei Schritt 1532. Dann wird bei Schritt 1534 ein
Rahmenanfangszeichen STX dem Rahmen hinzugefügt.
-
Es
wird dann die Verarbeitung des Pakets eingeleitet, wobei eine Prüfung bei
Schritt 1536 bestimmt, ob es in dem Paket weitere zu bearbeitende Zeichen
gibt. Ist dies der Fall, schreitet der Prozeß zu Schritt 1538 fort.
Die Schleife 1536–1542 erstellt
das Paket, wobei jedem Auftreten der STX-, ETC- oder DLE-(Datenlink-Escape)Zeichen
ein DLE vorangestellt wird. Wenn das Zeichen keines dieser drei
ist, wie es bei Schritt 1538 festgestellt wird, wird es
bei Schritt 1542 in dem Rahmen angeordnet. Wenn es eins
der drei Zeichen ist, wird ihm DLE vorangestellt, und bei Schritt 1542 wird
es in dem Rahmen angeordnet. Schritt 1536 wird dann wiederholt,
bis keine weiteren Zeichen in dem Paket vorhanden sind.
-
Sobald
die Verarbeitung des Paketes abschlossen ist, wie es bei Schritt 1536 festgesellt
wird, schreitet der Prozeß zu
Schritt 1544 voran, wobei die berechnete CRC in den Rahmen überführt wird,
um eine Paritäts-Prüfung zu
ermöglichen.
Ein ETX-Zeichen wird dann bei Schritt 1546 hinzugefügt, um das Ende
des Rahmens zu kennzeichnen, und der Vt_Rahmen kann dann an einen
seriellen Ausgangsport des Codierer übermittelt werden, um ihn mit
dem Audio/Video-Programm (beispielsweise durch den VBI-Inserter 130)
zu verschmelzen. Die Codierung ist somit vollständig.
-
Der
Betrieb des Decodierers auf den drei Vermittlungsschichten ist in
den 16a–16c gezeigt.
Die Datenlink-Verarbeitung
in dem Decodierer ist in 16a veranschaulicht.
Die Datenlink-Verarbeitung wird bei Schritt 1632 durchgeführt, wobei ein
Block von einem seriellen Port (beispielsweise vom VBI-Decodierer 230)
empfangen wird und in den Ring-Puffer
kopiert wird. Bei 1633 wird bestimmt, ob ein Vt_Packet
zur Zeit untersucht wird. Wenn nicht, dann wird bei Schritt 1634 das
STX-Zeichen gesucht, um den Anfang der Nachricht zu ermitteln. Nach
Beendigung von Schritt 1634 oder nach Bestimmung, daß ein Vt_Packet
bereits bei Schritt 1633 untersucht wird, wird bei Schritt 1636 bestimmt,
ob in dem Ring-Puffer weitere zu bearbeitende Zeichen vorhanden
sind. Wenn nicht, wird der Empfang eines Blocks bei Schritt 1632 fortgeführt. Wenn
noch mehrere Zeichen in dem Ring-Puffer vorliegen, wie es bei Schritt 1636 festgestellt
wird, dann schreitet der Prozeß zu Schritt 1638 fort,
wo bestimmt wird, ob das Zeichen ein ETX-Zeichen ist. Wenn das Zeichen
kein ETX ist, dann wird das Zeichen bei Schritt 1640 in
den Vt_Packet-Puffer kopiert. Diese Schleife wird fortgesetzt, bis
keine weiteren zu verarbeitenden Zeichen in dem Ring-Puffer vorhanden
sind, oder das ETX-Zeichen aufgefunden wird. Sobald bei Schritt 1638 das
ETX-Zeichen erkannt
wird, ist dann das Ende des Rahmens erreicht und die Bearbeitung
des Paketes kann stattfinden. Bei Schritt 1642 wird ein CRC
für das
Paket durchgeführt.
Wenn dieser scheitert, wurden die Daten beschädigt, und dann wird das Vt_Packet
bei Schritt 1644 verworfen. Wenn der CRC-Check positiv
ausfällt,
kann das Vt_Packet dann bei Schritt 1646 an die Vermittlungsschicht
gesendet werden. Anschließend
wartet der Prozeß in der
Schleife 1632–1636,
um das STX-Zeichen aufzufinden und bestimmt, ob weitere Zeichen
empfangen werden.
-
Die
Vermittlungsschicht-Bearbeitung ist in 16b gezeigt.
Bei Schritt 1614 wird ein Vt_Packet empfangen. Die Schritte 1616–1620 prüfen die Vt_Packet_Size,
um festzustellen, ob irgendwelche Bits verloren wurden, die Vt_Packet- MessageID, um festzustellen,
ob diese auf eine gültige
Nachricht Bezug nimmt und die Vt_Packet_PacketID, um festzustellen,
ob diese auf ein gültiges
Paket in der Nachricht Bezug nimmt. Wenn einer dieser Überprüfungen fehlschlägt, dann
wird die im Aufbau befindliche Vt_Message bei Schritt 1622 verworfen,
und der Prozeß geht
in einen untätigen
Zustand 1624 über,
bis ein nachfolgendes Vt_Packet empfangen wird. Sobald das Paket
als gültig
erkannt wird, wie es bei den Schritten 1616 bis 1620 bestimmt
wird, wird das Vt_Packet dann bei Schritt 1626 der im Aufbau
befindlichen Nachricht hinzugefügt.
Dann, wenn sich keine weiteren Pakete in der Nachricht befinden,
wie es bei Schritt 1628 bestimmt wird, wird eine build-Vt_Nachricht
an die Transportschicht gesendet, um mit einem beliebigen Client
bzw. beliebigen Clients zu kommunizieren. Wenn sich weitere Vt_Packete
in der Nachricht befinden, was bei Schritt 1628 festgestellt
wird, dann fährt
der Prozeß bei Schritt 1614 fort.
-
Die
Funktion der Transportschicht ist in 16c veranschaulicht.
Eine Nachricht bzw. Nachrichten werden bei Schritt 1602 bei
der Transportschicht von der Vermittlungsschicht empfangen. Zunächst wird
bei Schritt 1604 bestimmt, ob es sich um eine Vt_Status-Nachricht
handelt. Ist dies der Fall, dann wird bestimmt, ob irgendwelche
Kanäle
von der Statusnachricht geschlossen sind. Ist dies der Fall, dann
wird der lokale Status-Cache des Channels neu aufgebaut, was die
Channel-Map neu aufbaut, und eine ChannelClosed-Nachricht wird bei
Schritt 1610 an alle lokalen Client-Anwendungen gesendet.
Der Prozeß geht
dann bei Schritt 1612 weiter, welcher auch ausgeführt wird,
wenn die Nachricht keine Statusnachricht war. Bei Schritt 1612 wird
die Vt_Nachricht dann an die Anwendung bzw. die Anwendungen übermittelt,
die den Kanal der Nachricht empfangen.
-
Ein
Beispiel eines Programminformationsfensters, wie es auf der Anzeige
eines geeignet programmierten Mikrocomputers (beispielsweise 310 gemäß 3)
oder einer anderen Vorrichtung mit ähnlicher Funktion, welche eine
Programminformation-Client-Anwendung
ausführt,
angezeigt werden kann, ist als 1700 in 17 gezeigt.
Ein derartiges Programminformationsfenster kann unter Verwendung
einer beliebigen Anzahl von kommerziell erhältlichen graphischen Benutzerschnittstellen
(GUI), wie beispielsweise die Windows-GUI, verfügbar von Microsoft Corporation
of Redmond, Washington, angezeigt werden. Wie veranschaulicht, kann
das Programminformationsfenster Programminformationen in Outline-Form
darstellen, wie sie aus einem Paket wie beispielsweise dem Programm-Markerpaket 1200 hergeleitet
werden, wie es unter Bezugnahme auf 12 oben
beschrieben ist. In diesem Nachrichten-Anwendungsfenster 1700 wird
der Programmtitel als Fenstertitel dargestellt, und Segmenttitel
werden als 1710, 1720, 1730 und 1740 gezeigt. Story-Überschrift wie 1711 bis 1718,
wie sie oben beschrieben werden, werden in der Reihenfolge ihres Auftretens
unter der Überschrift
aufgeführt.
Unter Verwendung dieser Art von Anzeige, bei Verwendung beliebiger
der Pull-Down-Menüoptionen 1570,
kann auf andere Optionen wie beispielsweise Echtzeitaktienkurse,
Sportergebnisse oder andere Nicht-Programm-Informationen zugegriffen
werden. Eine Auswahl einer beliebigen der Überschriften 1711 bis 1718 kann
ein Anzeigen des Textes der Story, von Cosed-Captioned-Information
und/oder von anderen programmrelevanten Informationen wie beispielsweise
Ereignisse, Untertitel, Seitenleisten oder von anderen nützlichen
Informationen ermöglichen.
-
Ein
weiteres Beispiel einer Anzeige während einer Benutzersitzung
an dem Decodierer ist in 18 gezeigt.
Das Fenster 1810 stellt ein im Fernsehen gezeigtes Audio/Video-Programm
dar, welches unter der Kontrolle eines ersten Tasks in einer Multitasking-Umgebung
ausgeführt
werden kann, und kann durch eine beliebige Anzahl von Quellen (beispielsweise
Satellit, Fernsehen, Kabel oder digitale Übermittlung) zugeführt werden.
Ein zweiter Task, ein Client des VIP-Decodierers (beispielsweise 500 von 5),
kann programmrelevante Informationen, wie beispielsweise Überschriften
für Nachrichtenstories,
in einem Fenster wie beispielsweise 1820 anzeigen. Auf
jede andere übermittelte
Programminformation kann unter Verwendung dieses Fensters unter
Steuerung des Programm-Clients zugegriffen werden. Schließlich können Nicht-Programm-Informationen
wie beispielsweise Echtzeitaktiennotierungen in dem Fenster 1830 unter
der Steuerung eines dritten Tasks, ebenfalls ein Client des Decodierers, dargestellt
werden. Auf diesem Wege können
dem Benutzer Programm- und Nicht-Programm-Informationen angezeigt werden, und
zwar in Abhängigkeit davon,
welche Informationen dieser als interessant erachtet und davon,
welche Client-Anwendung bzw. welche Client-Anwendungen aktiviert
sind.
-
Unter
Verwendung der oben beschriebenen Verfahren, der Vorrichtung, Pakete
und Protokolle können
Client-Anwendungsprogramme mit einem Hauptdecodiererprozeß (beispielsweise 500 von 5)
kommunizieren und nützliche,
gemultiplexte serielle Daten erhalten, welche mit übermittelten
Audio/Video-Informationen
erhalten werden, und können
bestimmte nützliche
Informationen gemäß Anforderung
extrahieren. Die Nachbearbeitung einschließlich der Anzeige von Benutzerschnittstellen,
der Steuerung einer zusätzlichen
Einrichtung bzw. zusätzlicher
Einrichtungen (beispielsweise Videodigitalisierer oder Videorecorder),
oder andere reagierende Aktionen in den Clients als ein Ergebnis
des Empfangs derartiger Informationen, können gemäß der Implementierung durchgeführt werden.
Die Übermittlung
oder der Empfang derartiger Informationen stört das Audio/Video-Programm,
welches konkurrierend mit diesen übertragen wird, nicht, und
nutzt ferner die ungenutzte Bandbreite, die von solchen Übermittlungen
zur Verfügung
gestellt wird. Somit weisen die implementierten Ausführungsbeispiele
der vorliegenden Erfindung Vorteile auf, die von dem Stand der Technik
weder erkannt noch realisiert wurden.
-
Somit
wurden ein Verfahren und eine Vorrichtung zum Übermitteln von Informationen
zusammen mit einem Audio/Video-Programm
beschrieben. Es sei angemerkt, daß obwohl das Vorstehende einen
besonderen Nutzen bei diesen Systemen hat, und obgleich es unter
Bezugnahme auf bestimmte spezielle Ausführungsbeispiele in den Figuren
und dem Text beschrieben wurde, man die vorliegende Erfindung ohne
Verwendung sämtlicher
dieser speziellen Details verwenden kann. Somit sollen die Figu ren
und der Text lediglich auf beschreibende Weise betrachtet werden
und nicht als die vorliegende Erfindung beschränkend. Die vorliegende Erfindung
wird lediglich durch die beigefügten
Ansprüche
begrenzt, welche folgen.