DE10043188A1 - Fehlerkorrekturverfahren für Videokompressionskodierung unter Verwendung von mehreren Referenzpuffern und einem Nachrichtenkanal - Google Patents
Fehlerkorrekturverfahren für Videokompressionskodierung unter Verwendung von mehreren Referenzpuffern und einem NachrichtenkanalInfo
- Publication number
- DE10043188A1 DE10043188A1 DE10043188A DE10043188A DE10043188A1 DE 10043188 A1 DE10043188 A1 DE 10043188A1 DE 10043188 A DE10043188 A DE 10043188A DE 10043188 A DE10043188 A DE 10043188A DE 10043188 A1 DE10043188 A1 DE 10043188A1
- Authority
- DE
- Germany
- Prior art keywords
- macroblock
- buffers
- error
- buffer
- encoder
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
- H04N21/65—Transmission of management data between client and server
- H04N21/658—Transmission by the client directed to the server
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/107—Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/164—Feedback from the receiver or from the transmission channel
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
- H04N19/89—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving methods or arrangements for detection of transmission errors at the decoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
- H04N21/63—Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
- H04N21/637—Control signals issued by the client directed to the server or network components
- H04N21/6377—Control signals issued by the client directed to the server or network components directed to server
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/18—Automatic repetition systems, e.g. Van Duuren systems
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Verfahren zum Übertragen und Empfangen von Videodaten, bei dem ein Encoder Makroblöcke in einer Mehrzahl von Referenzpuffern speichert, bei dem der Encoder die Makroblöcke überträgt, die relativ zu jedem der Referenzpuffer codiert sind, bei dem ein Decoder die Makroblöcke empfängt, und bei dem als Antwort darauf, dass der Decoder einen Fehler hinsichtlich eines bestimmten Makroblocks anzeigt, der relativ zu einem ersten der Puffer encodiert wurde, der Encoder einen zweiten der Puffer zur Fehlerkorrektur verwendet, wenn der zweite Puffer nicht mit einem Fehler behaftet ist. Als Antwort darauf, dass der Decoder einen Fehler hinsichtlich eines bestimmten Makroblocks und allen der Puffer anzeigt, die mit einem Fehler behaftet sind, überträgt der Encoder zumindest einen Makroblock, der unabhängig von jedem anderen Makroblock codiert ist.
Description
Die Erfindung betrifft das Gebiet der Encodierung und
Kompression von digitalen Daten, insbesondere das Gebiet des
Codierens von digitalen Daten für Video-Konferenzen in der Art,
dass die Datenmenge reduziert wird, die als Reaktion auf Fehler
in den empfangenen Daten vorgesehen ist.
Ein Videosignal beinhaltet Daten, die eine zeitliche Abfolge
von Standbildern darstellen, welche als "Einzelbilder"
("frames") bezeichnet werden. Falls das Zeitintervall zwischen
jedem Einzelbild klein genug ist und die Einzelbilder in einer
zeitlichen Abfolge angezeigt werden, simuliert das Videosignal
eine Bewegung. So sieht zum Beispiel der NTSC-Fernsehstandard
eine Übertragung eines Videosignals mit dreißig Einzelbildern
pro Sekunde aufweist vor. Bei einem herkömmlichen US-
Fernsehapparats, welcher NTSC-Videosignale empfängt, wird daher
der Bildschirm dreißig Mal pro Sekunde aktualisiert, um ein
simuliertes, bewegtes Bild zu schaffen.
Die Übertragung von Videosignalen über Datenkanäle mit einer
relativ geringen Bandbreite stellt eine Herausforderung dar.
Üblicherweise gibt es eine Abwägung zwischen der Anzahl
bereitgestellter Einzelbilder pro Sekunde und der Auflösung von
jedem Einzelbild. Die Erhöhung der Auflösung von jedem
Einzelbild erhöht die Datenmenge des entsprechenden
Einzelbildes. Bei Einzelbildern mit relativ hoher Auflösung ist
daher die Anzahl von Einzelbildern pro Sekunde, welche in einem
Kanal mit geringer Bandbreite übertragen werden können, kleiner
als die Anzahl von Einzelbildern, welche bei der Verwendung von
Einzelbildern mit niedriger Auflösung pro Sekunde übertragen
werden können.
Eine Lösung zum Verbessern der Leistungsfähigkeit (Performance)
von Videosignalen, die über Kanäle mit relativ geringer
Bandbreite übertragen werden, besteht darin, die Notwendigkeit
zu eliminieren, dass jedes Einzelbild vollständig übertragen
wird. Stattdessen wird andere Information übertragen, die an
der Empfangsseite die Rekonstruktion von jedem Einzelbild
erlaubt. So sieht z. B. der H.263 ITU-Standard vor, ein erstes
Einzelbild in seiner Gesamtheit zu übertragen, und dann einen
oder mehrere Bewegungsvektoren und Prädiktions-
Fehlerinformation für nachfolgende Einzelbilder zu übertragen.
Bewegungsvektoren stellen die Verschiebung von Teilen eines
Bildes von einem Referenz-Einzelbild zu einem aktuellen
Einzelbild dar, während die Pradiktions-Fehlerinformation den
Unterschied zwischen dem aktuellen Einzelbild und dem Referenz-
Einzelbild darstellt, wobei die Information des
Bewegungsvektors verwendet wird. Daher kann jedes Video-
Einzelbild bestimmt werden, indem zunächst der
Bewegungskompensationsvektor auf das Referenz-Einzelbild
angewendet wird und dann die Prädiktions-Fehlerinformation
verwendet wird. Das Videosignal kann dann durch Senden des
ersten Einzelbildes und nachfolgendes Senden von
Bewegungsvektor und Prädiktions-Fehlerinformation für jedes der
nachfolgenden Einzelbilder übertragen werden.
Der H.263-Standard erlaubt auch das relative Codieren eines
Teils eines Einzelbildes, welches als "Makroblock" bezeichnet
wird. Im Falle der Verwendung eines Makroblocks können der
Vektor und die Fehlerinformation im Gegensatz zu einem gesamten
Einzelbild relativ zu dem Makroblock bereitgestellt werden.
Zusätzlich kann es anstelle der Übertragung eines gesamten
neuen Referenz-Einzelbildes nur notwendig sein, einen neuen
Makroblock zu übertragen, welcher dann für ein nachfolgendes
relatives Codieren mit Bewegungsvektor, Fehlerkompensation,
etc. verwendet werden kann.
Ein Nachteil der H.263-Technik zum Codieren von
Videoinformation besteht darin, dass ein Übertragungsfehler
oder Datenverlust dazu führt, dass alle nachfolgenden
Makroblöcke nicht mehr verlässlich sind, da jeder Makroblock
auf den Bewegungsvektoren und den Prädiktions-
Fehlerinformationen beruht, die den vorhergehenden Makroblock
betrifft. Die Korrektur eines solchen Fehlers kann dadurch
erfolgen, dass der Sender erneut einen neuen Makroblock sendet.
Für Übertragungskanäle mit relativ geringer Fehler-Rate stellt
dies kein gravierendes Problem dar. Eine mit H.263+ oder H.263-
Version 2 bezeichnete verbesserte Version des H.263-Standards
stellt einen Mechanismus bereit, um dem Sender anzuzeigen, dass
das empfangene Signal Fehler enthält. Der H.263+-Standard weist
jedoch auch Einschränkungen auf, von denen einige in dem Anhang
N.5 der Beschreibung des H.263+-Standards beschrieben sind.
Wenn der Empfänger eine Bewegungsvektorinformation und eine
fehlerhafte Prädiktions-Fehlerinformation empfängt, schickt der
Empfänger daher ein Signal zurück zu dem Sender, um
anzufordern, dass ein komplettes Referenz-Einzelbild gesendet
wird, so dass die Fehlerkorrektur möglich ist.
Die Aufgabe der Erfindung besteht darin, ein
Fehlerkorrekturverfahren für Videokompressionskodierung zu
schaffen, bei dem die Datenmenge reduziert wird, die als
Reaktion auf Fehler in den empfangenen Daten vorgesehen ist.
Gemäß der Erfindung wird ein Verfahren zum Übertragen und
Empfangen von Videodaten geschaffen, bei dem ein Encoder
Makroblöcke in einer Mehrzahl von Referenzpuffern speichert,
bei dem der Encoder die Makroblöcke überträgt, die relativ zu
jedem der Referenzpuffer codiert sind, bei dem ein Decoder die
Makroblöcke empfängt, und bei dem als Antwort darauf, dass der
Decoder einen Fehler hinsichtlich eines bestimmten Makroblocks
anzeigt, der relativ zu einem ersten der Puffer encodiert
wurde, der Encoder einen zweiten der Puffer zur Fehlerkorrektur
verwendet, wenn der zweite Puffer nicht mit einem Fehler
behaftet ist. Als Antwort darauf, dass der Decoder einen Fehler
hinsichtlich eines bestimmten Makroblocks und allen der Puffer
anzeigt, die mit einem Fehler behaftet sind, überträgt der
Encoder zumindest einen Makroblock, der unabhängig von jedem
anderen Makroblock codiert ist. Der Decoder kann einen
Makroblock empfangen, der mit einem Fehler behaftet ist, und
bei dem als Antwort auf alle Puffer des Decoders, die mit
Fehlern behaftet sind, der Decoder kann eine Anforderung an den
Encoder übertragen, zumindest einen Makroblock zu übertragen,
der unabhängig von jedem anderen Makroblock codiert ist. Der
Encoder kann als Antwort auf die Anforderung zumindest einen
Makroblock übertragen, der unabhängig von jedem anderen
Makroblock codiert ist.
Der Encoder, der für eine Fehlerkorrektur einen zweiten der
Puffer verwendet, kann unter Verwendung eines zweiten der
Puffer als Referenz und mit Markieren des ersten der Puffer als
fehlerbehaftet einen Makroblock encodieren. Als Antwort auf das
Markieren des ersten der Puffer als einen fehlerbehafteten,
kann ein Zeitgeber gesetzt werden, um die Zeitdauer anzuzeigen,
seitdem der Fehler aufgetreten ist, und als Antwort darauf,
dass die Zeitdauer seit dem Auftreten der Fehler größer ist als
ein vorgegebener Schwellenwert, kann der dem ersten der Puffer
zugeordnete Fehler gelöscht werden. Der vorgegebene
Schwellenwert kann der vollständigen Übertragungs- und
Verarbeitungszeit zwischen dem Encoder und dem Decoder
entsprechen.
Eine Anzahl von verwendeten Puffern kann als Antwort auf
Fehler, die von dem Encoder erfordern, zumindest einen
Makroblock zu übertragen, der unabhängig von jedem anderen
Makroblock codiert ist, erhöht werden, und
bei die Anzahl von verwendeten Puffern kann reduziert werden,
falls nach einer vorgegebenen Zeitdauer keine Fehler auftreten,
die von dem Encoder erfordern, zumindest einen Makroblock zu
übertragen, der unabhängig von jedem anderen Makroblock codiert
ist. Jedem Makroblock kann eine bestimmte zeitliche
Referenznummer zugeordnet werden und eine Tabelle kann
vorgesehen sein, die jede temporäre Referenznummer mit entweder
einem bestimmten der Puffer oder einem Wert abbildet, der
anzeigt, dass ein einer bestimmten temporären Referenznummer
entsprechender Makroblock nicht gespeichert wurde.
Gemäß einem weiteren Aspekt der Erfindung wird ein Verfahren
zum Übertragen von Videodaten geschaffen, bei dem ein Encoder
Makroblöcke in einer Mehrzahl von Referenzpuffern speichert,
bei dem der Encoder Makroblöcke überträgt, die relativ zu jedem
der Referenzpuffer codiert sind, und bei dem als Antwort
hinsichtlich eines Fehlers eines Makroblocks, der einem ersten
der Puffer entspricht, der Encoder einen zweiten der Puffer zur
Fehlerkorrektur verwendet, falls der zweite Puffer nicht mit
einem Fehler behaftet ist. Als Antwort auf einen Fehler
hinsichtlich eines Makroblocks und allen der Puffer, die mit
Fehlern behaftet sind, kann der Encoder zumindest einen
Makroblock übertragen, der unabhängig von jedem anderen
Makroblock codiert ist. Als Antwort auf den Empfang einer
Anforderung, kann der Encoder zumindest einen Makroblock
übertragen, der unabhängig von jedem anderen Makroblock codiert
ist. Der Encoder, der einen zweiten der Puffer zur
Fehlerkorrektur verwendet, kann einen Makroblock unter der
Verwendung eines zweiten der Puffer als Referenz encodieren und
einen ersten der Puffer als fehlerbehaftet markieren. Als
Antwort auf das Markieren des ersten der Puffer als
fehlerbehaftet kann ein Zeitgeber gesetzt werden, um eine
Zeitdauer anzuzeigen, seit der der Fehler aufgetreten ist und
bei Antwort darauf, dass die Zeitdauer, seitdem der Fehler
aufgetreten ist, größer ist als ein vorgegebener Schwellenwert,
kann der dem ersten der Puffer zugeordnete Fehler gelöscht
werden. Der vorgegebene Schwellenwert kann der vollständigen
Übertragungs- und Verarbeitungszeit zwischen dem Encoder und
dem Decoder entsprechen.
Eine Anzahl von verwendeten Puffern kann als Antwort
hinsichtlich eines Fehlers, der den Encoder auffordert,
zumindest einen Makroblock zu übertragen, der unabhängig von
jedem anderen Makroblock codiert ist, erhöht werden, und die
Anzahl von verwendeten Puffern kann reduziert werden, falls
nach einer vorgegebenen Zeitdauer keine Fehler auftreten, die
den Encoder auffordern, zumindest einen Makroblock zu
übertragen, der unabhängig von jedem anderen Makroblock codiert
ist. Jedem Makroblock kann eine bestimmte zeitliche
Referenznummer zugeordnet werden und eine Tabelle kann
vorgesehen sein, die jede temporäre Referenznummer mit entweder
einem bestimmten der Puffer oder einem Wert abbildet, der
anzeigt, dass ein einer bestimmten temporären Referenznummer
entsprechender Makroblock nicht gespeichert wurde.
Gemäß einem weiteren Aspekt der Erfindung wird ein Verfahren
zum Übertragen von Videodaten geschaffen, bei dem ein Decoder
eine Mehrzahl von Makroblöcken empfängt, die relativ zu einer
Mehrzahl von Puffern entsprechend einer Anzahl von Makroblöcken
codiert sind, und bei dem als Antwort auf einen Fehler
hinsichtlich eines bestimmten Makroblocks der Decoder einen
ersten, einem bestimmten Makroblock zugeordneten Puffer als
fehlerbehaftet markiert. Nach dem Fehlermarkieren eines ersten
der Puffer kann der Decoder einen Makroblock empfangen, der
relativ zu einem zweiten der Puffer codiert ist. Nach dem
Fehlermarkieren des ersten Puffers und als Antwort auf alle
Puffer des Decoders, die fehlerbehaftet sind, kann der Decoder
zumindest einen Makroblock anfordern, der unabhängig von jedem
anderen Makroblock codiert ist. Nach dem Anfordern von
zumindest einem Makroblock, der unabhängig von jedem anderen
Makroblock codiert ist, kann der Decoder einen Zeitgeber
zurücksetzen und kann der Decoder fortfahren, einen anderen
Makroblock anzufordern, der unabhängig von jedem anderen
Makroblock codiert ist, bis der Zeitgeber einen vorgegebenen
Schwellenwert überschritten hat.
Gemäß einem weiteren Aspekt der Erfindung wird eine Vorrichtung
zum Übertragen von Videodaten geschaffen, welche eine Mehrzahl
von Referenzpuffern, die eine Mehrzahl von Makroblöcken
speichern, eine mit den Puffern gekoppelten
Referenzprozessoreinheit, die mindestens einen
Bewegungskompensationsvektor und ein dafür vorgesehenes
bewegungskompensiertes Bild eines Makroblocks bereitstellt,
eine mit einem Eingangsvideosignal und mit einem Ausgangssignal
der Referenzprozessoreinheit gekoppelten Subtraktionseinheit,
um eine Differenz zwischen dem Eingangsvideosignal und dem
Ausgangssignal auszugeben, und eine Encodierungssteuerung
aufweist, die die Übertragung von Videodaten steuert, um jeden
Makroblock mit einem der folgenden Makroblöcke zu versehen:
einem Makroblock, der unabhängig von jedem anderen Makroblock codiert ist und
einem Makroblock, der relativ zu einem von der Subtraktionseinheit ausgegebenen Ausgangssignal codiert ist, wobei als Antwort auf einen Fehler in einem Makroblock, der einem ersten der Puffer entspricht, die Steuerung bewirkt, dass die Referenzprozessoreinheit einen zweiten der Puffer zur Fehlerkorrektur verwendet, falls dieser zweite Puffer nicht fehlerbehaftet ist. Als Antwort auf alle fehlerbehafteten Puffer kann die Steuerung die Übertragung von zumindest einem Makroblock bewirken, der unabhängig von jedem anderen Makroblock codiert ist. Als Antwort auf das Empfangen einer Anforderung kann die Steuerung die Übertragung von zumindest einem Makroblock bewirken, der unabhängig von jedem anderen Makroblock codiert ist. Nach einer vorgegebenen Zeitdauer kann eine Anzahl von verwendeten Puffern als Antwort auf Fehler erhöht und als Antwort auf das Nicht-Empfangen von Fehlern erniedrigt werden.
einem Makroblock, der unabhängig von jedem anderen Makroblock codiert ist und
einem Makroblock, der relativ zu einem von der Subtraktionseinheit ausgegebenen Ausgangssignal codiert ist, wobei als Antwort auf einen Fehler in einem Makroblock, der einem ersten der Puffer entspricht, die Steuerung bewirkt, dass die Referenzprozessoreinheit einen zweiten der Puffer zur Fehlerkorrektur verwendet, falls dieser zweite Puffer nicht fehlerbehaftet ist. Als Antwort auf alle fehlerbehafteten Puffer kann die Steuerung die Übertragung von zumindest einem Makroblock bewirken, der unabhängig von jedem anderen Makroblock codiert ist. Als Antwort auf das Empfangen einer Anforderung kann die Steuerung die Übertragung von zumindest einem Makroblock bewirken, der unabhängig von jedem anderen Makroblock codiert ist. Nach einer vorgegebenen Zeitdauer kann eine Anzahl von verwendeten Puffern als Antwort auf Fehler erhöht und als Antwort auf das Nicht-Empfangen von Fehlern erniedrigt werden.
Gemäß einem weiteren Aspekt der Erfindung wird ein
Computerspeichermedium mit einem Computerprogramm geschaffen,
welches Mittel zum Abspeichern von Makroblöcken in einer
Mehrzahl von Referenzpuffern, Mittel zum Übertragen von
Makroblöcken, die relativ zu jedem der Referenzpuffer codiert
sind und Mittel zum Verwenden eines zweiten der Puffer zur
Fehlerkorrektur aufweist, wenn als Antwort auf einen Fehler
hinsichtlich eines bestimmten, einem ersten der Puffer
entsprechenden Makroblocks der zweite Puffer nicht
fehlerbehaftet ist. Das Computerspeichermedium kann ferner
Mittel zum Übertragen von zumindest einem Makroblock aufweisen,
der unabhängig von jedem anderen Makroblock, als Antwort auf
einen Fehler hinsichtlich eines bestimmten Makroblocks und
allen fehlerbehafteten Puffern, codiert ist. Das
Computerspeichermedium kann ferner Mittel zum Bestimmen einer
Anforderung für zumindest einen Makroblock aufweisen, der
unabhängig von jedem anderen Makroblock codiert ist.
Mittel zum Verwenden eines zweiten Puffers zur Fehlerkorrektur
können Mittel zum Codieren eines Makroblocks unter Verwendung
eines zweiten Puffers als Referenz und Mittel zum Markieren des
ersten Puffers als fehlerbehaftet aufweisen. Das
Computerspeichermedium kann Mittel zum Setzen eines Zeitgebers,
um die Zeitdauer anzuzeigen, seitdem der Fehler aufgetreten
ist, und Mittel zum Löschen eines Fehlers aufweisen, der dem
ersten der Puffer als Antwort auf die Tatsache zugeordnet ist,
dass die Zeitdauer, seitdem der Fehler aufgetreten ist, größer
ist als ein vorgegebener Schwellenwert. Der vorgegebene
Schwellenwert kann einer vollständigen Übertragungs- und
Verarbeitungszeit entsprechen.
Gemäß einem weiteren Aspekt der Erfindung wird ein
Computerspeichermedium mit einem Programm zum Empfangen von
Videodaten geschaffen, welches Mittel zum Empfangen einer
Mehrzahl von Makroblöcken, die relativ zu einer Mehrzahl einer
Mehrzahl von Makroblöcken entsprechende Puffern codiert sind,
und Mittel zum Anfordern eines bestimmten wiederholt zu
sendenden Makroblocks und zum Fehlermarkieren eines ersten der
Puffer aufweist, der als Antwort auf einen Fehler hinsichtlich
eines bestimmten Makroblocks dem bestimmten Makroblock
zugeordnet ist. Das Computerspeichermedium kann ferner Mittel
zum Empfangen des relativ zu einem zweiten der Puffer codierten
Makroblöcke nachfolgend dem Anfordern des bestimmten
Makroblocks aufweisen.
Gemäß einem weiteren Aspekt der Erfindung wird ein Verfahren
zum Übertragen von Videodaten geschaffen, bei dem ein Encoder
Makroblöcke in einer Mehrzahl von Referenzpuffern speichert,
wobei jedem Makroblock eine temporäre Referenzzahl zugeordnet
ist, bei dem eine Tabelle vorgesehen ist, die jede der
temporären Referenznummern auf einen bestimmten der Puffer
abbildet, wobei für eine Untermenge der temporären
Referenznummern einen Wert anzeigt, dass ihr keiner der Puffer
entspricht, bei dem der Encoder Makroblöcke überträgt, die
relativ zu jedem der Referenzpuffer codiert sind, und
bei dem als Antwort auf das Empfangen einer Fehlernachricht,
die einen Fehler hinsichtlich eines bestimmten der relativ zu
einem ersten der Puffer codierten Makroblöcke anzeigt, der
Encoder die Tabelle und einen zweiten der Puffer zur
Fehlerkorrektur verwendet, falls der zweite Puffer nicht
fehlerbehaftet ist. Für jeden Puffer kann eine Datenstruktur,
die Werte für eine entsprechende der temporären Referenznummern
enthält, eine Anzeige, dass ein Fehler aufgetreten ist,
eine Anzeige, dass ein Fehler eine Korrektur benötigt,
eine Anzeige, dass der Fehler für die Korrektur eines anderen
Thread verwendet worden ist und ein Zeitgeber vorgesehen sein,
der die Zeitdauer anzeigt, seitdem die Korrektur des Puffers
vorgenommen worden ist. Als Antwort auf das Empfangen einer
Fehlernachricht, die beim Vergleich mit einem bestimmten,
relativ zu einem ersten der Puffer codierten Makroblock, einen
Fehler anzeigt, können Werte für den ersten Puffer gesetzt
werden, die anzeigen, dass ein Fehler aufgetreten ist, und dass
ein Fehler eine Korrektur auf TRUE erfordert, und es kann ein
Zeitgeber gesetzt werden, der eine Zeitdauer anzeigt, seitdem
die Korrektur des Puffers auf 0 vorgenommen worden ist. Nach
dem Verwenden der Tabelle und einem zweiten der Puffer für eine
Fehlerkorrektur kann der Wert gesetzt werden, der anzeigt, dass
ein Fehler eine Korrektur auf FALSE erfordert. Nach dem Setzen
des Wertes, der anzeigt, dass ein Fehler die Korrektur auf
FALSE erfordert, kann der Zeitgeber entsprechend des Taktes
erhöht werden. Als Antwort darauf, dass der Zeitgeber größer
ist als ein vorgegebener Wert ist, kann der Wert gesetzt
werden, der anzeigt, dass ein Fehler auf FALSE aufgetreten ist.
Das hier beschriebene System schafft einen Mechanismus für die
Verwendung von mehreren Referenzpuffern in der Art, dass die
Tendenz reduziert wird, in Einzelfällen gesamte Einzelbilder zu
übertragen, bei denen der Übertragungskanal eine relativ hohe
Fehlerbitrate aufweist. Zusätzlich reduziert das System auch
die Zeitdauer, während der ein empfangenes Videosignal
eingefroren sein kann, während auf die Fehlerkorrektur in Form
eines gesamten Einzelbildes gewartet wird.
Im Folgenden werden Ausführungsbeispiele der Erfindung anhand
der Zeichnung näher erläutert.
Es zeigen:
Fig. 1 ein Videosystem gemäß einem Ausführungsbeispiels der
Erfindung.
Fig. 2 ein Videobearbeitungs- und Videoübertragungssystem
gemäß einem Ausführungsbeispiel der Erfindung.
Fig. 3 ein Videoempfangs- und Videobearbeitungssystem gemäß
einem Ausführungsbeispiel der Erfindung.
Fig. 4 ein H.263+-Decoder gemäß einem Ausführungsbeispiel der
Erfindung.
Fig. 5 ein mehrere Puffer-Encodierungs- und mehrere Puffer-
Decodierungssystem gemäß einem Ausführungsbeispiel der
Erfindung.
Fig. 6A eine Tabellenstruktur, die von dem System verwendet
wird, um gemäß einem Ausführungsbeispiel der Erfindung die
Puffer zu indizieren.
Fig. 6B eine Datenstruktur, die von dem Encoder gemäß einem
Ausführungsbeispiel der Erfindung verwendet wird.
Fig. 6C eine Datenstruktur, die von dem Decoder gemäß einem
Ausführungsbeispiel der Erfindung verwendet wird.
Fig. 7 ein Ablaufdiagramm, welches den gesamten Betrieb des
Encoders gemäß einem Ausführungsbeispiel der Erfindung
verdeutlicht.
Fig. 8 ein Ablaufdiagramm, welches detaillierter den Schritt
der Nachrichtenverarbeitung des Ablaufdiagramms von Fig. 7
zeigt.
Fig. 9A und Fig. 9B Ablaufdiagramme, die detaillierter den
Ablauf des Schritts des Sendens des Einzelbildes aus dem
Ablaufdiagramm von Fig. 7 zeigen.
Fig. 10 ein Ablaufdiagramm, welches detaillierter den Schritt
des Findens des geeigneten Puffers von Fig. 9B zeigt.
Fig. 11 ein Ablaufdiagramm, welches den Betrieb des H.263+-
Decoders gemäß einem Ausführungsbeispiel der Erfindung
erläutert.
Fig. 12 ein Ablaufdiagramm, welches das erfindungsgemäße
Einstellen der Anzahl von Referenz-Puffern erläutert.
Wie aus Fig. 1 ersichtlich, weist ein Videosystem 20 eine
Kamera 22 auf, die ein ein Bild enthaltendes Videosignal für
das Videoverarbeitungs- und Übertragungssystem 24 bereitstellt.
Das Videoverarbeitungs- und Übertragungssystem 24 stellt ein
Video-Bitstrom-Signal auf einem Video-Datenkanal 25 bereit. Das
Video-Bitstrom-Signal enthält von der Kamera 22 bereitgestellte
Einzelbilder und Teile davon. Das Video-Bitstrom-Signal wird
von einem Videoempfangs- und Verarbeitungssystem 26 empfangen,
welches ebenfalls mit dem Video-Datenkanal 25 gekoppelt ist.
Das Videoempfangs- und Verarbeitungssystem 26 verarbeitet das
Video-Bitstrom-Signal, um ein Videosignal für eine Anzeige 28
zu erzeugen. Die Anzeige 28 kann realisiert werden, indem ein
herkömmlicher Videomonitor oder dergleichen verwendet wird. Das
von dem Videoempfangs- und Verarbeitungssystem 26 für das
Display 28 vorgesehene Signal kann abhängig von dem Typ des
Videoeingangssignals, welches von der Anzeige 28 erkannt wird,
von einer Vielfalt von Videosignal-Typen ein beliebiges Signal,
wie z. B. ein RGB- oder YUV-Signal, sein.
Fig. 1 zeigt auch einen Rückkanal 29, der verwendet wird, um
ein Rückkanal-Signal von dem Videoempfangs- und
Verarbeitungssystem 26 zu dem Videoverarbeitungs- und
Übertragungssystem 24 zu übertragen. Wie in dem H.263+-Standard
dargelegt, kann der Rückkanal 29 der gleiche logische Kanal wie
der Video-Bitstrom (in H.263+, Anhang N als "Video-Mux-Mode"
bezeichnet) sein. Alternativ ist in einer bevorzugten
Ausführungsform der Rückkanal 29 ein von dem logischen Kanal,
der für den Video-Datenkanal 25 verwendet wird, getrennter
logischer Kanal. Es sei angemerkt, dass der Video-Datenkanal 25
und der Rückkanal 29 realisiert werden können, indem
irgendeines von einer Vielfalt von Übertragungsmedien, wie z. B.
eine herkömmliche ISDN-Leitung, das Internet, eine
drahtgebundene Standleitungsverbindung, oder irgendein anderes
geeignetes Datenübertragungssystem verwendet wird.
Wie aus Fig. 2 ersichtlich, weist das Videoverarbeitungs- und
Übertragungssystem 24 einem A/D (Analog/Digital)-Konverter 32,
einen Format-Konverter 34 und einem H.263+-Encoder 40 auf. Der
A/D-Konverter 32 wandelt ein von der Kamera 22 zugeführtes
analoges Video-Eingangssignal in ein digitales Signal um. In
anderen Ausführungsformen kann die Kamera 22 ein digitales
Signal ausgeben (z. B. "Capture VGA"), wobei in diesem Fall der
A/D-Konverter 32 nicht notwendig sein muss.
Das Ausgangssignal des A/D-Konverters 32 wird einem Format-
Konverter 34 zugeführt, welcher das Videoformat der Kamera 22
in ein Format umwandelt, welches für die Verarbeitung durch den
H.263+-Encoder 40 geeignet ist. Geeignete Formate sind z. B.
Sub-QCIF, QCIF, CIF, 4CIF und 16CIF. Wenn die Kamera bereits
ein Videosignal in den oben aufgelisteten Formaten ausgibt,
muss alternativ der Format-Konverter 34 nicht notwendig sein.
Außerdem kann der H.263+-Encoder 40 wahlweise die Fähigkeit zur
Formatumwandlung aufweisen oder kann derart angepasst sein,
dass er ein anderes als die oben aufgelisteten Formate, wie
z. B. ursprüngliches (natives) NTSC, VGA, etc. annimmt. Es sei
ebenso angemerkt, dass der Format-Konverter 34 auf herkömmliche
Weise ein Videoformat in ein anderes Videoformat umwandeln kann
und dass dies an dieser Stelle nicht detaillierter beschrieben
wird.
Der Ausgang des Format-Konverters 34 ist mit dem Eingang des
H.263+-Encoders 40 gekoppelt, welcher das Video-Bitstrom-Signal
auf dem Video-Datenkanal 25 bereitstellt und welcher das
Rückkanal-Signal auf dem Rückkanal 29 empfängt. Der Betrieb des
H.263+-Encoders 40 wird im Folgenden detaillierter beschrieben.
In einer bevorzugten Ausführungsform sind der Format-Konverter
34 und der H.263+-Encoder 40 realisiert, indem ein
programmierbarer DSP-Chip verwendet wird, wie z. B. das von
Philips hergestellte Trimedia-Modell TM-1100, welches
entsprechend der hier gegebenen Beschreibung auf eine
herkömmliche Weise programmiert wurde, indem eine Kombination
von C und einem nativen assembler-artigen Code verwendet wurde.
Wahlweise können, wie in der nachfolgenden Beschreibung
verdeutlicht, Teile oder alle Elemente von dem A/D-Konverter
32, dem Format-Konverter 34 und/oder dem H.263+-Encoder 40
realisiert werden, indem spezielle, diskrete oder integrierte
Hardware oder Kombinationen von Hardware und Software verwendet
werden, wobei die Realisierung derselben für jemanden
offensichtlich ist, der in der im Folgenden beschriebenen
Technik geübt ist. Es sei angemerkt, dass es auch möglich ist,
die Software zu realisieren, indem ein allgemein verwendeter
oder spezialisierter Computer programmiert wird.
Wie aus Fig. 3 ersichtlich, weist das Videoempfangs- und
Verarbeitungssystem 26 einen H.263+-Decoder 60, einen Format-
Konverter 72 und einen D/A (Digital/Analog)-Konverter 74 auf.
Der H.263+-Decoder 60 des Videoempfangs- und
Verarbeitungssystems 26 empfängt das Video-Bitstrom-Signal von
dem Video-Datenkanal 25 und stellt das Rückkanal-Signal auf dem
Rückkanal 29 bereit. Der Betrieb des H.263+-Decoders 60 wird im
Folgenden detaillierter beschrieben.
Das Ausgangssignal des H.263+-Decoders 60 wird einem Format-
Konverter 72 zugeführt, welcher das Ausgangssignal des H.263+-
Decoders 60 in ein Videoformat umwandelt, welches von der in
Fig. 1 dargestellten Anzeige 28 verwendet werden kann. In
anderen Ausführungsformen kann das natürliche Ausgabeformat des
H.263+-Decoders 60 von der Anzeige 28 verwendet werden, wobei
in diesem Fall der Format-Konverter 72 nicht notwendig ist. Der
Format-Konverter 72 kann eine herkömmliche digitale
Videoformat-Umwandlung auf eine Art und Weise durchführen, die
ähnlich zu der des in Fig. 2 dargestellten Format-Konverters
34 ist. Daher wird der Format-Konverter 72 nicht detaillierter
beschrieben.
Das Ausgangssignal des Format-Konverter 72 wird dem D/A-
Konverter 74 zugeführt, welcher das digitale Ausgangssignal des
Format-Konverters 72 (oder, falls der Format-Konverter 72 nicht
verwendet wird, das Ausgangssignal des H.263+-Decoders 60) in
ein analoges Videosignal umwandelt. Das Ausgangssignal des D/A-
Konverters 74 kann ein herkömmliches analoges Videosignal sein,
welches von der Anzeige 28 angenommen wird. In
Ausführungsformen, bei denen die Anzeige 28 ein digitales
Videosignal (z. B. VGA) direkt von entweder dem H.263+-Decoder
60 oder von dem Format-Konverter 72 akzeptiert, muss der D/A-
Konverter 74 nicht notwendig sein.
In einer bevorzugten Ausführungsform sind der Format-Konverter
34 und der H.263+-Decoder 60 realisiert, indem ein
programmierbarer DSP-Chip verwendet wird, wie z. B. das von
Philips hergestellte Trimedia-Modell TM-1100, welches
entsprechend der hier gegebenen Beschreibung auf eine
herkömmliche Weise programmiert wurde, indem eine Kombination
von C und einem nativen assembler-artigen Code verwendet wurde.
Wahlweise können, wie in der nachfolgenden Beschreibung
verdeutlicht, Teile oder alle Elemente von dem A/D-Konverter
32, dem Format-Konverter 72 und/oder dem H.263+-Decoder 60
realisiert werden, indem spezielle, diskrete oder integrierte
Hardware oder Kombinationen von Hardware und Software verwendet
werden, wobei die Realisierung derselben für jemanden
offensichtlich wäre, der in der im Folgenden beschriebenen
Technik geübt ist. Es sei angemerkt, dass es auch möglich ist,
die Software auf einem allgemein verwendeten oder
spezialisierten Computer zu realisieren.
Wie aus Fig. 4 ersichtlich, weist der H.263+-Controller 40 des
Videoverarbeitungs- und Übertragungssystems 24 eine
Encodersteuerung 42 auf, die den Betrieb des H.263+-Encoders 40
steuert. Die Encodersteuerung 42 empfängt das Rückkanal-Signal
von dem Rückkanal 29 und stellt, wie im Folgenden detaillierter
beschrieben, verschiedene Ausgangssignale bereit, die zu einem
Teil des Video-Bitstrom-Signals werden und ebenso dazu
verwendet werden, um andere Bereiche des H.263+-Encoders 40 zu
steuern. In einer bevorzugten Ausführungsform wird die
Encodersteuerung 42 realisiert, indem Software verwendet wird,
die auf einem Verarbeitungssystem laufen kann, welche eine
ausreichende Verarbeitungsleistung aufweist, um die hier
detaillierter beschriebenen Signale bereitzustellen. Es wird
jedoch für jemanden, der in der Technik geübt ist,
offensichtlich sein, dass andere Ausführungsformen die
Realisierung des Encodersteuerung 42 unter der Verwendung von
Hardware und/oder verschiedenen Kombinationen von Software und
Hardware vorsehen.
Der H.263+-Encoder 40 weist ebenso einen Referenzprozessor 44
auf, der Video-Referenzdaten in einer Weise verarbeitet, die im
Folgenden detaillierter beschrieben ist. Der Referenzprozessor
44 empfängt die aktuellen Videobilddaten von dem
Videoeingangssignal für den H.263+-Encoder 40 und gibt ein
bewegungskompensiertes Videobild aus, das den Referenzdaten
entspricht, die einen oder mehrere Bewegungsvektoren verwendet
haben, wobei der/die Bewegungsvektor(en) einer Verschiebung
eines Abschnitts der Referenzdaten entspricht/entsprechen, die
den aktuellen Videobilddaten nahe kommen. Der Referenzprozessor
44 berechnet den/die Bewegungsvektor(en) und gibt diesen/diese
aus.
Die Bewegungskompensation von Videobildern und die
entsprechende Berechnung von Bewegungsvektoren ist in dem Stand
der Technik gut bekannt und wird von dem H.263+-Standard
unterstützt. Das hier beschriebene System arbeitet mit jedem
Bewegungskompensationsschema, welches von H.263+ unterstützt
wird. Wie für jemanden offensichtlich sein wird, der in der
Technik geübt ist, kann das System auf einfache Weise angepasst
werden, um mit anderen Schemata zu arbeiten. In einer
bevorzugten Ausführungsform verwendet das hier beschriebene
System eine Bewegungskompensationstechnik analog zu der, die im
U.S. Patent Nr. 5,155,594 von Bernstein et al. offenbart ist,
welches Patent hiermit durch Bezugnahme mit aufgenommen ist.
Eine Subtraktionseinheit 46 empfängt und bestimmt die Differenz
von zwei Eingangssignalen: das bewegungskompensierte Videobild,
welches von dem Referenzprozessor 44 bereitgestellt ist, und
das aktuelle Videobild, so wie es von dem Videoeingangssignal
des H.263+-Encoders 40 bereitgestellt wird. Das Ausgangssignal
der Subtraktionseinheit 46, die Differenz zwischen den beiden
Signalen, ist der Prädiktionsfehler zwischen dem
bewegungskompensierten Videobild und dem aktuellen Videobild.
Das Ausgangssignal der Subtraktionseinheit 46, der
Prädiktionsfehler, wird einem Schalter 47 zugeführt, der von
der Encodersteuerung 42 gesteuert wird, um zwischen dem
Prädiktionsfehler und dem aktuellen Videobild umzuschalten.
Beide Standards, H.263 und H.263+, unterstützen die Übertragung
eines Videobild-Makroblocks (d. h. ein Einzelbild oder ein Teil
davon), indem sie entweder den/die Bewegungsvektor(en) und den
Prädiktionsfehler (genannt "INTER Encodierung") übertragen oder
indem sie Videodaten übertragen, die nicht in Bezug zu
vorhergehenden Videodaten stehen (genannt "INTRA Encodierung").
Daher wird, wie unten detaillierter beschrieben, wenn die
Encodersteuerung 42 annimmt, dass es geeignet ist, den
Prädiktionsfehler zu übertragen, (d. h. Übertragung eines INTER-
codierten Makroblocks), der Schalter 47 derart gestellt, dass
das Ausgangssignal der Subtraktionseinheit 46 bereitgestellt
wird. Andererseits, wenn die Encodersteuerung 42 annimmt, dass
es geeignet ist, INTRA-codierte Daten zu übertragen, so der
Schalter 47 durch die Encodersteuerung 42 derart gestellt, dass
das Eingangsvideosignal bereitgestellt wird.
Das Ausgangssignal des Schalters 47 ist mit einer
Transformationseinheit 48 gekoppelt, welche eine DCT-
Transformation der Daten auf eine Weise vornimmt, die zu dem
H.263+-Standard konsistent ist. Das Ausgangssignal der
Transformationseinheit 48 wird einem Quantisierer 49 zugeführt,
welcher das Ausgangssignal der Transformationseinheit 48 ebenso
auf eine Weise quantisiert, die mit dem H.263+-Standard
verträglich ist. Es sei angemerkt, dass die Encodersteuerung 42
den Quantisierungsfaktor bestimmt und diesen Wert an den
Quantisierer 49 übergibt, welcher ebenso mit dem H.263+-
Standard verträglich ist.
Das Ausgangssignal des Quantisierer 49 wird einem inversen
Quantisierer 50 zugeführt, welcher die inverse Operation des
Quantisierers 49 durchführt. Das Ausgangssignal des inversen
Quantisierers 50 wird einer inversen Transformationseinheit 51
zugeführt, welche die inverse Operation der
Transformationseinheit 48 durchführt. Das Ausgangssignal der
inversen Transformationseinheit 51 wird einer Additionseinheit
52 zugeführt, welche ebenso als Eingangssignal die
bewegungskompensierten Videodaten von dem Referenzprozessor 44
empfangen. Es sei angemerkt, dass die Elemente 52, 51, 50
jeweils das Inverse der Funktionen der Elemente 46, 48, 49
ausführen. Daher entspricht das Ausgangssignal der
Additionseinheit 52 den aktuellen Videobilddaten, die von dem
in dem H.263+-Encoder eingegebenen Videobildsignal
bereitgestellt werden. Es sei jedoch angemerkt, dass das
Ausgangssignal der Additionseinheit 52 aufgrund von
Quantisierungseffekten nicht identisch zu dem Eingangsvideobild
sein muss.
Ein Schalter 53 steuert, ob die Additionseinheit 52 die
bewegungskompensierten Videobilddaten empfängt oder nicht. Das
heißt, in dem Fall einer INTER-Encodierung, führt der Schalter
53 die bewegungskompensierten Videodaten der Additionseinheit
52 zu, während der Schalter 47 den Prädiktionsfehler an die
Transformationseinheit 48 zuführt. Andererseits wird in dem
Fall von INTRA-Encodierung der Schalter 53 derart gestellt,
dass die bewegungskompensierten Videobilddaten nicht der
Additionseinheit 53 zugeführt werden, wodurch bewirkt wird,
dass das Ausgangssignal der Additionseinheit 52 das gleiche ist
wie das Eingangssignal zur der Additionseinheit 52 (d. h. das
Ausgangssignal der inversen Transformationseinheit 51), während
der Schalter 47 die aktuellen Videobilddaten der
Transformationseinheit 48 zuführt. Demzufolge entspricht das
Ausgangssignal der Additionseinheit 52 dem aktuellen
Videoeinzelbild, unabhängig davon, ob die Daten INTER-codiert
oder INTRA-codiert sind. Daher entspricht das Ausgangssignal
der Additionseinheit 52 den Videobilddaten, die durch den
H.263+-Decoder 60 in dem Videoempfangs- und Verarbeitungssystem
26 erzeugt werden.
Das Ausgangssignal der Additionseinheit 52 wird einem ersten
von N zusätzlichen Referenzspeicherpuffern 54, 55, 56
zugeführt. Die zusätzlichen Referenzspeicherpuffer 54, 55, 56
enthalten Videobilddaten, die den vorhergehenden Einzelbildern
entsprechen. In einer bevorzugten Ausführungsform werden, jedes
mal wenn neue Videobilddaten in dem zusätzlichen
Referenzspeicherpuffer 54 gespeichert werden, die in den
zusätzlichen Referenzspeicherpuffern 54, 55, 56 bereits
gespeicherten Videobilddaten derart verschoben, dass das in dem
k-ten der Puffer 54, 55, 56 gespeicherte Bild nachfolgend in
dem (k + 1)-ten der Puffer 54, 55, 56 gespeichert wird. Wenn dies
geschieht, werden die in dem N-ten Puffer 54, 55, 56
gespeicherten Videobilddaten gelöscht. Dies kann dadurch
erreicht werden, dass die neu ankommenden Daten in einem der
Puffer gespeichert werden, der die ältesten Daten enthält, und
dass dann auf herkömmliche Weise auf die neuesten Daten
verwiesen wird.
Die in jedem der zusätzlichen Referenzspeicherpuffer 54, 55, 56
gespeicherten Daten werden einem Schalter 57 zugeführt, der die
Daten von einem der Puffer 54, 55, 56 auswählt, die an den
Referenzprozessor 44 übergeben werden. Die Kriterien für die
Auswahl werden im Folgenden detaillierter beschrieben.
Ein Videomultiplexer 59 empfängt die verschiedenen
Ausgangssignale, die ein Flag von der Encodersteuerung 42,
welches Flag eine INTRA- oder eine INTER-Codierung anzeigt und
ein Flag von der Encodersteuerung 42 aufweist, welches Flag
anzeigt, ob ein neues Einzelbild übertragen worden ist. Es sei
angemerkt, dass der H.263+-Standard einen Mechanismus
bereitstellt, bei dem im Fall eines Videobildes oder eines
gleichbleibenden Teiles davon, die Encodersteuerung 42
festlegen kann, dass keine neuen Daten für ein statisches Bild
übertragen werden. Im Übereinstimmung mit dem H.263+-Standard
empfängt der Multiplexer 59 ebenso das Quantisierungssignal von
der Encodersteuerung 42, welches den von dem Quantisierer 49
verwendeten Quantisierungswert anzeigt. Ebenso empfängt im
Einklang mit dem H.263+-Standard der Multiplexer 59 das
quantisierte Signal von dem Quantisierer 49 und der Multiplexer
59 empfängt ebenso den/die Bewegungskompensationsvektor(en) von
dem Referenzprozessor 44. Die verschiedenen Signale werden
gemultiplext, um das Video-Bitstrom-Signal zu bilden, welches
ein Format aufweist, wie es in dem H.263+-Standard dargelegt
wird.
Es wird von denjenigen, die in der Technik geübt sind, begrüßt
werden, dass jedes Teil oder die Gesamtheit des H.263+-Encoders
40 durch jede Kombination von Hardware und/oder Software
realisiert werden kann. In einer bevorzugten Ausführungsform
ist der H.263+-Encoder 40 durch die Verwendung von Software
realisiert. Eine detailliertere Erläuterung des Betriebes des
Software wird im Folgenden gegeben.
Der H.263+-Decoder 60 ist mit dem H.263+-Standard und mit der
oben gegebenen Beschreibung des H.263+-Encoders 40 und den
anderen hier gegebenen Informationen konsistent. Der H.263+-
Decoder 60 verwendet ebenso mehrere Referenzpuffer, die in
einer Weise ausgewählt werden, die im Folgenden detaillierter
erläutert ist. In einer bevorzugten Ausführungsform ist der
H.2653+-Decoder 60 mittels Software realisiert.
Wie aus Fig. 5 ersichtlich, illustriert ein vereinfachtes
schematisches Diagramm 80 das hierin beschriebene System. Ein
H.263+-Encoder 82 verwendet eine Mehrzahl von
Referenzencodierungspuffer 84 R1, R2, . . . RN. Ein H.263+-Decoder
86 empfängt das Signal von dem Encoder 82 und stellt unter der
Verwendung der Referenzdecodierungspuffer 88 R1, R2, . . . RM das
übertragene Videobild wieder her, wobei M nicht
notwendigerweise gleich N ist. Jeder INTER-Makroblock, der
unter Verwendung der Encodierungspuffer 84 encodiert ist, wird
anschließend unter Verwendung von einem der Decodierungspuffer
88 decodiert. Wie im Folgenden detaillierter beschrieben ist,
bestimmt der Decoder 86, welcher der Puffer 88 verwendet wird,
um entsprechend den von dem Encoder 82 bereitgestellten
Informationen zu decodieren.
Die Folge von Makroblöcken, die mit einem bestimmten Puffer
verbunden sind, wird als Thread bezeichnet. In dem hier
gegebenen Beispiel liegt eine eins-zu-eins Entsprechung
zwischen den Threads und den Puffern vor. Es sind jedoch auch
andere Konfigurationen mit einem Verhältnis von M : N möglich,
wobei M nicht notwendigerweise gleich N ist.
Der Encoder 82 und der Decoder 86 können die Referenzpuffer 84,
88 zyklisch durchlaufen, indem auf jeder Seite bestimmte
Referenzpuffer verwendet werden, um jeden Makroblock zu
encodieren und zu decodieren. Daher werden in dem Encoder 82
für jeden der Puffer 84 eine Mehrzahl von Threads beibehalten
und eine entsprechende Mehrzahl von Threads wird in dem Decoder
86 für jeden der Puffer 88 beibehalten. Die Anzahl der Threads
wird durch den Encoder 82 gesteuert. Auf der anderen Seite kann
der Decoder 86 so viele Puffer verwenden, wie der Speicher
erlaubt, da die Übertragungen von dem Encoder 82 einfach
anzeigen, welcher Teil der vorhergehend übertragenen Daten
verwendet wird, um das Bild zu rekonstruieren.
In einem System, in dem es keine Übertragungsfehler gibt, ist
es ausreichend, eine geringe Anzahl von Threads für den Encoder
82 zu verwenden. Abhängig von dem Übertragungsmedium können
jedoch Übertragungsfehler erwartet werden. Wie im Folgenden
detailliert erläutert wird, schafft das hierin beschriebene
System einen Mechanismus zur effizienten Korrektur von
Übertragungsfehlern und unter Verwendung von mehreren Puffern
zum Wiederherstellen der Threads.
Wie aus Fig. 6a ersichtlich, zeigt die Tabelle 90 eine
Datenstruktur, um eine bestimmte temporäre Referenz (TR
temporal reference) auf einen bestimmten Puffer abzubilden. TR
ist ein Mechanismus, der in Videoübertragungssystemen und
Standards wie z. B. dem H.263+-Standard verwendet wird, um
zeitlich zwischen verschiedenen Teilen des Videosignals zu
unterscheiden. So kann z. B. jedes Einzelbild eines Videosignals
einer bestimmten TR zugewiesen werden, so dass ein erstes
Einzelbild bei TR = V1 von einem zweiten Einzelbild bei TR = V2
unterscheidbar ist und in einigen Beispielen die zeitliche
Abstimmung zwischen dem ersten Einzelbild und dem zweiten
Einzelbild durch Vergleichen von V1 mit V2 bestimmt werden
kann.
In einigen Ausführungsformen des H.263+-Standards kann ein TR 8
Bits aufweisen, während in anderen Ausführungsformen ein TR 10
Bits aufweisen kann. Daher kann bei einer 8 Bit-Ausführungsform
die Tabelle 90 256 Einträge aufweisen während bei der 10 Bit-
Ausführungsform die Tabelle 90 1024 Einträge aufweisen kann.
Die Tabelle 90 schafft einen bequemen Mechanismus, um eine
bestimmte TR mit einem bestimmten physikalischen Puffer zu
korrelieren. Um eine bestimmte TR = TR1 mit einem bestimmten
Puffer zu korrelieren, wird unter der Verwendung von TR1 als
einen Index auf die Tabelle 90 zugegriffen. Ein Eintrag an der
Speicherstelle, die einem Index von TR1 entspricht, bedeutet,
dass der physikalische Puffer die zu TR1 entsprechenden
Videodaten aufweist. In Beispielen, bei denen es keinen
physikalischen Puffer für eine bestimmte TR gibt, wird der
Tabelleneintrag für TR einen Hinweis darauf geben, indem er
z. B. gleich einer negativen Zahl ist.
Die Tabelle 90 wird folgendermaßen aktualisiert: jedes mal wenn
ein neuer Makroblock codiert wird, wird er, wie oben
beschrieben, in einem der Puffer 54, 55, 56 gespeichert, um die
darin befindlichen ältesten Daten zu ersetzen. Eine erste TR,
die den alten ersetzten Daten der Puffer 54, 55, 56 zugeordnet
ist, wird verwendet, um die Tabelle 90 zu indizieren, um darin
einen Hinweis zu schaffen, dass der ersten TR keine Pufferdaten
zugeordnet sind. Der Hinweis kann z. B. eine negative Zahl sein,
die keinem der Puffer 54, 55, 56 entspricht. Eine zweite TR,
die den neuen Daten zugeordnet ist, die zu einem bestimmten der
Puffer 54, 55, 56 zugefügt wurden, wird ebenso verwendet, um
auf die Tabelle 90 zuzugreifen, um die zweite TR auf einen
bestimmten der Puffer 54, 55, 56 abzubilden, wo die Daten
gespeichert sind.
Wie aus Fig. 6B ersichtlich, ist eine Datenstruktur 92
vorgesehen, um eine Mehrzahl von Elementen 93, 94, 95 zu
speichern, die den Referenzspeicherpuffern 54, 55, 56 von Fig. 4
entspricht. Jedes der Elemente 93, 94, 95 entspricht einem der
Puffer 54, 55, 56. Das Element 93 ist detailliert dargestellt.
Es weist einen Eintrag für eine dem Puffer entsprechende TR
auf, einen boolschen Eintrag (FarEndError), der anzeigt, ob ein
Fehler am Ende in dem Empfangs- und Verarbeitungssystem 26
aufgetreten ist, einen boolschen Eintrag (FarEndNeedsRecovery),
der anzeigt, ob das Ende eine Korrektur benötigt, einen Eintrag
(OtherThread), der einen anderen Thread anzeigt, den der Puffer
entsprechend dem Element 93 für die Korrektur verwendet hat und
einen Eintrag (EncoderCounter), der verwendet wird, um die
Zeitdauer zu berechnen, seitdem eine Korrekturtätigkeit bei
dem, dem Element 93 entsprechenden Puffer durchgeführt worden
ist. Jedes der anderen Elemente 94, 95 weist ähnliche Daten
auf. Die Verwendung dieser Daten wird im Folgenden
detaillierter beschrieben.
Wie aus Fig. 6C ersichtlich, zeigt eine Datenstruktur 96 die
Elemente 97, 98, 99 an, die von den Empfangspuffern des H.263+-
Decoders 60 verwendet werden. Jedes der Elemente 97, 98, 99
entspricht einem der Empfangspuffer. Das Element 97 ist
detailliert dargestellt. Es weist ein TR-Feld auf, welches die
TR anzeigt, die dem Puffer 97 entspricht, und ein Fehlerfeld
(BuffError), welches einen Fehler anzeigt, der in Verbindung
mit dem Empfangen des dem Element 97 entsprechenden Puffers
aufgetreten ist. Die anderen Elemente 98, 99 enthalten ähnliche
Daten, deren Verwendung im Folgenden detaillierter beschrieben
wird.
Wie aus Fig. 7 ersichtlich, illustriert ein Ablaufdiagramm 100
den gesamten Betrieb des H.263+-Encoders 40. In einem ersten
Schritt 102 wird das System initialisiert. Die Initialisierung
des Systems ist im Folgenden detaillierter beschrieben. Auf den
ersten Schritt 102 folgt ein Schritt 104, bei dem die
Nachrichten verarbeitet werden, die von dem Videoempfangs- und
Verarbeitungssystem 26 über den Rückkanal 29 empfangen wurden.
Wie oben beschrieben, kann das Videoempfangs- und
Verarbeitungssystem 26 Nachrichten an das Videoverarbeitungs-
und Übertragungssystem 24 über den Rückkanal 29 zuführen.
Nach dem Schritt 104 folgt ein Schritt 106, in welchem bestimmt
wird, ob eine von dem Videoempfangs- und Verarbeitungssystem 26
zugeführte Nachricht einen Fehler in einem der von dem
Videoverarbeitungs- und Übertragungssystem 24 übertragenen
Makroblöcken aufweist. Wenn dem so ist, dann geht der Ablauf
von dem Testschritt 106 in den Schritt 108 über, bei dem der
Fehler auf eine Weise verarbeitet wird, die im Folgenden
detaillierter beschrieben ist. Falls alternativ bei dem
Testschritt 106 festgestellt wird, dass kein Fehler vorliegt
oder nachfolgend dem Schritt 108, wird der Ablauf in einem
Schritt 110 fortgesetzt, bei dem der zu sendende Makroblock
encodiert und dann übertragen wird. Der Schritt 110 ist im
Folgenden detaillierter beschrieben.
Wie aus Fig. 8 ersichtlich, illustriert ein Ablaufdiagramm 120
die in dem Schritt 108 durchgeführte Tätigkeit, bei dem eine
Fehlernachricht verarbeitet wird. In dem hier beschriebenen
System weisen drei mögliche Fehlernachrichten eine INTRA-
Nachricht auf, die anzeigt, dass das Empfangs- und
Verarbeitungssystem 26 einen INTRA-codierten Makroblock
angefordert hat, eine Anforderung von dem Empfangs- und
Verarbeitungssystem 26, dass ein Makroblock, der relativ zu
einem anderen Makroblock entsprechend einem bestimmten TR
codiert, gesendet wurde und eine Anzeige von dem Empfangs- und
Verarbeitungssystem 26, dass ein einer bestimmten TR
entsprechender Makroblock mit einem Fehler empfangen worden
ist. Obwohl es andere Nachrichten gibt, die von dem Empfangs-
und Verarbeitungssystem 26 in Verbindung mit der herkömmlichen
H.263+-Verarbeitung vorgesehen sein können, werden hier nur die
drei oben aufgelisteten Arten von Nachrichten diskutiert.
Die Verarbeitung beginnt mit einem Testschritt 122. Darin wird
festgestellt, ob eine INTRA-Nachricht von dem Empfangs- und
Verarbeitungssystem 26 über den Rückkanal 29 gesendet wurde.
Wenn dem so ist, dann wird der Ablauf in einem Schritt 124
fortgesetzt, bei dem ein INTRA-Flag, welches im Folgenden beim
unten beschriebenen Verarbeiten verwendet wird, auf TRUE (wahr)
gesetzt wird. Auf den Schritt 124 folgt ein Schritt 126, bei
dem die FarEndError- und die FarEndNeedsRecovery-Felder von
allen Puffern auf TRUE gesetzt werden und der Codierzähler auf
0 gesetzt wird. Somit wird, wie unten detaillierter
beschrieben, die folgende Weiterverarbeitung eine geeignete
Fehlerkorrektur für alle Puffer durchführen. Nach dem Schritt
126 ist die Verarbeitung beendet.
Falls beim Testschritt 122 festgestellt wird, dass eine INTRA-
Nachricht nicht gesendet wurde, dann wird der Ablauf nach dem
Schritt 122 mit einem Schritt 128 fortgesetzt, in dem
festgestellt wird, ob das Empfangs- und Verarbeitungssystem 26
angefordert hat, dass ein Makroblock unter Berücksichtigung
eines anderen, einer bestimmten TR entsprechenden, Makroblocks
INTER-codiert ist. Falls nicht, dann wird der Ablauf nach dem
Schritt 128 mit einem Schritt 130 fortgesetzt, bei dem
festgestellt wird, ob das Empfangs- und Verarbeitungssystem 26
bei einem, einer bestimmten TR entsprechenden Makroblock einen
Fehler angezeigt hat. Wenn nicht, dann ist die Verarbeitung
beendet (oder andere Arten von Nachrichten, die hier nicht
erläutert sind, werden verarbeitet). Sonst wird der Ablauf nach
dem Schritt 130 mit einem Schritt 132 fortgesetzt, bei dem der
dem Puffer für die bestimmte TR entsprechende FarEndError auf
TRUE gesetzt, die FarEndNeedsRecovery für den der bestimmten TR
entsprechenden Puffer auf TRUE gesetzt und der Codierzähler für
den der bestimmten TR entsprechenden Puffer auf 0 gesetzt wird.
Es sei angemerkt, dass, wie oben beschrieben, die einer
bestimmten TR entsprechenden Felder bestimmt werden können,
indem die in Fig. 6 dargestellte TR-Puffertabelle 90 verwendet
wird.
Wenn beim Schritt 128 festgestellt worden ist, dass das
Empfangs- und Verarbeitungssystem 26 angefordert hat, dass ein
Makroblock unter Berücksichtigung eines anderen, einer
bestimmten TR entsprechenden Makroblocks codiert ist, dann geht
der Ablauf von dem Schritt 128 in einen Schritt 134 über, bei
dem festgestellt wird, ob der Puffer entsprechend einer
bestimmten TR (auf welche unter Verwendung der in Fig. 6A
dargestellten Tabelle 90 zugegriffen ist) einen Fehler am Ende
aufweist, indem das FarEndError-Feld des Puffers untersucht
wird. Wenn dem so ist, dann wird der Ablauf nach dem Schritt
134 mit den Schritt 124 fortgesetzt, bei dem die Schritte 124,
126 zum Bearbeiten einer INTRA-Encodierung durchgeführt werden.
Es sei angemerkt, dass bei der hier erläuterten Ausführungsform
angenommen wird, dass wenn das Empfangs- und
Verarbeitungssystem 26 anfordert, dass ein Makroblock relativ
zu einem anderen, einer bestimmten TR entsprechenden Makroblock
codiert wird, alle der anderen Puffer möglicherweise fehlerhaft
sind. Wenn daher beim Schritt 134 festgestellt wird, dass der
der TR entsprechende Puffer ebenso einen Fehler am Ende
aufweist, wird eine INTRA-Codierung durchgeführt.
Wenn im Testschritt 134 festgestellt wird, dass die in der TR
beschriebene Anforderung keinen Fehler am Ende aufweist, dann
wird der Ablauf nach dem Schritt 134 mit dem Schritt 136
fortgesetzt, bei dem alle Puffer gesetzt werden, um anzuzeigen,
dass das FarEndError-Feld TRUE ist und das FarEndNeedsRecovery-
Feld TRUE ist. Auf den Schritt 136 folgt jedoch ein Schritt
138, bei dem der zu TR entsprechende Puffer festgelegt wird, um
anzuzeigen, dass das FarEndError-Feld FALSE (falsch) und das
FarEndNeedsRecovery-Feld FALSE ist. Die Schritte 136, 138
stimmen mit den Annahmen überein, dass, wenn das Empfangs- und
Verarbeitungssystem 26 anfordert, dass ein Markoblock relativ
zu einem anderen, einer bestimmten TR entsprechenden Makroblock
codiert wird, alle der anderen Threads in einem fehlerhaften
Zustand sein können.
Wie aus Fig. 9A ersichtlich, illustriert ein Ablaufdiagramm 150
die in dem in Fig. 7 dargestellten Schritt 110 durchgeführten
Tätigkeiten, bei denen ein Makroblock von dem H.263+-Encoder 40
übertragen wird. In einem ersten Schritt 151 wird einer der
Puffer 54, 55, 56 ausgewählt, um den zu sendenden Makroblock zu
speichern. Ebenso wird bei INTER-Encodierung der von den
Puffern 54, 55, 56 ausgewählte Puffer für die relative
Encodierung des aktuellen Makroblocks verwendet. In einer
bevorzugten Ausführungsform wird der aktuelle Makroblock in dem
Puffer 54, 55, 56 gespeichert, der den ältesten Makroblock
enthält, so dass der älteste Makroblock überschrieben wird. Es
ist jedoch für jemanden, der in der Technik geübt ist,
offensichtlich, dass andere Techniken verwendet werden können,
um auszuwählen, welcher der Puffer 54, 55, 56 verwendet wird,
um den aktuellen Makroblock zu speichern.
Auf den Schritt 151 folgt ein Schritt 152, bei dem bestimmt
wird, ob das in Verbindung mit Fig. 8 oben diskutierte INTRA-
Flag gesetzt worden ist. Wenn dem so ist, dann wird der Ablauf
nach dem Schritt 152 mit dem Schritt 154 fortgesetzt, bei dem
der aktuelle Makroblock INTRA-codiert und übertragen wird. Auf
den Schritt 154 folgt ein Schritt 156, bei dem das
FarEndNeedsRecovery-Feld des Puffers auf FALSE gesetzt wird. Es
sei angemerkt, dass, unter der Voraussetzung, dass das INTRA-
Einzelbild korrekt empfangen worden ist, das Senden eines
INTRA-Einzelbildes die Korrektur von jedem Fehler am Ende
bewirkt. Auf den Schritt 156 folgt ein Schritt 158, bei dem das
FarEndError-Feld des Puffers ebenso aus analogen Gründen auf
FALSE gesetzt wird, für die auch das FarEndNeedsRecovery-Feld
auf FALSE gesetzt wurde. Auf den Schritt 158 folgt ein Schritt
160, bei dem das INTRA-Flag, welches bei dem Schritt 152
getestet wurde, auf FALSE gesetzt wird, um zu verhindern, dass
irgendwelche nachfolgenden INTRA-Einzelbilder unnötigerweise
gesendet werden.
Wenn beim Testschritt 152 festgestellt wird, dass das INTRA-
Flag nicht gesetzt ist, dann wird der Ablauf nach dem Schritt
152 mit einem Schritt 162 fortgesetzt, bei dem festgestellt
wird, ob der dem Puffer entsprechende und zu codierende Thread
eine Korrektur benötigt, indem das FarEndNeedsRecovery-Feld des
Puffers überprüft wird. Das Setzen des FarEndNeedsRecovery-
Felds auf TRUE oder auf FALSE ist oben in Verbindung mit dem
Nachrichtenverarbeiten erläutert und wird entsprechend dem
Encodieren eines Makroblocks zusätzlich ebenso unten in
Verbindung mit anderen Verarbeitungen erläutert.
Wenn beim Schritt 162 festgestellt wird, dass das
FarEndNeedsRecovery-Feld des bestimmten Puffers FALSE ist, dann
wird der Ablauf nach dem Schritt 162 mit einem Schritt 164
fortgesetzt, bei dem der Makroblock auf eine mit dem H.263+-
Standard verträgliche Weise INTER-codiert wird. Der neue INTER-
codierte Makroblock setzt den Thread fort. Auf den Schritt 164
folgt ein Schritt 166, bei dem festgestellt wird, ob der
EncoderCounter des Puffers größer ist als ein bestimmter
Schwellenwert. Der EncoderCounter wird auf 0 gesetzt, wenn ein
Fehler auftritt (d. h. wenn der FarEndError auf TRUE gesetzt
ist) und wird dann entsprechend dem Takt (wall clock time)
erhöht, um zu bestimmen, wann der Fehler gelöscht werden kann.
Der für den Schwellenwert verwendete Wert ist ein wählbarer
Wert, der auf eine Vielfalt von funktionalen Faktoren beruht,
welche für jemanden bekannt sind, der in der Technik geübt ist.
In einer bevorzugten Ausführungsform wird der Schwellenwert
derart gewählt, dass er der vollständigen Übertragungs- und
Verarbeitungszeit für einen Fehler entspricht. Auf diese Weise
wird der Fehler am Ende innerhalb einer Zeitspanne nach der
Korrekturverarbeitung gelöscht, wobei die Zeitspanne der
Zeitspanne entspricht, die das Empfangs- und
Verarbeitungssystem 26 benötigt, um die Korrekturinformation zu
empfangen und, wenn ein der Korrekturinformation entsprechender
Fehler vorhanden ist, einen Fehler zurückzugeben.
Wenn bei dem Testschritt 166 festgestellt wird, dass der
EncoderCounter den Schwellenwert nicht übersteigt, dann ist die
Verarbeitung beendet. Andererseits wird der Ablauf nach dem
Schritt 166 mit dem Schritt 168 fortgesetzt, bei dem das
FarEndError-Feld des Puffers auf FALSE gesetzt wird, um eine
erfolgreiche Korrektur und den Ablauf einer ausreichenden
Zeitspanne anzuzeigen, seitdem die Korrekturverarbeitung
begann.
Wenn bei dem Testschritt 162 festgestellt wird, dass der zu
codierende Puffet eine Korrektur benötigt (d. h.
FarEndNeedsRecovery ist TRUE), dann wird der Ablauf nach dem
Schritt 162 mit dem Schritt 169 fortgesetzt, bei dem die
Korrektur wie unten beschrieben durchgeführt wird.
Wie aus Fig. 9B ersichtlich, illustriert ein Ablaufdiagramm 170
den in Fig. 9A dargestellten Schritt 169 zum Durchführen der
Korrektur. Die Verarbeitung beginnt mit einem Testschritt 172,
bei dem festgestellt wird, ob ein weiterer Thread (OtherThread)
für einen weiteren Puffer den aktuellen Puffer verwendet hat,
um die Korrektur durchzuführen. Die Bestimmung wird
durchgeführt, indem überprüft wird, ob das OtherThread-Feld
gleich dem Index des aktuellen Puffers ist. Wenn das
OtherThread-Feld nicht gleich dem Index des aktuellen Puffers
ist, so bedeutet dies, dass der aktuelle Puffer für eine
Fehlerkorrektur verwendet wurde. Der Ablauf wird dann mit einem
Schritt 174 fortgesetzt, bei dem festgestellt wird, ob der
andere, dem OtherThread-Feld entsprechende Puffer immer noch
einen Fehler am Ende aufweist (d. h. das FarEndError Feld des
anderen Puffers ist auf TRUE gesetzt). Wenn dem so ist, dann
wird der Ablauf in einem Schritt 176 fortgesetzt, bei dem das
FarEndNeedsRecovery Feld des anderen Puffers auf TRUE gesetzt
wird. Daher wird beim nächsten Mal, wenn der andere Puffer
verwendet wird, bestimmt, dass der dem anderen Puffer
entsprechende Thread eine Korrektur benötigt, weil der andere
Puffer kürzlich den aktuellen Puffer verwendet hat, welcher
einen Fehler aufweist.
Wenn festgestellt wird, dass bei dem Schritt 174 das
FarEndError-Feld des anderen Puffers FALSE ist, dann wird der
Ablauf mit einem Schritt 178 fortgesetzt. In diesem Fall
bedeutet das auf FALSE gesetzte FarEndError-Feld, dass eine
ausreichende Zeitspanne vergangen ist, seitdem der andere
Puffer den aktuellen Puffer zur Korrektur verwendet hat, so
dass der andere Puffer vermutlich nicht durch den Fehler in dem
aktuellen Puffer beschädigt ist. In diesem Fall ist beim
Schritt 178 der andere Puffer von dem aktuellen Puffer
entkoppelt, indem das OtherThread-Feld des aktuellen Puffers
derart gesetzt wird, dass es auf den aktuellen Puffer zeigt.
Daher wird das nächste Mal, wenn der aktuelle Puffer
verarbeitet wird und der Schritt 172 erreicht wird, das
Ergebnis des Tests FALSE sein.
Auf einen der Schritte 172, 176, 178 folgt ein Schritt 180, bei
dem ein fehlerfreier Puffer gefunden wird, um für die Korrektur
des Fehlers des aktuellen Puffers verwendet zu werden. Das
Auffinden eines fehlerfreien Puffers in dem Schritt 180 ist im
Folgenden detaillierter beschrieben.
Auf den Schritt 180 folgt ein Testschritt 182, bei dem
festgestellt wird, ob in dem Schritt 180 irgendein fehlerfreier
Puffer gefunden wurde. Wenn dem so ist, dann wird der Ablauf
nach dem Schritt 182 mit einem Schritt 184 fortgesetzt, bei dem
ein Makroblock unter Verwendung des fehlerfreien Puffers, der
in dem Schritt 180 gefunden worden ist, INTER-codiert wird. Auf
den Schritt 184 folgt ein Schritt 186, bei dem das
FarEndNeedsRecovery Feld des aktuellen Puffers auf FALSE
gesetzt wird, da das Codieren des Makroblocks mit dem
fehlerfreien Puffer in dem Schritt 184 die Korrektur leitet.
Auf den Schritt 186 folgt ein Schritt 188, bei dem das
OtherThread-Feld des für die Korrektur verwendeten Puffers
gesetzt wird, um auf den aktuellen Puffer zu zeigen. Nach dem
Schritt 188 ist die Verarbeitung beendet.
Wenn bei dem Schritt 182 festgestellt wird, dass kein
fehlerfreier Puffer vorhanden ist, dann wird der Ablauf von dem
Schritt 182 in einem Schritt 190 fortgesetzt, um den Makroblock
INTRA zu codieren. Es sei angemerkt, dass falls es keinen
anderen fehlerfreien Puffer gibt, eine INTRA-Codierung
notwendig ist, da der aktuelle Puffer ebenso fehlerbehaftet
ist. Auf den Schritt 190 folgt ein Schritt 192, bei dem die
FarEndError- und FarEndNeedsRecovery-Felder auf FALSE gesetzt
werden. Nach dem Schritt 192 ist die Verarbeitung beendet.
Wie aus Fig. 10 ersichtlich, illustriert ein Ablaufdiagramm 200
detaillierter den Schritt 180 des Findens eines fehlerfreien
Puffers, der für die Fehlerkorrektur verwendet wird. Bei einem
ersten Schritt 202 wird ein Index i auf 1 gesetzt. Der Index i
wird verwendet, um durch die Puffer zu iterieren, um einen
neuen Puffer zu finden, der als Referenzpuffer für die
Korrektur des aktuellen Puffers verwendet wird.
Auf diesen Schritt 202 folgt ein Testschritt 204, bei dem
festgestellt wird, ob das FarEndError-Feld des untersuchten i-
ten Puffers auf FALSE gesetzt ist. Wenn ein bestimmter Puffer
einen Fehler am Ende aufweist, dann ist es nicht angebracht,
den Puffer als Referenzpuffer für eine Fehlerkorrektur zu
verwenden. Wenn dementsprechend im Schritt 204 festgestellt
wird, dass der Puffer, der untersucht wird, einen Fehler am
Ende aufweist, dann wird der Ablauf nach dem Schritt 204 mit
einem Schritt 206 fortgesetzt, bei dem der Index i erhöht wird.
Auf den Schritt 206 folgt ein Testschritt 208, bei dem
festgestellt wird, ob der Index i größer als die Gesamtanzahl N
der Puffer ist. Wenn dem so ist, dann wird der Ablauf nach dem
Schritt 208 mit einem Schritt 210 fortgesetzt, bei dem eine
negative eins (-1) ausgegeben wird. Eine Softwareroutine zum
Auffinden eines fehlerfreien Puffers kann eine negative Zahl
zurückgeben, die anzeigt, dass keine fehlerfreien Puffer
gefunden wurden. Der zurückgegebene Wert kann dementsprechend
bei dem in Fig. 9B dargestellten Testschritt 182 überprüft
werden, um zu entscheiden, ob es irgendwelche fehlerfreien
Referenzpuffer gibt, die für eine Korrektur verwendet werden
können.
Wenn bei dem Testschritt 208 festgestellt wird, das der Index i
immer noch innerhalb des Bereiches der Anzahl der Puffer liegt,
dann wird der Ablauf nach dem Testschritt 208 mit dem vorigen
Schritt 204 fortgesetzt, um den nächsten Puffer zu überprüfen.
Wenn beim Testschritt 204 festgestellt wird, dass das
FarEndError-Feld für den Puffer FALSE ist, dann wird der Ablauf
nach dem Schritt 204 mit einem Testschritt 212 fortgesetzt. In
dem Testschritt 212 wird festgestellt, ob der untersuchte i-te
Puffer aktuell von einem anderen Puffer zur Fehlerkorrektur
verwendet wird. Es sei angemerkt, dass, sogar wenn in dem
Testschritt 204 festgestellt wird, dass das FarEndError-Feld
FALSE ist, es immer noch möglich ist, dass es einen Fehler in
dem i-ten Puffer gibt, der aufgrund von Übertragungs- und
Verarbeitungsverzögerungen noch nicht von dem H.263+-Encoder
empfangen worden ist. Daher wird in einer bevorzugten
Ausführungsform jeder Puffer maximal von einem Puffer als
Referenzpuffer für eine Fehlerkorrektur verwendet. Auf diese
Weise wird die Fortpflanzung dieses Fehlers minimiert, wenn
später festgestellt wird, das ein für eine Fehlerkorrektur
eines Puffers verwendeter Referenzpuffer ebenso fehlerhaft ist.
In anderen Ausführungsformen ist es möglich, einen einzelnen
Puffer für die Fehlerkorrektur von mehreren anderen Puffern zu
verwenden.
Wenn in dem Testschritt 212 festgestellt wird, dass der i-te
Puffer von einem anderen Puffer verwendet wird, dann wird der
Ablauf nach dem Schritt 212 mit dem Schritt 206 fortgesetzt,
bei dem der Index i erhöht wird und die Weiterverarbeitung nach
dem Schritt 206, wie oben beschrieben, erfolgt. Wenn
andererseits in dem Testschritt 212 festgestellt wird, dass der
i-te Puffer nicht von anderen Puffern verwendet wird, dann wird
der Ablauf nach dem Schritt 212 mit einem Schritt 214
fortgesetzt, bei dem der Index i von der Routine zum Auffinden
eines fehlerfreien Puffers ausgegeben wird. In diesem Fall wird
der i-te Puffer als Referenz verwendet, um in der in Fig. 9A und
Fig. 9B dargestellten Codierroutine den aktuellen Inhalt des
Puffers zu codieren.
Wie aus Fig. 11 ersichtlich, illustriert ein Ablaufdiagramm 230
den Betrieb eines H.263+-Decodieres 60 eines Videoempfangs- und
Verarbeitungssystems 26. Wie oben erläutert, kann der H.263+-
Decoder 60 realisiert werden, indem Software verwendet wird. Es
wird jedoch für denjenigen, der in der Technik geübt ist, durch
die folgende Erläuterung offensichtlich sein, dass der H.263+-
Decoder 60 realisiert werden kann, indem Hardware oder eine
geeignete Kombination von Hardware und Software verwendet wird.
In einem ersten Schritt 232, wird der empfangene Bitstrom
decodiert. Das Decodieren des Bitstroms in dem Schritt 232 wird
auf herkömmliche Weise in Einklang mit dem H.263+-Standard
durchgeführt. Auf den Schritt 232 folgt ein Schritt 234, bei
dem ein Empfangspuffer zum Speichern des empfangenen
Einzelbildes ausgewählt wird. Obwohl es viele möglichen
Techniken gibt, um einen bestimmten Empfangspuffer auszuwählen,
wird in einer bevorzugten Ausführungsform als Empfangspuffer
der älteste Speicherpuffer (d. h. der Speicherpuffer, der den
Makroblock aufweist, der der ältesten temporären Referenz TR
entspricht) ausgewählt.
Auf den Schritt 234 folgt ein Testschritt 236, bei dem
festgestellt wird, ob ein INTRA-codierter Makroblock gesendet
wurde. Wenn dem so ist, dann wird der Ablauf von dem Schritt
236 in dem Schritt 238 fortgesetzt, bei dem ein INTRA-Zeitgeber
zurückgesetzt wird. Der INTRA-Zeitgeber wird von dem Decoder 60
verwendet, um eine Situation zu verhindern, bei der mehrere
INTRA-Anforderungen von dem Decoder 60 innerhalb einer relativ
kurzen Zeitdauer an den Encoder 40 (über den Rückkanal 29)
gesendet werden. Jedes mal wenn ein INTRA-codierter Makroblock
gesendet oder empfangen wird, wird der INTRA-Zeitgeber
zurückgesetzt. Nachfolgend wird der INTRA-Zeitgeber
entsprechend dem Takt auf herkömmliche Weise erhöht. Der
Decoder sendet keine INTRA-Anforderung, wenn der Zeitgeber
unterhalb eines bestimmten Schwellenwert ist, welcher in einer
bevorzugten Ausführungsform der vollständigen Übertragungs- und
Verarbeitungszeit entspricht.
Auf den Schritt 238 folgt ein Schritt 240, bei dem der INTRA-
codierte Makroblock entsprechend dem H.263+-Standard auf
herkömmliche Weise decodiert wird. Auf den Schritt 240 folgt
ein Testschritt 242, bei dem festgestellt wird, ob während des
Decodierens des INTRA-codierten Makroblocks ein Fehler (z. B.
ein Übertragungsfehler) aufgetreten ist. Wenn dem so ist, dann
wird der Ablauf mit einem Schritt 244 fortgesetzt, bei dem das
BuffError-Feld des empfangenen Buffers auf TRUE gesetzt wird.
Wenn andererseits kein Fehler beim Decodieren des INTRA-
codierten Makroblocks aufgetreten ist, dann wird der Ablauf
nach dem Schritt 242 mit einem Schritt 246 fortgesetzt, bei dem
das BuffError-Feld des Puffers auf FALSE gesetzt wird.
Wenn bei dem Testschritt 236 festgestellt wurde, dass kein
INTRA-codierter Makroblock gesendet wurde, dann wird der Ablauf
nach dem Testschritt 236 mit einem Testschritt 250 fortgesetzt,
bei dem festgestellt wird, ob der gesendete INTRA-codierte
Makroblock zu einem Fehler führt. Es sei angemerkt, dass, wenn
ein INTER-codierter Makroblock gesendet wurde, es für den
Decoder 60 notwendig ist, einen Referenzmakroblock zu haben,
der verwendet wurde, um den aktuellen INTER-codierten
Makroblock zu codieren. Entsprechend dem H.263+-Standard weist
ein INTER-codierter Makroblock ein Identifizierungszeichen
einer temporären Referenz auf, um für die Prädiktion (TRP)
verwendet zu werden, die dem Referenzmakroblock entspricht. Der
Decoder 60 verwendet die TRP, um die in Fig. 6A dargestellte
Tabelle 90 zu indizieren, um zu ermitteln, ob der
Referenzmakroblock zugänglich ist. Wenn der entsprechende
Eintrag in der Tabelle 90 anzeigt, dass der Referenzmakroblock
nicht zugänglich ist, (z. B. wenn der Eintrag eine negative Zahl
ist), dann bezeichnet dies der Testschritt 250 als einen
Fehler. Daher schließen die möglichen Fehler, die in dem
Schritt 250 festgestellt werden können, einen Fehler ein, der
auftritt, wenn die TRP für den empfangenen INTER-codierten
Makroblock nicht einem der Makroblöcke entspricht, die in dem
Decoder 60 gespeichert sind oder wenn der der TRP entsprechende
Makroblock vorhanden ist, aber einen dazu zugeordneten Fehler
(z. B. BuffError ist TRUE) aufweist. In einer bevorzugten
Ausführungsform werden Threads mit einem auf TRUE gesetzten
BuffError nicht für die Anzeige verwendet, außer wenn alle
Threads einen auf FALSE gesetzten BuffError aufweisen, wobei in
diesem Fall alle Threads für die Anzeige verwendet werden.
Wenn in dem Schritt 250 festgestellt wird, dass kein TRP
zugeordneter Fehler vorhanden ist, dann wird der Ablauf mit dem
Schritt 252 fortgesetzt, bei dem der INTER-codierte Makroblock
decodiert wird, indem die Puffer verwendet werden, die der TRP
zugeordnet sind, welche, wie oben beschrieben, bestimmt wird,
indem auf die Tabelle 90 zugegriffen wird, die die TR's mit den
Puffern korreliert. Auf den Schritt 252 folgt ein Schritt 254,
bei dem der jüngste decodierte Makroblock in dem Puffer
gespeichert wird. Nach dem Schritt 254 ist die Verarbeitung
beendet.
Wenn in dem Testschritt 250 festgestellt wird, dass ein Fehler
aufgetreten ist, dann wird der Ablauf nach dem Schritt 250 mit
einen Schritt 256 fortgesetzt, bei dem das BuffError-Feld zum
Empfangen der Puffer auf TRUE gesetzt wird. Auf den Schritt 256
folgt ein Testschritt 260, bei dem die Anzahl von fehlerfreien
Puffern, die in dem Decoder verbleiben, auf eine herkömmliche
Weise festgestellt wird, indem die BuffError-Felder für alle
Puffer untersucht werden. Wenn keine fehlerfreien Puffer übrig
bleiben, dann wird der Ablauf nach dem Schritt 260 mit einem
Schritt 262 fortgesetzt, bei dem festgestellt wird, ob eine
INTRA-Anforderung vor kurzem durchgeführt wurde. Wie oben in
Verbindung mit dem Schritt 238 erläutert wurde, wird ein INTRA-
Zeitgeber verwendet, um zu verhindern, dass innerhalb einer
relativ kurzen Zeitdauer mehrere INTRA-Anforderungen von dem
Decoder gesendet werden. Wenn in dem Testschritt 262
festgestellt wird, dass ein INTRA-Anforderungen vor kurzem
gesendet wurde, dann ist die Verarbeitung beendet. In diesem
Fall wartet der Decoder einfach auf eine INTRA-Codierung, damit
der Encoder veranlaßt wird, mit dem Senden von INTRA-codierten
Makroblöcken zu beginnen.
Wenn in dem Testschritt 262 festgestellt wird, dass ein INTRA-
Einzelbild kürzlich nicht gesendet wurde, dann wird der Ablauf
nach dem Schritt 262 mit einem Schritt 264 fortgesetzt, bei dem
eine INTRA-Anforderung an den Encoder geschickt wird. Auf den
Schritt 264 folgt ein Schritt 266, bei dem der INTRA-Zeitgeber
zurückgesetzt wird. Nach dem Schritt 266 ist die Verarbeitung
beendet.
Wenn in dem Testschritt 260 festgestellt wird, dass die Anzahl
von fehlerfreien Puffern in dem Decoder größer als 0 ist, dann
wird der Ablauf nach dem Testschritt 260 mit einem Schritt 268
fortgesetzt, bei dem der Decoder eine Fehlernachricht an den
Encoder schickt, die den dem empfangenen Makroblock
zugeordneten Fehler anzeigt. Es sei angemerkt, dass, wie oben
in Verbindung mit Fig. 8 (Nachrichtenverarbeitung) und den
Fig. 9A und 9B (Senden eines Makroblocks) erläutert ist, dass es
zwei mögliche Arten von Fehlernachrichten gibt, die eine
unterschiedliche Verarbeitung durch den Encoder bewirken: eine
erste Art, die den Fehler für die TR berichtet und eine zweite
Art, die anfordert, dass ein bestimmter Makroblock relativ zu
einer bestimmten TR entsprechenden Makroblock INTER-codiert
ist. In einer bevorzugten Ausführungsform berichtet die in dem
Schritt 268 gesendete Nachricht den Fehler für den der TR
entsprechenden Makroblock. In anderen Ausführungsformen fordert
der im Schritt 268 geschickte Fehler an, dass ein nachfolgender
Makroblock relativ zu einem eine bestimmte TR aufweisenden
Makroblock codiert ist. Nach dem Schritt 268 ist die
Verarbeitung beendet.
Das hier beschriebene System kann auf eine Vielzahl von Arten
initialisiert werden, die von der hier gegebenen Beschreibung
offensichtlich sind. In einer bevorzugten Ausführungsform wird
das TR-Feld für alle Puffer für den Encoder 40 und den Decoder
60 auf eine negative Zahl gesetzt, um anzuzeigen, dass in
keinem der Puffer eine TR gespeichert ist. Dann überträgt der
Encoder 40 das erste Einzelbild als INTRA-codierten Makroblock
und überträgt die ersten N Makroblöcke (wobei N gleich der
Anzahl der Puffer ist) als INTER-codierte Makroblöcke relativ
zu entweder dem ersten INTRA-Einzelbild oder relativ zu einem
der anderen Makroblöcke. In anderen Ausführungsformen ist es
möglich, am Anfang N INTRA-Einzelbilder zu übertragen.
Die Anzahl der Puffer, die von dem Videoverarbeitungs- und
Übertragungssystem 24 und dem Videoempfangs- und
Verarbeitungssystem 26 verwendet werden, können auf Grundlage
einer Vielfalt von funktionalen Faktoren, die mit der
Leistungsfähigkeit (Performance) zusammenhängen, ausgewählt
werden. Im Allgemeinen führt eine Erhöhung der Anzahl der
Puffer in dem Encoder 40 zu einer Reduzierung der Anzahl von
verwendeten INTRA-Makroblöcke, da eine größere Anzahl von
Threads vorhanden sind, welche für die Korrektur verwendet
werden können. Eine Erhöhung der Anzahl der Puffer in dem
Encoder 40 kann jedoch die zu übertragende Informationsmenge
erhöhen, da jeder Thread derart eingerichtet ist, dass der
Unterschied von dem vorigen Makroblock in dem Thread verwendet
wird. Für ein System mit N Puffern entspricht jeder Makroblock
eines Threads einem Unterschied zwischen dem aktuellen
Makroblock und dem Makroblock, der N Einzelbilder vor dem
aktuellen Makroblock aufgetreten ist, was im Allgemeinen
weniger vorhersagekräftig ist als Makroblöcke, die weniger als
N Einzelbilder vor dem aktuellen Makroblock aufgetreten sind.
Daher kann für ein vollständig fehlerfreies System die
Verwendung von einem Thread in dem Encoder optimal sein. Wie
unten detaillierter beschrieben, passt eine bevorzugte
Ausführungsform des hier beschriebenen Systems die Anzahl von
Threads basierend auf der Anzahl von Fehlern, die innerhalb
einer bestimmten Zeitdauer auftreten, dynamisch an. Es sei
angemerkt, dass es für den Decoder 60 nützlich ist, die
maximale Anzahl von Puffern zu verwenden, da der Decoder die
vorhergehend empfangenen Makroblöcke verwendet, um die INTER-
codierten Makroblöcke zu decodieren.
Wie aus Fig. 12 ersichtlich, illustriert ein Ablaufdiagramm das
dynamische Anpassen der Anzahl N von Puffern, die von dem
Encoder 40 verwendet werden. In einem ersten Schritt 282 wird
ein Zeitgeber auf 0 gesetzt. Auf den Schritt 282 folgt ein
Schritt 284, bei dem die Anzahl der Puffer N auf 1 gesetzt
wird. Auf den Schritt 284 folgt ein Testschritt 286, bei dem
festgestellt wird, ob der Zeitgeber größer ist als ein
vorgegebener Schwellenwert. Der Zeitgeber wird verwendet, um
festzustellen, wieviel Zeit vergangen ist, seitdem ein INTRA-
Codieren aufgetreten ist, welches auf einem Pufferfehler
basiert. Wenn eine ausreichende Zeitdauer ohne ein solches
INTRA-Codieren vergangen ist, dann wird die Anzahl von Puffern
reduziert. Die Zeitdauer, die für den Schwellenwert der
Zeitdauer gewählt wird, ist eine wählbare Größe. In einer
bevorzugten Ausführungsform wird der Schwellenwert auf eine
Minute gesetzt.
Wenn in dem Testschritt 286 festgestellt wird, dass der
Zeitgeber größer ist als der Schwellenwert, dann wird der
Ablauf nach dem Schritt 286 mit einem Testschritt 288
fortgesetzt, bei dem festgestellt wird, ob die Anzahl N von
Puffern gleich eins ist, welches die minimale Anzahl von
Puffern ist. In anderen Ausführungsformen, bei denen die
minimale Anzahl von Puffern ungleich 1 ist, würde in dem
Schritt 288 überprüft, ob N gleich dieser minimalen Anzahl ist.
Wenn in dem Testschritt 288 festgestellt wird, dass N nicht
gleich 1 ist, dann wird der Ablauf nach dem Schritt 288 mit
einem Schritt 290 fortgesetzt, bei dem die Anzahl von Puffern
um eins reduziert wird. Wenn andererseits N gleich 1 ist, dann
wird der Schritt 290 nicht durchgeführt.
Wenn im Schritt 286 festgestellt wird, dass der Zeitgeber nicht
größer als der Schwellenwert ist, dann wird der Ablauf nach dem
Schritt 286 mit einem Schritt 292 fortgesetzt, bei dem
festgestellt wird, ob in jüngster Zeit ein aufgrund von
Pufferfehlern beruhendes INTRA-Codieren durchgeführt wurde.
Wenn dem so ist, dann wird der Ablauf nach dem Schritt 292 mit
einem Schritt 294 fortgesetzt, bei dem die Anzahl von Puffern
um eins erhöht wird. In einigen Ausführungsformen kann ein
zusätzlicher Test durchgeführt werden, der nach dem Schritt 294
durchgeführt wird, um zu bestimmen, ob eine maximale Anzahl von
Puffern überschritten wurde. Die maximale Anzahl kann von dem
Speicherplatz abhängen, der für den Einsatz des Encoders 40
verfügbar ist. Wenn in dem Testschritt 292 festgestellt wird,
dass in jüngster Zeit keine INTRA-Encodierung aufgrund von
Pufferfehlern stattgefunden hat, dann wird der Ablauf nach dem
Schritt 292 mit einem Schritt 296 fortgesetzt, bei dem der
Zeitgeber erhöht wird. Der Schritt 296 folgt ebenso den
Schritten 290 und 294. Nach dem Schritt 296 wird der Ablauf
wiederholt an dem Schritt 286 fortgesetzt, um die nächste
Schleife zu durchlaufen.
Es sei angemerkt, dass es in anderen Ausführungsformen möglich
ist, die Anzahl von Puffern um mehr als eins zu erhöhen und zu
erniedrigen. In einigen Ausführungsformen ist es möglich, die
Anzahl von Puffern um eine bestimmte Anzahl zu reduzieren und
die Anzahl von Puffern um eine andere Anzahl zu erhöhen. Ferner
können diese Anzahlen anstelle von festen Werten auch
variieren.
In der Zeichnung werden folgende Bezugszeichen verwendet:
Fig. 1
20 Videosystem
22 Videoquelle (Kamera)
24 Videoverarbeitungs- und Übertragungssystem
25 Video-Bitstrom-Kanal
26 Videoempfangs- und Verarbeitungssystem
28 Anzeige (Monitor)
29 Rückkanal
Fig. 2
24 Videoverarbeitungs- und Übertragungssystem
25 Video-Bitstrom-Kanal
29 Rückkanal
32 A/D-Konverter
34 Formatkonverter
40 H.263+-Encoder
Fig. 3
25 Video-Bitstrom-Kanal
2 05062 00070 552 001000280000000200012000285910495100040 0002010043188 00004 049436 Videoempfangs- und Verarbeitungssystem
29 Rückkanal
60 H.263+-Decoder
72 Formatkonverter
74 D/A-Konverter
Fig. 4
40 H.263+-Encoder
42 Encodersteuerung
44 Referenzprozessor
46 Subtraktionseinheit
47 Schalter
48 Transformationseinheit
49 Quantisierer
50 Inverser Quantisierer
51 Inverse Transformationseinheit
52 Additionseinheit
53 Schalter
54 Referenzspeicherpuffer
55 Referenzspeicherpuffer
56 Referenzspeicherpuffer
57 Schalter
59 Videomultiplexer
Fig. 5
80 Schematisches Diagramm
82 H.263+-Encoder
84 Referenzspeicherpuffer
86 H.263+-Decoder
88 Referenzspeicherpuffer
Fig. 6A, 6B und 6C
90 Tabelle
92 Datenstruktur
93 Elemente
94 Elemente
95 Elemente
96 Datenstruktur
97 Element
98 Element
99 Element
Fig. 7
100 Ablaufdiagramm
102 Initialisierung
104 Nachrichtenverarbeitung
106 Fehler
108 Fehlerverarbeitung
110 Senden von Makroblock
Fig. 8
120 Ablaufdiagramm
122 INTRA?
124 Setze INTRA Flag
126 FarEndError = TRUE FarEndNeedsRec = TRUE EncoderCounter = 0 Für alle Puffer
128 TR Anfrage?
130 FarEndError?
132 FarEndError = TRUE FarEndNeedsRec = TRUE EncoderCounter = 0
Für alle Puffer
134 FarEndError?
136 FarEndError = TRUE FarEndNeedsRec = TRUE EncoderCounter = TRUE
Für alle Puffer
138 FarEndError = FALSE FarEndNeedsRec = FALSE
Für alle Puffer
Fig. 9A
150 Ablaufdiagramm
151 Auswahl Puffer
152 INTRA Flag?
154 INTRA Codierung
156 FarEndNeedsRecovery = FALSE
158 FarEndError
160 INTRA-Flag = FALSE
162 Korrektur notwendig?
164 INTER Codierung
166 Counter < Schwellenwert
168 FarEndError = FALSE
169 Korrektur
Fig. 9B
170 Ablaufdiagramm
172 OtherThread?
174 Weist OtherThread einen FarEndError auf?
176 Für alle Puffer: FarEndNeedsRecovery = TRUE
178 OtherThread-Feld gleich aktuellem Puffer
180 Finde fehlerfreien Puffer
182 Fehlerfreier Puffer gefunden?
184 Kodierung als INTER-Makroblock
186 FarEndNeedsRecovery = FALSE
188 OtherThread von fehlerfreiem Puffer zeigt auf aktuellen Puffer
190 Sende INTRA-Makroblock
192 FarEndError = FALSE FarEndNeedsRecovery = FALSE
Fig. 10
200 Ablaufdiagramm
202 i = 1
204 FarEndError?
206 i = i + 1
208 i < N
210 Ausgabe -1
212 Verwendet für Korrektur?
214 Ausgabe i
Fig. 11
230 Ablaufdiagramm
232 Decodierung Bitstrom
234 Auswahl Speicherpuffer
236 INTRA?
238 Zurücksetzen INTRA-Zeitgeber
240 INTRA-Verarbeitung
242 Fehler?
244 BuffError = TRUE
246 BuffError = FALSE
250 TPR Error?
252 INTER-Verarbeitung
256 BuffError = TRUE
260 fehlerfreie Puffer < = 0?
262 Anfrage INTRA?
264 Sende INTRA-Anfrage
266 Zurücksetzen INTRA-Zeitgeber
268 Sende Fehler für TR
Fig. 12
280 Ablaufdiagramm
282 Zeitgeber = 0
284 N = 1
286 Zeitgeber < Schwellenwert
288 N = 1?
290 N = N - 1 Timer = 0
292 Kürzlich INTRA?
294 N = N + 1
296 Erhöhen des Zeitgebers
20 Videosystem
22 Videoquelle (Kamera)
24 Videoverarbeitungs- und Übertragungssystem
25 Video-Bitstrom-Kanal
26 Videoempfangs- und Verarbeitungssystem
28 Anzeige (Monitor)
29 Rückkanal
Fig. 2
24 Videoverarbeitungs- und Übertragungssystem
25 Video-Bitstrom-Kanal
29 Rückkanal
32 A/D-Konverter
34 Formatkonverter
40 H.263+-Encoder
Fig. 3
25 Video-Bitstrom-Kanal
2 05062 00070 552 001000280000000200012000285910495100040 0002010043188 00004 049436 Videoempfangs- und Verarbeitungssystem
29 Rückkanal
60 H.263+-Decoder
72 Formatkonverter
74 D/A-Konverter
Fig. 4
40 H.263+-Encoder
42 Encodersteuerung
44 Referenzprozessor
46 Subtraktionseinheit
47 Schalter
48 Transformationseinheit
49 Quantisierer
50 Inverser Quantisierer
51 Inverse Transformationseinheit
52 Additionseinheit
53 Schalter
54 Referenzspeicherpuffer
55 Referenzspeicherpuffer
56 Referenzspeicherpuffer
57 Schalter
59 Videomultiplexer
Fig. 5
80 Schematisches Diagramm
82 H.263+-Encoder
84 Referenzspeicherpuffer
86 H.263+-Decoder
88 Referenzspeicherpuffer
Fig. 6A, 6B und 6C
90 Tabelle
92 Datenstruktur
93 Elemente
94 Elemente
95 Elemente
96 Datenstruktur
97 Element
98 Element
99 Element
Fig. 7
100 Ablaufdiagramm
102 Initialisierung
104 Nachrichtenverarbeitung
106 Fehler
108 Fehlerverarbeitung
110 Senden von Makroblock
Fig. 8
120 Ablaufdiagramm
122 INTRA?
124 Setze INTRA Flag
126 FarEndError = TRUE FarEndNeedsRec = TRUE EncoderCounter = 0 Für alle Puffer
128 TR Anfrage?
130 FarEndError?
132 FarEndError = TRUE FarEndNeedsRec = TRUE EncoderCounter = 0
Für alle Puffer
134 FarEndError?
136 FarEndError = TRUE FarEndNeedsRec = TRUE EncoderCounter = TRUE
Für alle Puffer
138 FarEndError = FALSE FarEndNeedsRec = FALSE
Für alle Puffer
Fig. 9A
150 Ablaufdiagramm
151 Auswahl Puffer
152 INTRA Flag?
154 INTRA Codierung
156 FarEndNeedsRecovery = FALSE
158 FarEndError
160 INTRA-Flag = FALSE
162 Korrektur notwendig?
164 INTER Codierung
166 Counter < Schwellenwert
168 FarEndError = FALSE
169 Korrektur
Fig. 9B
170 Ablaufdiagramm
172 OtherThread?
174 Weist OtherThread einen FarEndError auf?
176 Für alle Puffer: FarEndNeedsRecovery = TRUE
178 OtherThread-Feld gleich aktuellem Puffer
180 Finde fehlerfreien Puffer
182 Fehlerfreier Puffer gefunden?
184 Kodierung als INTER-Makroblock
186 FarEndNeedsRecovery = FALSE
188 OtherThread von fehlerfreiem Puffer zeigt auf aktuellen Puffer
190 Sende INTRA-Makroblock
192 FarEndError = FALSE FarEndNeedsRecovery = FALSE
Fig. 10
200 Ablaufdiagramm
202 i = 1
204 FarEndError?
206 i = i + 1
208 i < N
210 Ausgabe -1
212 Verwendet für Korrektur?
214 Ausgabe i
Fig. 11
230 Ablaufdiagramm
232 Decodierung Bitstrom
234 Auswahl Speicherpuffer
236 INTRA?
238 Zurücksetzen INTRA-Zeitgeber
240 INTRA-Verarbeitung
242 Fehler?
244 BuffError = TRUE
246 BuffError = FALSE
250 TPR Error?
252 INTER-Verarbeitung
256 BuffError = TRUE
260 fehlerfreie Puffer < = 0?
262 Anfrage INTRA?
264 Sende INTRA-Anfrage
266 Zurücksetzen INTRA-Zeitgeber
268 Sende Fehler für TR
Fig. 12
280 Ablaufdiagramm
282 Zeitgeber = 0
284 N = 1
286 Zeitgeber < Schwellenwert
288 N = 1?
290 N = N - 1 Timer = 0
292 Kürzlich INTRA?
294 N = N + 1
296 Erhöhen des Zeitgebers
Claims (39)
1. Verfahren zum Übertragen und Empfangen von Videodaten,
bei dem ein Encoder Makroblöcke in einer Mehrzahl von Referenzpuffern speichert,
bei dem der Encoder die Makroblöcke überträgt, die relativ zu jedem der Referenzpuffer codiert sind,
bei dem ein Decoder die Makroblöcke empfängt, und
bei dem als Antwort darauf, dass der Decoder einen Fehler hinsichtlich eines bestimmten Makroblocks anzeigt, der relativ zu einem ersten der Puffer encodiert wurde, der Encoder einen zweiten der Puffer zur Fehlerkorrektur verwendet, wenn der zweite Puffer nicht mit einem Fehler behaftet ist.
bei dem ein Encoder Makroblöcke in einer Mehrzahl von Referenzpuffern speichert,
bei dem der Encoder die Makroblöcke überträgt, die relativ zu jedem der Referenzpuffer codiert sind,
bei dem ein Decoder die Makroblöcke empfängt, und
bei dem als Antwort darauf, dass der Decoder einen Fehler hinsichtlich eines bestimmten Makroblocks anzeigt, der relativ zu einem ersten der Puffer encodiert wurde, der Encoder einen zweiten der Puffer zur Fehlerkorrektur verwendet, wenn der zweite Puffer nicht mit einem Fehler behaftet ist.
2. Verfahren gemäß Anspruch 1, bei dem ferner als Antwort
darauf, dass der Decoder einen Fehler hinsichtlich eines
bestimmten Makroblocks und allen der Puffer anzeigt, die mit
einem Fehler behaftet sind, wobei der Encoder zumindest einen
Makroblock überträgt, der unabhängig von jedem anderen
Makroblock codiert ist.
3. Verfahren gemäß Anspruch 1 oder 2,
bei dem der Decoder einen Makroblock empfängt, der mit einem Fehler behaftet ist, und
bei dem als Antwort auf alle Puffer des Decoders, die mit Fehlern behaftet sind, der Decoder eine Anforderung an den Encoder überträgt, zumindest einen Makroblock zu übertragen, der unabhängig von jedem anderen Makroblock codiert ist.
bei dem der Decoder einen Makroblock empfängt, der mit einem Fehler behaftet ist, und
bei dem als Antwort auf alle Puffer des Decoders, die mit Fehlern behaftet sind, der Decoder eine Anforderung an den Encoder überträgt, zumindest einen Makroblock zu übertragen, der unabhängig von jedem anderen Makroblock codiert ist.
4. Verfahren gemäß Anspruch 3, bei der Encoder als Antwort auf
die Anforderung zumindest einen Makroblock überträgt, der
unabhängig von jedem anderen Makroblock codiert ist.
5. Verfahren gemäß einem der Ansprüche 1 bis 4,
bei dem der Encoder für eine Fehlerkorrektur einen zweiten der Puffer verwendet,
bei dem ein Makroblock unter Verwendung eines zweiten der Puffer als Referenz verwendet wird und
bei dem der erste der Puffer als fehlerbehaftet markiert wird.
bei dem der Encoder für eine Fehlerkorrektur einen zweiten der Puffer verwendet,
bei dem ein Makroblock unter Verwendung eines zweiten der Puffer als Referenz verwendet wird und
bei dem der erste der Puffer als fehlerbehaftet markiert wird.
6. Verfahren gemäß Anspruch 5,
bei dem als Antwort auf das Markieren des ersten der Puffer als einen fehlerbehafteten, ein Zeitgeber gesetzt wird, um die Zeitdauer anzuzeigen, seitdem der Fehler aufgetreten ist, und
bei dem als Antwort darauf, dass die Zeitdauer seit dem Auftreten der Fehler größer ist als ein vorgegebener Schwellenwert, der dem ersten der Puffer zugeordnete Fehler gelöscht wird.
bei dem als Antwort auf das Markieren des ersten der Puffer als einen fehlerbehafteten, ein Zeitgeber gesetzt wird, um die Zeitdauer anzuzeigen, seitdem der Fehler aufgetreten ist, und
bei dem als Antwort darauf, dass die Zeitdauer seit dem Auftreten der Fehler größer ist als ein vorgegebener Schwellenwert, der dem ersten der Puffer zugeordnete Fehler gelöscht wird.
7. Verfahren gemäß Anspruch 6, bei dem der vorgegebene
Schwellenwert der vollständigen Übertragungs- und
Verarbeitungszeit zwischen dem Encoder und dem Decoder
entspricht.
8. Verfahren gemäß einem der Ansprüche 1 bis 7,
bei dem eine Anzahl von verwendeten Puffern als Antwort auf Fehler, die von dem Encoder erfordern, zumindest einen Makroblock zu übertragen, der unabhängig von jedem anderen Makroblock codiert ist, erhöht wird, und
bei dem die Anzahl von verwendeten Puffern reduziert wird, falls nach einer vorgegebenen Zeitdauer keine Fehler auftreten, die von dem Encoder erfordern, zumindest einen Makroblock zu übertragen, der unabhängig von jedem anderen Makroblock codiert ist.
bei dem eine Anzahl von verwendeten Puffern als Antwort auf Fehler, die von dem Encoder erfordern, zumindest einen Makroblock zu übertragen, der unabhängig von jedem anderen Makroblock codiert ist, erhöht wird, und
bei dem die Anzahl von verwendeten Puffern reduziert wird, falls nach einer vorgegebenen Zeitdauer keine Fehler auftreten, die von dem Encoder erfordern, zumindest einen Makroblock zu übertragen, der unabhängig von jedem anderen Makroblock codiert ist.
9. Verfahren gemäß einem der Ansprüche 1 bis 8, bei dem ferner
jedem Makroblock einer bestimmten zeitliche Referenznummer
zugeordnet wird und bei dem eine Tabelle vorgesehen ist, die
jede temporäre Referenznummer mit entweder einem bestimmten der
Puffer oder einem Wert abbildet, der anzeigt, dass ein einer
bestimmten temporären Referenznummer entsprechender Makroblock
nicht gespeichert wurde.
10. Verfahren zum Übertragen von Videodaten,
bei dem ein Encoder Makroblöcke in einer Mehrzahl von Referenzpuffern speichert,
bei dem der Encoder Makroblöcke überträgt, die relativ zu jedem der Referenzpuffer codiert sind, und
bei dem als Antwort hinsichtlich eines Fehlers eines Makroblocks, der einem ersten der Puffer entspricht, der Encoder einen zweiten der Puffer zur Fehlerkorrektur verwendet, falls der zweite Puffer nicht mit einem Fehler behaftet ist.
bei dem ein Encoder Makroblöcke in einer Mehrzahl von Referenzpuffern speichert,
bei dem der Encoder Makroblöcke überträgt, die relativ zu jedem der Referenzpuffer codiert sind, und
bei dem als Antwort hinsichtlich eines Fehlers eines Makroblocks, der einem ersten der Puffer entspricht, der Encoder einen zweiten der Puffer zur Fehlerkorrektur verwendet, falls der zweite Puffer nicht mit einem Fehler behaftet ist.
11. Verfahren gemäß Anspruch 10, bei dem ferner als Antwort auf
einen Fehler hinsichtlich eines Makroblocks und allen der
Puffer, die mit Fehlern behaftet sind, der Encoder zumindest
einen Makroblock überträgt, der unabhängig von jedem anderen
Makroblock codiert ist.
12. Verfahren gemäß Anspruch 10 oder 11, bei dem als Antwort
auf den Empfang einer Anforderung, der Encoder zumindest einen
Makroblock überträgt, der unabhängig von jedem anderen
Makroblock codiert ist.
13. Verfahren gemäß einem der Ansprüche 10 bis 12, bei dem der
Encoder einen zweiten der Puffer zur Fehlerkorrektur verwendet,
bei dem ein Makroblock unter der Verwendung eines zweiten der Puffer als Referenz codiert wird, und
bei dem der erste der Puffer als fehlerbehaftet markiert wird.
bei dem ein Makroblock unter der Verwendung eines zweiten der Puffer als Referenz codiert wird, und
bei dem der erste der Puffer als fehlerbehaftet markiert wird.
14. Verfahren gemäß Anspruch 13,
bei dem ferner als Antwort auf das Markieren des ersten der Puffer als fehlerbehaftet, ein Zeitgeber gesetzt wird, um eine Zeitdauer anzuzeigen, seit der der Fehler aufgetreten ist und
bei dem als Antwort darauf, dass die Zeitdauer, seitdem der Fehler aufgetreten ist, größer ist als ein vorgegebener Schwellenwert, der dem ersten der Puffer zugeordnete Fehler gelöscht wird.
bei dem ferner als Antwort auf das Markieren des ersten der Puffer als fehlerbehaftet, ein Zeitgeber gesetzt wird, um eine Zeitdauer anzuzeigen, seit der der Fehler aufgetreten ist und
bei dem als Antwort darauf, dass die Zeitdauer, seitdem der Fehler aufgetreten ist, größer ist als ein vorgegebener Schwellenwert, der dem ersten der Puffer zugeordnete Fehler gelöscht wird.
15. Verfahren gemäß Anspruch 14, bei dem der vorgegebene
Schwellenwert der vollständigen Übertragungs- und
Verarbeitungszeit zwischen dem Encoder und dem Decoder
entspricht.
16. Verfahren gemäß einem der Ansprüche 10 bis 15,
bei dem eine Anzahl von verwendeten Puffern als Antwort hinsichtlich eines Fehlers, der den Encoder auffordert, zumindest einen Makroblock zu übertragen, der unabhängig von jedem anderen Makroblock codiert ist, erhöht wird, und
bei dem die Anzahl von verwendeten Puffern reduziert wird, falls nach einer vorgegebenen Zeitdauer keine Fehler auftreten, die den Encoder auffordern, zumindest einen Makroblock zu übertragen, der unabhängig von jedem anderen Makroblock codiert ist.
bei dem eine Anzahl von verwendeten Puffern als Antwort hinsichtlich eines Fehlers, der den Encoder auffordert, zumindest einen Makroblock zu übertragen, der unabhängig von jedem anderen Makroblock codiert ist, erhöht wird, und
bei dem die Anzahl von verwendeten Puffern reduziert wird, falls nach einer vorgegebenen Zeitdauer keine Fehler auftreten, die den Encoder auffordern, zumindest einen Makroblock zu übertragen, der unabhängig von jedem anderen Makroblock codiert ist.
17. Verfahren gemäß einem der Ansprüche 10 bis 16, bei dem
ferner jedem Makroblock eine bestimmten zeitliche
Referenznummer zugeordnet wird und
bei dem eine Tabelle vorgesehen ist, die jede temporäre
Referenznummer mit entweder einem bestimmten der Puffer oder
einem Wert abbildet, der anzeigt, dass ein einer bestimmten
temporären Referenznummer entsprechender Makroblock nicht
gespeichert wurde.
18. Verfahren zum Empfangen von Videodaten,
bei dem ein Decoder eine Mehrzahl von Makroblöcken empfängt, die relativ zu einer Mehrzahl von Puffern entsprechend einer Anzahl von Makroblöcken codiert sind, und
bei dem als Antwort auf einen Fehler hinsichtlich eines bestimmten Makroblocks der Decoder einen ersten, einem bestimmten Makroblock zugeordneten Puffer als fehlerbehaftet markiert.
bei dem ein Decoder eine Mehrzahl von Makroblöcken empfängt, die relativ zu einer Mehrzahl von Puffern entsprechend einer Anzahl von Makroblöcken codiert sind, und
bei dem als Antwort auf einen Fehler hinsichtlich eines bestimmten Makroblocks der Decoder einen ersten, einem bestimmten Makroblock zugeordneten Puffer als fehlerbehaftet markiert.
19. Verfahren gemäß Anspruch 18, bei dem nach dem
Fehlermarkieren eines ersten der Puffer der Decoder einen
Makroblock empfängt, der relativ zu einem zweiten der Puffer
codiert ist.
20. Verfahren gemäß Anspruch 18 oder 19, bei dem nach dem
Fehlermarkieren des ersten Puffers und als Antwort auf alle
Puffer des Decoders, die fehlerbehaftet sind, der Decoder
zumindest einen Makroblock anfordert, der unabhängig von jedem
anderen Makroblock codiert ist.
21. Verfahren gemäß Anspruch 20,
bei dem nach dem Anfordern von zumindest einem Makroblock, der unabhängig von jedem anderen Makroblock codiert ist, der Decoder einen Zeitgeber zurücksetzt und
bei dem der Decoder fortfährt, einen anderen Makroblock anzufordern, der unabhängig von jedem anderen Makroblock codiert ist, bis der Zeitgeber einen vorgegebenen Schwellenwert überschritten hat.
bei dem nach dem Anfordern von zumindest einem Makroblock, der unabhängig von jedem anderen Makroblock codiert ist, der Decoder einen Zeitgeber zurücksetzt und
bei dem der Decoder fortfährt, einen anderen Makroblock anzufordern, der unabhängig von jedem anderen Makroblock codiert ist, bis der Zeitgeber einen vorgegebenen Schwellenwert überschritten hat.
22. Vorrichtung zum Übertragen von Videodaten, mit
einer Mehrzahl von Referenzpuffern, die eine Mehrzahl von Makroblöcken speichern,
einer mit den Puffern gekoppelten Referenzprozessoreinheit, die mindestens einen Bewegungskompensationsvektor und ein dafür vorgesehenes bewegungskompensiertes Bild eines Makroblocks bereitstellt,
einer mit einem Eingangsvideosignal und mit einem Ausgangssignal der Referenzprozessoreinheit gekoppelten Subtraktionseinheit, um eine Differenz zwischen dem Eingangsvideosignal und dem Ausgangssignal auszugeben, und eine Encodierungssteuerung, der die Übertragung von Videodaten steuert, um jeden Makroblock mit einem der folgenden Makroblöcke zu versehen:
einem Makroblock, der unabhängig von jedem anderen Makroblock codiert ist und
einem Makroblock, der relativ zu einem von der Subtraktionseinheit ausgegebenen Ausgangssignal codiert ist,
wobei als Antwort auf einen Fehler in einem Makroblock, der einem ersten der Puffer entspricht, die Steuerung bewirkt, dass die Referenzprozessoreinheit einen zweiten der Puffer zur Fehlerkorrektur verwendet, falls dieser zweite Puffer nicht fehlerbehaftet ist.
einer Mehrzahl von Referenzpuffern, die eine Mehrzahl von Makroblöcken speichern,
einer mit den Puffern gekoppelten Referenzprozessoreinheit, die mindestens einen Bewegungskompensationsvektor und ein dafür vorgesehenes bewegungskompensiertes Bild eines Makroblocks bereitstellt,
einer mit einem Eingangsvideosignal und mit einem Ausgangssignal der Referenzprozessoreinheit gekoppelten Subtraktionseinheit, um eine Differenz zwischen dem Eingangsvideosignal und dem Ausgangssignal auszugeben, und eine Encodierungssteuerung, der die Übertragung von Videodaten steuert, um jeden Makroblock mit einem der folgenden Makroblöcke zu versehen:
einem Makroblock, der unabhängig von jedem anderen Makroblock codiert ist und
einem Makroblock, der relativ zu einem von der Subtraktionseinheit ausgegebenen Ausgangssignal codiert ist,
wobei als Antwort auf einen Fehler in einem Makroblock, der einem ersten der Puffer entspricht, die Steuerung bewirkt, dass die Referenzprozessoreinheit einen zweiten der Puffer zur Fehlerkorrektur verwendet, falls dieser zweite Puffer nicht fehlerbehaftet ist.
23. Vorrichtung gemäß Anspruch 22, bei der als Antwort auf alle
fehlerbehafteten Puffer die Steuerung die Übertragung von
zumindest einem Makroblock bewirkt, der unabhängig von jedem
anderen Makroblock codiert ist.
24. Vorrichtung gemäß Anspruch 23 oder 23, bei der als Antwort
auf das Empfangen einer Anforderung die Steuerung die
Übertragung von zumindest einem Makroblock bewirkt, der
unabhängig von jedem anderen Makroblock codiert ist.
25. Vorrichtung gemäß einem der Ansprüche 22 bis 24, bei dem
nach einer vorgegebenen Zeitdauer eine Anzahl von verwendeten
Puffern als Antwort auf Fehler erhöht und als Antwort auf das
Nicht-Empfangen von Fehlern erniedrigt wird.
26. Computerspeichermedium mit einem Computerprogramm
aufweisend
Mittel zum Abspeichern von Makroblöcken in einer Mehrzahl von Referenzpuffern,
Mittel zum Übertragen von Makroblöcken, die relativ zu jedem der Referenzpuffer codiert sind und
Mittel zum Verwenden eines zweiten der Puffer zur Fehlerkorrektur, wenn als Antwort auf einen Fehler hinsichtlich eines bestimmten, einem ersten der Puffer entsprechenden Makroblocks der zweite Puffer nicht fehlerbehaftet ist.
Mittel zum Abspeichern von Makroblöcken in einer Mehrzahl von Referenzpuffern,
Mittel zum Übertragen von Makroblöcken, die relativ zu jedem der Referenzpuffer codiert sind und
Mittel zum Verwenden eines zweiten der Puffer zur Fehlerkorrektur, wenn als Antwort auf einen Fehler hinsichtlich eines bestimmten, einem ersten der Puffer entsprechenden Makroblocks der zweite Puffer nicht fehlerbehaftet ist.
27. Computerspeichermedium gemäß Anspruch 26, welches ferner
Mittel zum Übertragen von zumindest einem Makroblock aufweist,
der unabhängig von jedem anderen Makroblock, als Antwort auf
einen Fehler hinsichtlich eines bestimmten Makroblocks und
allen fehlerbehafteten Puffern, codiert ist.
28. Computerspeichermedium gemäß Anspruch 26 oder 27, welches
ferner Mittel zum Bestimmen einer Anforderung für zumindest
einen Makroblock aufweist, der unabhängig von jedem anderen
Makroblock codiert ist.
29. Computerspeichermedium gemäß einem der Ansprüche 26 bis 28,
bei dem Mittel zum Verwenden eines zweiten Puffers zur
Fehlerkorrektur
Mittel zum Codieren eines Makroblocks unter Verwendung eines zweiten Puffers als Referenz und
Mittel zum Markieren des ersten Puffers als fehlerbehaftet aufweisen.
Mittel zum Codieren eines Makroblocks unter Verwendung eines zweiten Puffers als Referenz und
Mittel zum Markieren des ersten Puffers als fehlerbehaftet aufweisen.
30. Computerspeichermedium gemäß Anspruch 29, welches ferner
Mittel zum Setzen eines Zeitgebers, um die Zeitdauer anzuzeigen, seitdem der Fehler aufgetreten ist, und
Mittel zum Löschen eines Fehlers aufweist, der dem ersten der Puffer als Antwort auf die Tatsache zugeordnet ist, dass die Zeitdauer, seitdem der Fehler aufgetreten ist, größer ist als ein vorgegebener Schwellenwert.
Mittel zum Setzen eines Zeitgebers, um die Zeitdauer anzuzeigen, seitdem der Fehler aufgetreten ist, und
Mittel zum Löschen eines Fehlers aufweist, der dem ersten der Puffer als Antwort auf die Tatsache zugeordnet ist, dass die Zeitdauer, seitdem der Fehler aufgetreten ist, größer ist als ein vorgegebener Schwellenwert.
31. Computerspeichermedium gemäß Anspruch 30, bei dem der
vorgegebene Schwellenwert einer vollständigen Übertragungs- und
Verarbeitungszeit entspricht.
32. Computerspeichermedium mit einem Programm zum Empfangen von
Videodaten mit
Mittel zum Empfangen einer Mehrzahl von Makroblöcken, die relativ zu einer Mehrzahl einer Mehrzahl von Makroblöcken entsprechende Puffern codiert sind, und
Mittel zum Anfordern eines bestimmten wiederholt zu sendenden Makroblocks und zum Fehlermarkieren eines ersten der Puffer, der als Antwort auf einen Fehler hinsichtlich eines bestimmten Makroblocks dem bestimmten Makroblock zugeordnet ist.
Mittel zum Empfangen einer Mehrzahl von Makroblöcken, die relativ zu einer Mehrzahl einer Mehrzahl von Makroblöcken entsprechende Puffern codiert sind, und
Mittel zum Anfordern eines bestimmten wiederholt zu sendenden Makroblocks und zum Fehlermarkieren eines ersten der Puffer, der als Antwort auf einen Fehler hinsichtlich eines bestimmten Makroblocks dem bestimmten Makroblock zugeordnet ist.
33. Computerspeichermedium gemäß Anspruch 32, ferner aufweisend
Mittel zum Empfangen des relativ zu einem zweiten der Puffer
codierten Makroblöcke nachfolgend dem Anfordern des bestimmten
Makroblocks.
34. Verfahren zum Übertragen von Videodaten
bei dem ein Encoder Makroblöcke in einer Mehrzahl von Referenzpuffern speichert, wobei jedem Makroblock eine temporäre Referenzzahl zugeordnet ist,
bei dem eine Tabelle vorgesehen ist, die jede der temporären Referenznummern auf einen bestimmten der Puffer abbildet, wobei für eine Untermenge der temporären Referenznummern einen Wert anzeigt, dass ihr keiner der Puffer entspricht,
bei dem der Encoder Makroblöcke überträgt, die relativ zu jedem der Referenzpuffer codiert sind, und
bei dem als Antwort auf das Empfangen einer Fehlernachricht, die einen Fehler hinsichtlich eines bestimmten der relativ zu einem ersten der Puffer codierten Makroblöcke anzeigt, der Encoder die Tabelle und einen zweiten der Puffer zur Fehlerkorrektur verwendet, falls der zweite Puffer nicht fehlerbehaftet ist.
bei dem ein Encoder Makroblöcke in einer Mehrzahl von Referenzpuffern speichert, wobei jedem Makroblock eine temporäre Referenzzahl zugeordnet ist,
bei dem eine Tabelle vorgesehen ist, die jede der temporären Referenznummern auf einen bestimmten der Puffer abbildet, wobei für eine Untermenge der temporären Referenznummern einen Wert anzeigt, dass ihr keiner der Puffer entspricht,
bei dem der Encoder Makroblöcke überträgt, die relativ zu jedem der Referenzpuffer codiert sind, und
bei dem als Antwort auf das Empfangen einer Fehlernachricht, die einen Fehler hinsichtlich eines bestimmten der relativ zu einem ersten der Puffer codierten Makroblöcke anzeigt, der Encoder die Tabelle und einen zweiten der Puffer zur Fehlerkorrektur verwendet, falls der zweite Puffer nicht fehlerbehaftet ist.
35. Verfahren gemäß Anspruch 34, bei dem für jeden Puffer eine
Datenstruktur, die Werte für eine entsprechende der temporären
Referenznummern enthält,
eine Anzeige, dass ein Fehler aufgetreten ist,
eine Anzeige, dass ein Fehler eine Korrektur benötigt,
eine Anzeige, dass der Fehler für die Korrektur eines anderen Thread verwendet worden ist und
ein Zeitgeber vorgesehen ist, der die Zeitdauer anzeigt, seitdem die Korrektur des Puffers vorgenommen worden ist.
eine Anzeige, dass ein Fehler aufgetreten ist,
eine Anzeige, dass ein Fehler eine Korrektur benötigt,
eine Anzeige, dass der Fehler für die Korrektur eines anderen Thread verwendet worden ist und
ein Zeitgeber vorgesehen ist, der die Zeitdauer anzeigt, seitdem die Korrektur des Puffers vorgenommen worden ist.
36. Verfahren gemäß Anspruch 35,
bei dem als Antwort auf das Empfangen einer Fehlernachricht,
die beim Vergleich mit einem bestimmten, relativ zu einem ersten der Puffer codierten Makroblock, einen Fehler anzeigt, Werte für den ersten Puffer gesetzt werden, die anzeigen, dass ein Fehler aufgetreten ist, und dass ein Fehler eine Korrektur auf TRUE erfordert, und
bei dem ein Zeitgeber gesetzt wird, der eine Zeitdauer anzeigt, seitdem die Korrektur des Puffers auf 0 vorgenommen worden ist.
bei dem als Antwort auf das Empfangen einer Fehlernachricht,
die beim Vergleich mit einem bestimmten, relativ zu einem ersten der Puffer codierten Makroblock, einen Fehler anzeigt, Werte für den ersten Puffer gesetzt werden, die anzeigen, dass ein Fehler aufgetreten ist, und dass ein Fehler eine Korrektur auf TRUE erfordert, und
bei dem ein Zeitgeber gesetzt wird, der eine Zeitdauer anzeigt, seitdem die Korrektur des Puffers auf 0 vorgenommen worden ist.
37. Verfahren gemäß Anspruch 36, bei dem nach dem Verwenden der
Tabelle und einem zweiten der Puffer für eine Fehlerkorrektur
der Wert gesetzt wird, der anzeigt, dass ein Fehler eine
Korrektur auf FALSE erfordert.
38. Verfahren gemäß Anspruch 37, bei dem nach dem Setzen des
Wertes, der anzeigt, dass ein Fehler die Korrektur auf FALSE
erfordert, der Zeitgeber entsprechend des Taktes erhöht wird.
39. Verfahren gemäß Anspruch 38, bei dem als Antwort darauf,
dass der Zeitgeber größer ist als ein vorgegebener Wert ist,
der Wert gesetzt wird, der anzeigt, dass ein Fehler auf FALSE
aufgetreten ist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/389,170 US6658618B1 (en) | 1999-09-02 | 1999-09-02 | Error recovery method for video compression coding using multiple reference buffers and a message channel |
Publications (1)
Publication Number | Publication Date |
---|---|
DE10043188A1 true DE10043188A1 (de) | 2001-05-23 |
Family
ID=23537139
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE10043188A Ceased DE10043188A1 (de) | 1999-09-02 | 2000-09-01 | Fehlerkorrekturverfahren für Videokompressionskodierung unter Verwendung von mehreren Referenzpuffern und einem Nachrichtenkanal |
Country Status (4)
Country | Link |
---|---|
US (1) | US6658618B1 (de) |
JP (1) | JP2001111998A (de) |
DE (1) | DE10043188A1 (de) |
GB (1) | GB2356534B (de) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2377573B (en) * | 2001-07-11 | 2004-03-31 | Motorola Inc | Video transmission system, video tranmission unit and methods of encoding/decoding video data |
US6956600B1 (en) * | 2001-09-19 | 2005-10-18 | Bellsouth Intellectual Property Corporation | Minimal decoding method for spatially multiplexing digital video pictures |
US9108107B2 (en) | 2002-12-10 | 2015-08-18 | Sony Computer Entertainment America Llc | Hosting and broadcasting virtual events using streaming interactive video |
US8893207B2 (en) | 2002-12-10 | 2014-11-18 | Ol2, Inc. | System and method for compressing streaming interactive video |
US20090118019A1 (en) | 2002-12-10 | 2009-05-07 | Onlive, Inc. | System for streaming databases serving real-time applications used through streaming interactive video |
US9032465B2 (en) | 2002-12-10 | 2015-05-12 | Ol2, Inc. | Method for multicasting views of real-time streaming interactive video |
US9003461B2 (en) | 2002-12-10 | 2015-04-07 | Ol2, Inc. | Streaming interactive video integrated with recorded video segments |
US8840475B2 (en) | 2002-12-10 | 2014-09-23 | Ol2, Inc. | Method for user session transitioning among streaming interactive video servers |
US8949922B2 (en) | 2002-12-10 | 2015-02-03 | Ol2, Inc. | System for collaborative conferencing using streaming interactive video |
US20110126255A1 (en) * | 2002-12-10 | 2011-05-26 | Onlive, Inc. | System and method for remote-hosted video effects |
JP4081103B2 (ja) * | 2005-05-11 | 2008-04-23 | 株式会社東芝 | 動画像符号化装置 |
US8396135B2 (en) * | 2005-06-30 | 2013-03-12 | France Telecom | Video coding method and device |
KR100738075B1 (ko) * | 2005-09-09 | 2007-07-12 | 삼성전자주식회사 | 영상 부호화/복호화 장치 및 방법 |
US7716551B2 (en) * | 2005-12-07 | 2010-05-11 | Microsoft Corporation | Feedback and frame synchronization between media encoders and decoders |
US20080115185A1 (en) * | 2006-10-31 | 2008-05-15 | Microsoft Corporation | Dynamic modification of video properties |
US8296662B2 (en) * | 2007-02-05 | 2012-10-23 | Brother Kogyo Kabushiki Kaisha | Image display device |
US8385404B2 (en) | 2008-09-11 | 2013-02-26 | Google Inc. | System and method for video encoding using constructed reference frame |
US8760492B2 (en) | 2009-01-30 | 2014-06-24 | Polycom, Inc. | Method and system for switching between video streams in a continuous presence conference |
EP2448265A1 (de) | 2010-10-26 | 2012-05-02 | Google, Inc. | Lippensynchronisation in einer Videokonferenz |
US9154799B2 (en) | 2011-04-07 | 2015-10-06 | Google Inc. | Encoding and decoding motion via image segmentation |
US8638854B1 (en) | 2011-04-07 | 2014-01-28 | Google Inc. | Apparatus and method for creating an alternate reference frame for video compression using maximal differences |
US9210302B1 (en) | 2011-08-10 | 2015-12-08 | Google Inc. | System, method and apparatus for multipoint video transmission |
US8917309B1 (en) | 2012-03-08 | 2014-12-23 | Google, Inc. | Key frame distribution in video conferencing |
US9609341B1 (en) | 2012-04-23 | 2017-03-28 | Google Inc. | Video data encoding and decoding using reference picture lists |
EP2842337B1 (de) | 2012-04-23 | 2019-03-13 | Google LLC | Verwaltung von multireferenz-bildpuffern zur videodatencodierung |
US9014266B1 (en) | 2012-06-05 | 2015-04-21 | Google Inc. | Decimated sliding windows for multi-reference prediction in video coding |
US8791982B1 (en) | 2012-06-27 | 2014-07-29 | Google Inc. | Video multicast engine |
US9756331B1 (en) | 2013-06-17 | 2017-09-05 | Google Inc. | Advance coded reference prediction |
US9609275B2 (en) | 2015-07-08 | 2017-03-28 | Google Inc. | Single-stream transmission method for multi-user video conferencing |
CN115514975B (zh) * | 2022-07-19 | 2024-04-23 | 西安万像电子科技有限公司 | 一种编解码方法及装置 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5155594A (en) | 1990-05-11 | 1992-10-13 | Picturetel Corporation | Hierarchical encoding method and apparatus employing background references for efficiently communicating image sequences |
US5278793A (en) * | 1992-02-25 | 1994-01-11 | Yeh Tsuei Chi | Memory defect masking device |
US5497404A (en) * | 1992-07-14 | 1996-03-05 | General Instrument Corporation | Transmission error recovery for digital communication systems using variable length data packets where data is stored in header locations of memory |
CH688425A5 (fr) * | 1993-05-24 | 1997-09-15 | Suisse Electronique Microtech | Circuit électronique organisé en réseau matriciel de cellules. |
JP3630474B2 (ja) * | 1995-07-14 | 2005-03-16 | 沖電気工業株式会社 | 動画像伝送システム及び動画像伝送装置 |
JP3068002B2 (ja) * | 1995-09-18 | 2000-07-24 | 沖電気工業株式会社 | 画像符号化装置、画像復号化装置及び画像伝送システム |
US5588046A (en) * | 1995-10-23 | 1996-12-24 | Casio Phonemate, Inc. | Digital telephone answering device and method of testing message storage memory therein |
US5912676A (en) * | 1996-06-14 | 1999-06-15 | Lsi Logic Corporation | MPEG decoder frame memory interface which is reconfigurable for different frame store architectures |
WO1998002002A1 (en) * | 1996-07-05 | 1998-01-15 | Nippon Telegraph And Telephone Corporation | Image communication system and method |
JPH1079949A (ja) * | 1996-09-04 | 1998-03-24 | Oki Electric Ind Co Ltd | 画像符号化装置、画像復号化装置及び画像伝送システム |
JPH10191356A (ja) * | 1996-12-27 | 1998-07-21 | Oki Electric Ind Co Ltd | 画像符号化装置 |
JP3373130B2 (ja) * | 1997-03-24 | 2003-02-04 | 沖電気工業株式会社 | 画像復号化装置 |
EP0902593B1 (de) * | 1997-09-12 | 2006-11-08 | Oki Electric Industry Co., Ltd. | Videokodierer, -dekodierer und Übertragungssystem |
EP0940989A3 (de) * | 1998-03-02 | 2003-10-29 | Nippon Telegraph and Telephone Corporation | Videokommunikationssystem und -verfahren |
US6357028B1 (en) * | 1999-03-19 | 2002-03-12 | Picturetel Corporation | Error correction and concealment during data transmission |
-
1999
- 1999-09-02 US US09/389,170 patent/US6658618B1/en not_active Expired - Fee Related
-
2000
- 2000-08-08 GB GB0019509A patent/GB2356534B/en not_active Expired - Fee Related
- 2000-09-01 DE DE10043188A patent/DE10043188A1/de not_active Ceased
- 2000-09-04 JP JP2000267060A patent/JP2001111998A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
GB2356534B (en) | 2004-03-03 |
GB0019509D0 (en) | 2000-09-27 |
GB2356534A (en) | 2001-05-23 |
JP2001111998A (ja) | 2001-04-20 |
US6658618B1 (en) | 2003-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE10043188A1 (de) | Fehlerkorrekturverfahren für Videokompressionskodierung unter Verwendung von mehreren Referenzpuffern und einem Nachrichtenkanal | |
DE19635116C2 (de) | Verfahren zur Videokommunikation | |
DE69630173T2 (de) | Übertragungssystem und -einrichtung für sich bewegende Bilder | |
DE69030056T2 (de) | Videosignalkodierungsgerät, Kodierungsverfahren und Videosignalübertragungssystem | |
DE69637343T2 (de) | Videokodierungs- und -dekodierungsvorrichtung | |
EP2198610B1 (de) | Verfahren und vorrichtung zum erstellen eines kodierten ausgangsvideostroms aus mindestens zwei kodierten eingangsvideoströmen, sowie verwendung der vorrichtung | |
DE69626483T2 (de) | Speicherverwaltung in einem Videodekodierer | |
DE69435000T2 (de) | Bildkodierungsvorrichtung | |
DE69116869T2 (de) | Digitale bildkodierung mit einer zufallsabtastung der bilder | |
EP1195994A2 (de) | Verfahren zur Codierung und Decodierung von Bildsequenzen sowie Einrichtungen hierzu | |
DE69738176T2 (de) | Videodekodierer | |
DE69630297T2 (de) | Weiterentwickeltes fernsehsystem | |
DE69112865T2 (de) | Verarbeitungsverfahren von digitalen Kontrolldaten, die mit einem HD-MAC-Videosignal verbunden sind. | |
DE60107149T2 (de) | Digitales Bildausgabegerät | |
DE10296787B4 (de) | Selektive Prädikation für ein Intra-Codieren eines Videodatenblocks | |
DE69836899T2 (de) | Datenvermittlungsvorrichtung zum Schalten erhaltener Daten ohne die Codiereinheit zu verändern | |
DE10026392A1 (de) | Verfahren und Anordnung zur Kodierung von Livebildern in der Mikroskopie | |
DE10035109A1 (de) | Terminal und Verfahren zum Transportieren von Standbildern | |
DE69828144T2 (de) | Verfahren und vorrichtung zur videocodierung und -decodierung | |
EP0836785B1 (de) | Verfahren zur dekodierung und kodierung eines komprimierten videodatenstroms mit reduziertem speicherbedarf | |
DE69736926T2 (de) | Videokodierer, -dekodierer und Übertragungssystem | |
EP0533675B1 (de) | Übertragungssystem | |
DE102006012449A1 (de) | Verfahren zum Dekodieren eines Datenstroms und Empfänger | |
DE102012202315A1 (de) | Videosystem zur Darstellung von Bilddaten, Verfahren und Computerprogramm | |
EP0336510A2 (de) | Prädiktiver Standbildcodierer |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8127 | New person/name/address of the applicant |
Owner name: POLYCOM, INC., MILPITAS, CALIF., US |
|
8131 | Rejection |