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 Nachrichtenkanal

Info

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
Application number
DE10043188A
Other languages
English (en)
Inventor
Qunshan Gu
Timothy Root
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Polycom Inc
Original Assignee
Picturetel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Picturetel Corp filed Critical Picturetel Corp
Publication of DE10043188A1 publication Critical patent/DE10043188A1/de
Ceased legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network 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/65Transmission of management data between client and server
    • H04N21/658Transmission by the client directed to the server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods 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/164Feedback from the receiver or from the transmission channel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/17Methods 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/176Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/89Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network 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/63Control 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/637Control signals issued by the client directed to the server or network components
    • H04N21/6377Control signals issued by the client directed to the server or network components directed to server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements 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/18Automatic 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.
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

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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
DE10043188A 1999-09-02 2000-09-01 Fehlerkorrekturverfahren für Videokompressionskodierung unter Verwendung von mehreren Referenzpuffern und einem Nachrichtenkanal Ceased DE10043188A1 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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