DE19536401B4 - Method and device for coding and decoding data - Google Patents
Method and device for coding and decoding data Download PDFInfo
- Publication number
- DE19536401B4 DE19536401B4 DE19536401A DE19536401A DE19536401B4 DE 19536401 B4 DE19536401 B4 DE 19536401B4 DE 19536401 A DE19536401 A DE 19536401A DE 19536401 A DE19536401 A DE 19536401A DE 19536401 B4 DE19536401 B4 DE 19536401B4
- Authority
- DE
- Germany
- Prior art keywords
- data
- memory
- codeword
- codewords
- bit
- 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.)
- Expired - Fee Related
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4006—Conversion to or from arithmetic code
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/436—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Image Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Verfahren
zum Codieren eines Datenstroms, das folgendes umfasst:
a) ein
eingehender Datenstrom wird in parallele Datenströme während der
Codierung durch einen Entropiecodierer geteilt und es werden von
dem Entropiecodierer Codewörter
variabler Länge
ausgegeben, wobei die Codewörter
den geteilten Datenstrom darstellen;
b) die ausgegebenen Codewörter variabler
Länge werden in
einer Ordnung geordnet, die am Beginn eines jeden Codeworts festgehalten
ist; und
c) die geordneten Codewörter variabler Länge werden
in Codewörter
fester Länge
transformiert.A method of encoding a data stream comprising:
a) an incoming data stream is split into parallel data streams during encoding by an entropy coder and variable length codewords are output from the entropy coder, the codewords representing the shared data stream;
b) the output variable length codewords are ordered in an order noted at the beginning of each codeword; and
c) the ordered variable length codewords are transformed into fixed length codewords.
Description
Die Erfindung betrifft Verfahren und eine Einrichtung zum Codieren und Decodieren von Daten und betrifft insbesondere das Gebiet der Datenkompressions- und -Dekompressionssysteme; darüber hinaus betrifft die Erfindung ein Verfahren und eine Einrichtung zum parallelen Codieren und Decodieren von Daten in Kompressions/Dekompressionssystemen.The The invention relates to methods and apparatus for coding and Decoding of data and in particular concerns the field of data compression and decompression systems; about that In addition, the invention relates to a method and a device for parallel coding and decoding of data in compression / decompression systems.
Heutzutage wird Datenkompression in großem Umfang insbesondere zum Speichern und Übertragen großer Datenmengen verwendet. Beim Stand der Technik sind verschiedene Datenkompressionstechniken bekannt, welche in zwei breite Kategorien eingeteilt werden können, nämlich ein verlustbehaftetes und ein verlustfreies Codieren. Verlustbehaftetes Codieren schließt ein Codieren ein, welches auf den Verlust von Information hinausläuft, so daß es keine Garantie für eine einwandfreie Rekonstruktion der ursprünglichen bzw. Originaldaten gibt. Bei verlustfreier Kompression wird alle Information wieder erhalten und die Daten werden in einer Weise komprimiert, die eine einwandfreie Rekonstruktion zuläßt.nowadays will data compression in large Scope especially for storing and transferring large amounts of data used. The prior art discloses various data compression techniques which can be divided into two broad categories, namely one lossy and lossless coding. lossy Encoding closes coding, which results in the loss of information, so that it no guarantee for a perfect reconstruction of the original or original data gives. With lossless compression, all information is restored and the data is compressed in a way that is one perfect reconstruction permits.
Bei verlustfreier Kompression werden eingegebene Symbole in ausgegebene Codewörter umgesetzt. Wenn die Kompression erfolglich ist, werden die Codewörter in weniger Bits dargestellt als die Anzahl eingegebener Symbole. Verlustfreie Codiermethoden enthalten Wörterbuchmethoden des Codierens (z.B. Lempel-Ziv), ein Lauflängencodieren, ein enumeratives Codieren und ein Entropie-Codieren.at lossless compression will be entered symbols in output codewords implemented. If the compression is successful, the codewords in less bits than the number of symbols entered. lossless Coding methods include dictionary methods coding (e.g., Lempel-Ziv), a run-length coding, an enumerative Coding and entropy coding.
Entropie-Codieren besteht aus einem verlustfreien Codierverfahren, bei welchem versucht wird, Daten nahe bei der Entropie-Grenze mit Hilfe bekannter oder geschätzer Symbolwahrscheinlichkeiten zu komprimieren. Entropie-Codes enthalten Huffman-Codes, arithmetische Codes und binäre Entropie-Codes. Binäre Entropie-Codierer sind verlustfreie Codierer, welche nur auf binäre (ja/nein) Entscheidungen wirken, die oft als das wahrscheinlichste Symbol (MPS) und das am wenigsten wahrscheinliche Symbol (LPS) ausgedrückt sind. Beispiel von binären Entropie-Codierern enthalten IBM's Q-Coder und einen Coder, der als der B-Coder bezeichnet ist. (Bezüglich mehr Information zu dem B-Coder siehe US Patent Nr. 5,272,47 A mit dem Titel "Verfahren und Einrichtung zum Entropie-Codieren" (J.D. Allen), eingereicht am 21. Dezember 1993 von der Anmelderin der vorliegenden Erfindung. Siehe ebenfalls M.J. Gormisch and J.D. Allen, "Finite State Machine Binary Entropy Coding," Abstract in Proc. Data Compression Conference, 30. March 1993, Snowbird, UT, S.449.) Der B-Coder ist ein binärer Entropie-Coder, welcher einen endlichen Automaten zur Kompression benutzt.Entropy coding consists of a lossless coding method in which attempts are made , data close to the entropy boundary using known or estimated symbol probabilities to compress. Entropy codes contain Huffman codes, arithmetic Codes and binary Entropy codes. binary Entropy encoders are lossless encoders which are only binary (yes / no) Decisions often act as the most likely symbol (MPS) and the least probable symbol (LPS). example from binary Entropy encoders contain IBM's Q coder and a coder referred to as the B coder. (Regarding more Information about the B-coder See US Patent No. 5,272,447 A entitled "Method and Apparatus for Entropy Coding" (J.D. Allen), filed on December 21, 1993 by the assignee of the present invention. See also M.J. Gormisch and J.D. Allen, "Finite State Machine Binary Entropy Coding, "Abstract in proc. Data Compression Conference, March 30, 1993, Snowbird, UT, p.449). The B-coder is a binary entropy coder which used a finite automaton for compression.
Zum
Codieren schafft das Kontextmodell
Eine Schwierigkeit bei Decodierern, die binäre Entropie-Codes verwenden, wie IBM's Q-Coder und B-Coder, besteht darin, daß sie langsam sind, selbst wenn sie in Hardware ausgeführt sind. Diese Betriebsweise erfordert eine einzige große langsame Rückkopplungsschleife. Um den Decodierprozeß neu darzustellen, verwendet das Kontextmodell früher decodierte Daten, um einen Kontext zu erzeugen. Der Wahrscheinlichkeitsbewertungsmodul benutzt den Kontext, um eine Wahrscheinlichkeitsklasse zu erzeugen. Der Bitstrom-Generator verwendet die Wahrscheinlichkeitsklasse und die komprimierten Daten, um zu bestimmen, ob das nächste Bit das wahrscheinliche oder unwahrscheinliche Ergebnis ist. Der Wahrscheinlichkeits-Bewertungsmodul benutzt das wahrscheinliche/unwahrscheinliche Ergebnis, um ein Ergebnisbit zu erzeugen (und um die Wahrscheinlichkeitsbewertung für den Kontext zu aktualisieren). Das Ergebnisbit wird von dem Kontextmodell verwendet, um die Entwicklung von früheren Daten zu aktualisieren. Alle diese Schritte sind zum Decodieren eines einzigen Bits erforderlich. Da das Kontextmodell auf das Ergebnisbit warten muss, um dessen Entwicklung zu aktualisieren, bevor es den nächsten Kontext schaffen kann, muss das Decodieren des nächsten Bits warten. Es sollte vermieden werden, darauf zu warten, dass die Kopplungsschleife vor einem Decodieren des nächsten Bits vervollständigt ist. Mit anderen Worten, es sollte möglichst mehr als ein Bit oder ein Codewort zu einer bestimmten Zeit decodiert werden, um die Geschwindigkeit zu erhöhen, mit welcher komprimierte Daten decodiert werden.A difficulty with decoders that use binary entropy codes, such as IBM's Q-coder and B coders are that they are slow, even if they are hardware-based. This mode of operation requires a single large slow feedback loop. To re-render the decoding process, the context model uses earlier decoded data to create a context. The probability evaluation module uses the context to generate a probability class. The bitstream generator uses the likelihood class and the compressed data to determine if the next bit is the likely or improbable result. The probabilistic evaluation module uses the probable / improbable result to generate a result bit (and to update the probability score for the context). The result bit is used by the context model to update the evolution of previous data. All of these steps are required to decode a single bit. Since the context model must wait for the result bit to update its evolution before it can create the next context, the decoding of the next bit must wait. It should be avoided to wait for the coupling loop to complete before decoding the next bit. In other words, more than one bit or one codeword should be decoded as much as possible at a particular time to increase the rate at which compressed data is decoded.
Eine weitere Schwierigkeit bei Decodierern mit binären Entropie-Codes besteht darin, dass Daten veränderlicher Länge verarbei werden müssen. In den meisten Fällen haben die zu codierenden Code-Worte variable Längen. Andererseits codieren andere Systeme Symbole variabler Länge (uncodierte Daten). Bei einem Verarbeiten der Daten variabler Länge müssen die Daten auf einen Bitpegel verschoben werden, um die korrekten, nächsten Daten für die Decodier- oder Codieroperation zu schaffen. Diese Bitpegel-Manipulationen an dem Datenstrom können eine kostspielige und/oder langsame Hardware und/oder Software erfordern. Ferner muss bei herkömmlichen Systemen dieses Verschieben in zeitkritischen Rückkopplungsschleifen vorgenommen werden, welche die Leistungsfähigkeit des Decodierers begrenzen. Es würde also vorteilhaft sein, die Bitpegel-Manipulation des Datenstroms aus zeitkritischen Rückkopplungsschleifen zu entfernen, so dass eine Parallelität angewendet werden könnte, um die Geschwindigkeit zu erhöhen.A There is further difficulty with decoder with binary entropy codes in that data is more variable Length processed Need to become. In most cases the code words to be coded have variable lengths. On the other hand, code other systems variable length symbols (uncoded data). at For processing variable length data, the data must be at a bit level be moved to the correct next data for the decoder or to create a coding operation. These bit level manipulations on the data stream require expensive and / or slow hardware and / or software. Furthermore, in conventional Systems made this move in time-critical feedback loops which are the efficiency limit the decoder. It would So be beneficial, the bit level manipulation of the data stream from time-critical feedback loops so that parallelism could be applied to to increase the speed.
Aus
Aus
Aus
Aufgabe der Erfindung ist es ein Verfahren zum Codieren eines Datenstroms bereitzustellen, das eine schnellere Codierung eines Datenstroms erlaubt, ohne die herkömmlichen Übertragungswege zu modifizieren. Weiter soll ein entsprechendens Codiersystem, Decodiersystem, Codierer und Decodierer geschaffen werden.task The invention is a method of encoding a data stream to provide a faster encoding of a data stream allowed, without the traditional transmission paths to modify. Furthermore, a corresponding coding system, decoding system, Encoder and decoder are created.
Vorstehende Aufgabe wird durch die Gegenstände der Ansprüche 1, 8, 61, 70, 75, 86, 88, 92 und 105 gelöst. Weiter gehende Ausführungsformen gehen aus den üblichen Ansprüchen hervor.above Task is through the objects the claims 1, 8, 61, 70, 75, 86, 88, 92 and 105 solved. Further embodiments go out of the ordinary claims out.
Der Codierer und der Decodierer der Erfindung erzeugen ein ausgeglichenes, paralleles Entropie-System, welches sowohl ein Real zeit-Codieren als auch ein Realzeit-Decodieren in einer preiswerten, sehr schnellen Hardware durchführt.Of the Encoder and the decoder of the invention generate a balanced, parallel entropy system, which is both a real-time encoding as well as real-time decoding in a cheap, very fast Hardware performs.
Somit sind Verfahren und Einrichtungen zum Dekomprimieren und Komprimieren von Daten geschaffen. Ein Codierer hat für eine Verwendung in einem Kompressionssystem einen Decodierer zum Decodieren von mittels des Codierers erzeugter Information. Der Codierer der Erfindung schliesst einen Coder zum Erzeugung von Codewort-Information entsprechend Daten ein. Der Codierer schliesst auch eine Umordnungseinheit ein, die einen codierten Datenstrom entsprechend der Codewort-Information von dem Coder erzeugt. Die Umordnungseinheit weist eine Durchlaufzähl-Umordnungseinheit, um Codewörter in einer Decodierreihenfolge anzuordnen, und eine Bitpackeinheit auf, um Codewört variabler Länge zu verschachtelten Worten fester Länge zu verknüpfen und um die verschachtelten Worte fester Länge in einer von dem Decodierer geforderten Reihenfolge abzugeben.Consequently are methods and devices for decompressing and compressing created by data. An encoder has to be used in one Compression system a decoder for decoding by means of Encoder generated information. The encoder of the invention concludes a coder for generating codeword information accordingly Data. The encoder also includes a rearrangement unit, the one coded data stream corresponding to the codeword information generated by the coder. The rearrangement unit has a pass count rearrangement unit, around codewords in a decode order, and a bitpack unit on, to codewords variable length to join nested words of fixed length and around the interleaved fixed length words in one of the decoders to deliver the required order.
Nachfolgend wird die Erfindung anhand von bevorzugten Ausführungsformen unter Bezugnahme auf die anliegenden Zeichnungen im einzelnen beschrieben. Es zeigen:following the invention will be described with reference to preferred embodiments to the accompanying drawings described in detail. Show it:
Nunmehr wird ein Verfahren und eine Einrichtung zum parallelen Codieren und Decodieren von Daten beschrieben. In der folgenden Beschreibung sind zahlreiche spezifische Einzelheiten angegeben, wie beispielsweise eine spezielle Anzahl von Bits, eine Anzahl von Codierer, spezifische Wahrscheinlichkeiten, Datentypen, usw., um ein genaues Verständnis der bevorzugten Ausführungsformen der Erfindung zu schaffen. Für den Fachmann ist selbstverständlich, daß die vorliegende Erfindung auch ohne diese spezifischen Details in der Praxis ausgeführt werden kann. Ebenso sind bekannte Schaltungen in Blockdiagrammform nicht im einzelnen dargestellt, um das Verständnis der Erfindung nicht unnötig zu erschweren.Now discloses a method and apparatus for parallel coding and decoding data. In the following description a number of specific details are given, such as a special number of bits, a number of encoders, specific ones Probabilities, data types, etc., to get an accurate understanding of preferred embodiments to provide the invention. For the expert is of course that the present invention without these specific details in the Practice performed can be. Likewise, known circuits are in block diagram form not shown in detail in order not to complicate the understanding of the invention unnecessarily.
Einige Teile der detaillierten Beschreibung, welche folgen, sind in Form von Algorithmen und symbolischen Darstellungen von Operationen an Datenbits in einem Computer-Speicher dargestellt. Diese algorithmischen Beschreibungen und Darstellungen sind die Mittel, die von Fachleuten auf dem Datenverarbeitungsgebiet verwendet werden, um den Inhalt ihrer Arbeit anderen Fachleuten möglichst effektiv zu übermitteln. Ein Algorithmus wird hier und im allgemeinen als eine in sich wiederspruchfreie Folge von Schritten betrachtet, die zu einem gewünschten Ergebnis führen. Die Schritte sind solche, welche physikalische Verarbeitungen von physikalischen Größen erfordern. Üblicherweise, obwohl nicht notwendigerweise, nehmen diese Größen die Form von elektrischen oder magnetischen Signalen an, die gespeichert, übertragen, verknüpft, verglichen oder auf andere Weise verarbeitet werden können. Es hat sich immer, prinzipiell aus Gründen einer gemeinsamen Anwendung als günstig erwiesen, auf diese Signale als Bits Werte, Elemente, Symbole, Zeichen, Terme, Zahlen o.ä. zu verweisen.Some portions of the detailed description which follow are presented in the form of algorithms and symbolic representations of operations on data bits in a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the content of their work to others skilled in the art. One Algorithm is here and generally considered to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical processing of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, linked, compared, or otherwise processed. It has always proven to be beneficial, principally for reasons of common application, to these signals as bits of values, elements, symbols, characters, terms, numbers, or the like. to refer.
Es sollte jedoch bedacht werden, daß alle diese und ähnliche Terme den entsprechenden physikalischen Größen zuzuordnen sind und nur bequeme Bezeichnungen sind, die bei diesen Größen angewendet werden. Wenn es nicht speziell ausgeführt wird oder sonst aus den folgenden Erörterungen offensichtlich wird, weisen überall in der Erfindung Erläuterungen, die Begriffe verwenden, wie, "Verarbeiten" oder "Berechnen" oder "Rechnen" oder "Bestimmen" oder "Anzeigen" o.ä., auf die Funktion und Prozesse eines Computersystems oder einer ähnlichen elektronischen Berechnungsvorrichtung hin, welche Daten, welche als physikalische, (elektronische) Größen in den Computersystem-Registern und -Speichern dargestellt sind, bearbeitet und in andere Daten umformt, welche in ähnlicher Weise als physikalische Größen in den Rechensystem-Speichern oder -registern oder anderen derartigen Informationspeicher-Übertragungs- oder Anzeigevorrichtungen dargestellt sind.It However, it should be remembered that all these and similar Terms are assigned to the corresponding physical quantities and only convenient terms that are applied to these sizes. If it does not run specially will become apparent or otherwise evident from the following discussions throughout the invention explanations, use terms such as, "processing" or "calculating" or "calculating" or "determining" or "displaying" or similar, to which Function and processes of a computer system or similar electronic computing device, which data, which as physical, (electronic) sizes in the computer system registers and memories are displayed, edited and other data transformed, which in similar Way as physical quantities in the Computing system memories or registers or other such information storage transfer or display devices are shown.
Die Erfindung betrifft auch eine Einrichtung zum Durchführen der Operationen. Diese Einrichtung kann speziell für die geforderten Zwecke ausgeführt werden, oder sie kann einen Universalrechner aufweisen, der selektiv durch ein in dem Computer gespeichertes Programm aktiviert oder rekonfiguriert wird. Die hier dargestellten Algorithmen und Anzeigen sind nicht spezifisch auf einen speziellen Computer oder eine andere Einrichtung bezogen. Verschiedene Universalrechner können mit Programmen entsprechend den hier wiedergegebenen Lehren verwendet werden, oder es kann sich als vorteilhaft erweisen, eine noch mehr spezialisierte Einrichtung auszuführen, um die verschiedenen Verfahrensschritte durchzuführen. Die geforderte Struktur einer Vielzahl dieser Geräte ergibt sich aus der nachstehenden Beschreibung. Außerdem wird die Erfindung nicht bezüglich irgendeiner speziellen Programmiersprache beschrieben. Vielmehr können eine Vielzahl von Programmiersprachen verwendet werden, um die Lehren der Erfindung, wie sie nachstehend beschrieben ist, auszuführen.The The invention also relates to a device for carrying out the Operations. This device can be designed specifically for the required purposes, or it may comprise a general-purpose computer that selectively through activates or reconfigures a program stored in the computer becomes. The algorithms and displays shown here are not specifically to a specific computer or other device based. Different general purpose computers can work with programs accordingly used herein or it may prove to be an even more specialized facility perform, to perform the various process steps. The required structure a variety of these devices will be apparent from the following description. In addition, will not related to the invention any special programming language. Much more can A variety of programming languages are used to teach the lessons of the invention as described below.
Paralleles Entropie-CodierenParallel entropy coding
Die Erfindung schafft ein paralleles Entropie-Codiersystem. Das System weist einen Codierer und einen Decodierer auf. In einer Ausführungsform führt der Codierer ein Codieren bei Daten in Realzeit durch. In ähnlicher Weise führt in einer Ausführungsform der Decodierer der Erfindung ein Decodieren bei Daten in Realzeit durch. Der Realzeit-Codierer und der Realzeit-Decodierer bilden zusammen ein ausgeglichenes Codiersystem.The Invention provides a parallel entropy coding system. The system comprises an encoder and a decoder. In one embodiment leads the Encoders encode data in real time. In similar Way leads in one embodiment the decoder of the invention decodes data in real time by. The real-time coder and the real-time decoder form together a balanced coding system.
Die Erfindung schafft ein System, welches verlustfrei codierte Daten parallel decodiert. Die Daten werden parallel decodiert mit Hilfe von mehreren Decodier-Ressourcen. Jede der mehreren Decodier-Ressourcen ist Daten (z.B. Codewörtern) aus dem zu decodierenden Datenstrom zugeordnet. Die Zuordnung des Datenstroms kommt unterwegs (on the fly) vor, wobei die Decodier-Ressourcen Daten gleichzeitig decodieren, um dadurch den Datenstrom parallel zu decodieren. Um die Datenzuordnung in einer Weise zu ermöglichen, welche eine wirksame Verwendung der Decodier-Ressourcen ermöglicht, wird der Datenstrom geordnet. Dies wird als Parallelverarbeiten des Datenstroms bezeichnet. Das Ordnen von Daten läßt es zu, daß jede Decodierressource irgendwelche oder alle codierten Daten decodiert, ohne auf ein Rückkoppeln von dem Kontextmodell zu warten.The The invention provides a system which provides lossless coded data decoded in parallel. The data is decoded in parallel with help of several decoding resources. Each of the multiple decoding resources is Data (e.g., codewords) assigned from the data stream to be decoded. The assignment of the Data stream occurs on the fly, with the decoding resources Simultaneously decode data to thereby parallel the data stream to decode. To allow data mapping in a way which enables efficient use of the decoding resources becomes the data stream orderly. This is called parallel processing of the data stream. The ordering of data allows, that each Decoding resource decodes any or all encoded data, without on a feedback to wait for the context model.
In
In
einer Ausführungsform
liefert jeder der Decodierer
Die
decodierten Daten werden von dem Decodierer
Ein
unabhängig
arbeitendes Kontextmodell
Das Kontextmodell schafft den Speicherteil des Codiersystems und teilt einen Datensatz (z.B. ein Bild) auf verschiedene Kategorien (z.B. Kontextfächer) basierend auf dem Speicher auf. In der Erfindung werden die Kontextfächer als unabhängig geordnete Datensätze betrachtet. In einer Ausführungsform hat jede Gruppe von Kontextfächern ihr eigenes Wahrscheinlichkeits-Bewertungsmodell und jedes Kontextfach hat seinen eigenen Zustand (wobei Wahrscheinlichkeits-Bewertungsmodelle gemeinsam benutzt werden). Daher könnte jedes Kontextfach ein anderes wahrscheinlichkeits-Bewertungsmodell und/odereinen anderenBitstrom-Generator benutzen. Folglich sind die Daten geordnet oder parallel verarbeitet, und Daten aus dem Datenstrom sind den einzelnen Codierern zum Codieren zugeordnet.The Context model creates the memory part of the coding system and splits a record (e.g., a picture) of different categories (e.g. Context subjects) based on the memory up. In the invention, the context fans are called independently ordered records considered. In one embodiment has every group of context fans their own probability rating model and each context box has its own state (being probability assessment models to be shared). Therefore, every context box could be one another probability assessment model and / or use another bitstream generator. Consequently are the data is ordered or processed in parallel, and data from the Data streams are associated with the individual encoders for encoding.
Parallelität dem klassischen Entropie-Codiermodell hinzufügenParallelism the classic Add entropy coding model
Um
den Datenstrom parallel anzuordnen, können die Daten gemäß einem
Kontext, einer Wahrscheinlichkeit, einem Tiling, einer Codewort-Folge
(basierend auf Codewörtern)
usw. aufgeteilt werden. Das Umordnen des codierten Datenstroms ist
unabhängig
von der Parallelität
eine Methode, die verwendet wird, um Daten oder die Wahrscheinlichkeit
in einem anderen Punkt parallel anzuordnen. Ein Parallel-Codiererteil
eines Codiersystems der Erfindung, dem Daten zugeführt worden
sind, die durch ein Kontextmodell (CM) differenziert worden sind,
ist in
In
Das
Kontextmodell
Die
in
Ein ähnliches
Decodiersystem, das den PEM benutzt, um die Daten zu differenzieren
und sie an parallele BGs zu senden, ist in
Es existieren zahlreiche Ausführungen von den parallelen Codiersystemen der Erfindung. In einer Ausführungsform können die codierten Datenströme, die den mehreren Kontextfächern entsprechen, in einen Strom verschachtelt werden, welcher durch die Anforderungen der verschiedenen Codierer geordnet ist. In einer Ausführungsform der Erfindung werden die codierten Daten so geordnet, daß jeder Codierer ständig mit Daten beliefert wird, obwohl die codierten Daten dem Decodierer in einem Strom zugeführt werden. Die vorliegende Erfindung arbeitet mit allen Datentypen, einschließlich Bilddaten.It There are numerous designs from the parallel coding systems of the invention. In one embodiment can the coded data streams, the several context fans to be nested in a stream which passes through the requirements of the different coders is ordered. In a embodiment According to the invention, the coded data are arranged so that each Coder constantly although the encoded data is supplied to the decoder fed in a stream become. The present invention works with all data types, including Image data.
Mit Hilfe kleiner einfacher Codierer, die preiswert in integrierten Schaltungen unterteilt sein können, können codierte Daten schnell parallel decodiert werden. In einer Ausführungsform sind die Codierer in Hardware mit Hilfe feldprogrammierbarer Gate-Array-(FPGA-)Chips oder mit Hilfe eines anwendungsspezifischen integrierten Schaltungs-(ASIC-)Chips ausgeführt. Die Kombination von Parallelität und einfachen Bitstrom-Generatoren ermöglicht das Decodieren von codierten Daten mit Geschwindigkeiten, die über denjenigen herkömmlicher Decodierer liegen, wobei der Kompressionswirkungsgrad der herkömmlichen Decodiersysteme erhalten bleibt oder überschritten wird.With Help small simple coders that are inexpensive in integrated Circuits can be subdivided, can be coded Data decoded quickly in parallel. In one embodiment are the encoders in hardware using Field Programmable Gate Array (FPGA) chips or with the help of an application specific integrated circuit (ASIC) chip executed. The combination of parallelism and simple bitstream generators allows the decoding of coded Data at speeds exceeding those of conventional Decoder lie, the compression efficiency of the conventional Decoding systems is maintained or exceeded.
Kanal-Ordnen von mehreren DatenströmenChannel ordering of several streams
Es
gibt viele Ausführungsergebnisse
und Probleme, welche eine Systemausführung beeinflussen. Einige
von diesen werden nachstehend erwähnt. Jedoch verwenden die in
In
einer Ausführungsform
sind die Codeströme
konzentriert und werden aneinanderhängend zu dem Decodierer abgegeben.
Ein Ver teilerkopf enthält
Zeiger zu der anfänglichen
Bitstelle jedes Stroms.
Dieses Verfahren erfordert einen ganzen codierten Rahmen, der in dem Decodierer und für praktische Zwecke in dem Codierer zu speichern ist. Wenn ein Realzeitsystem oder ein weniger gestörter (bursty) Datenfluß erforderlich ist, dann können zwei Rahmenpuffer für ein Anstauen (banking) sowohl an dem Codierer als auch an dem Decodierer verwendet werden.This method requires a whole encoded frame to be used in the decoder and for practical purposes Purpose in the encoder is to save. If a real-time system or less bursty data flow is required, then two frame buffers may be used for banking both at the encoder and at the decoder.
Datenreihenfolge bezüglich Codewort-ReihenfolgeData order regarding codeword order
Ein Decodierer decodiert Codewörter in einer vorgegebenen deterministischen Reihenfolge. Bei parallelem Codieren ist die Reihenfolge der Anforderungen an den Codestrom deterministisch. Folglich genügt wenn die Codewörter von parallelen Codeströmen in der richtigen Reihenfolge an dem Codierer verschachtelt werden, ein einziger Codestrom. Die Codewörter werden dann an den Decodierer in derselben Reihenfolge auf einer "Just-in-Time"-Basis. An dem Decodierer bestimmt ein Modell des Decodierers die Codewort-Reihenfolge und packt die Codewörter in einen einzigen Strom. Dieses Modell kann ein aktueller Decodierer sein.One Decoder decodes codewords in a given deterministic order. In parallel Encoding is the order of the code stream requests deterministic. Consequently, if enough the codewords of parallel code streams be nested in the correct order on the encoder, a single code stream. The codewords are then sent to the decoder in the same order on a just-in-time basis. On the decoder determines Model the decoder the codeword order and pack the codewords into a single stream. This model can be a current decoder be.
Eine Schwierigkeit beim Übergeben der Daten an die parallelen Decodierelemente ergibt sich, wenn Daten variable Längen haben. Ein Herausnehmen eines Stroms von Codewörtern variabler Länge erfordert eine Bit-Schiebeeinheit, um die Codewörter auszurichten. Bitschiebeeinheiten sind oft teuer und/oder langsam, wenn sie in Hardware ausgeführt sind. Die Steuerung der Bit-Schiebeeinheit hängt von der Größe des speziellen Codewortes ab. Diese Steuerung einer Rückkopplungsschleife verhindert, daß ein Verschieben variabler Längen schnell durchgeführt wird. Die Wirksamkeit, mehreren Decodierern einen einzigenStrom zuzuführen, kann nicht realisiert werden, wenn der Prozeß, den Strom nicht zu packen in einer einzigen Bit-Schiebeeinheit durchgeführt wird, die nicht schnell genug ist, um die mehreren Decodierer zu versorgen.A Difficulty in handing over The data to the parallel decoding elements is obtained when data variable lengths to have. Removing a stream of variable length codewords requires one Bit shift unit to the codewords align. Bit shift units are often expensive and / or slow, when running in hardware are. The control of the bit shift unit depends on the size of the particular one Codewords off. This control of a feedback loop prevents the existence Move variable lengths done quickly becomes. The effectiveness, multiple decoders a single stream supply, can not be realized if the process fails to grab the current is performed in a single bit shift unit that is not fast is enough to supply the multiple decoders.
Bei der Lösung, die in der Erfindung angeboten ist, wird das Problem, die codierten Daten auf die parallelen Codierer zu verteilen, von der Ausrichtung der Codewörter variabler Längen für ein Decodieren abgetrennt. Die Codewörter in jedem unabhängigen Datenstrom werden in Worte fester Länge gepackt, sogenannte verschachtelte Worte. An dem Decodiererende des Kanals können diese verschachtelten Worte auf die parallelen Decodierereinheiten mit Hilfe schnell arbeitender, fest verdrahteter Datenleitungen und einer einfachen Steuerschaltung verteilt werden.at the solution, which is offered in the invention, the problem is coded Distribute data to the parallel encoders, from the alignment the codewords variable lengths for a Decoding separated. The codewords in each independent Data streams are packed into words of fixed length, so-called nested ones Words. At the decoder end of the channel, these can be nested Words on the parallel decoder units using fast-acting, hard-wired data lines and a simple control circuit be distributed.
Es
ist passend, eine verschachtelte Wortlänge größer zu haben als die maximale
Wortlänge,
so daß zumindest
genug Bits, um ein Codewort zu vervollständigen, in jedem verschachteltem
Wort enthalten sind. Die verschachtelten Worte können dann viele Codewörter und
Teile von Codewörtern
enthalten.
Diese
Worte werden entsprechend der Anforderung an den Decodierer verschachtelt.
Jeder unabhängige
Decodierer erhält
ein ganzes verschachteltes Wort. Die Bit-Schiebeoperation wird nunmehr
lokal an jedem Decodierer vorgenommen, wodurch die Parallelität des Systems
aufrecht erhalten wird. In
In einer anderen Reihenfolge basiert die Reihenfolge, in welcher der spätere Satz verschachtelter Wörter (z.B. das Codewort, das mit Codewort #8 in Strom 1 beginnt, das Codewort, das mit #7 in Strom 2 beginnt, das Codewort, das mit Code #11 in Strom 3 beginnt) in den verschachtelten Codestrom eingesetzt sind, auf dem ersten Codewort des vorherigen Satzes verschachtelter Wörter (z.B. das Codewort, das mit dem Codewort #1 in Strom 1 beginnt, das Codewort, das mit dem Codewort #2 in Strom 2 beginnt, das Codewort, das mit dem Codewort #4 in Strom 3 beginnt) und sie werden von dem verschachtelten Wort aus in dem ersten Codewort mit der niedrigsten Zahl bis zu dem verschachtelten Wort mit dem ersten Codewort mit der höchsten Zahl geordnet. Folglich ist in diesem Fall, da das verschachtelte Wort, das mit dem Codewort #1 beginnt, das erste war, das nächste verschachtelte Wort im Strom 1 das erste der zweiten Gruppe von verschachtelten Wörtern, die in den verschachtelten Strom einzusetzen sind, worauf das nächste verschachtelte Wort in dem Strom 2 und das nächste verschachtelte Wort in dem Strom 3 folgt. Nachdem die zweite Gruppe verschachtelter Worte in den verschachtelten Strom eingesetzt ist, würde das nächste verschachtelte Wort im Strom 2 das nächste verschachtelte Wort sein, das in den Strom eingesetzt worden ist, da das Codewort #7 das niedrigste Codewort des zweiten Satzes von verschachtelten Worten ist (worauf das Codewort #8 im Strom 1 und dann das Codewort #11 im Strom 3 folgt).In another order is based on the order in which the latter Set of nested words (e.g., the codeword starting with codeword # 8 in stream 1, the Codeword starting with # 7 in stream 2, the codeword with code # 11 begins in stream 3) is inserted into the interleaved code stream are nested, on the first codeword of the previous sentence words (e.g., the codeword beginning with codeword # 1 in stream 1, the codeword starting with codeword # 2 in stream 2, the codeword, that begins with the codeword # 4 in stream 3) and they are from the nested word out in the first codeword with the lowest Number up to the nested word with the first codeword with the highest number orderly. Consequently, in this case, since the nested word, that begins with the codeword # 1, the first was, the next one nested Word in stream 1 the first of the second group of nested words, which are to be inserted into the nested stream, whereupon the next nested Word in the stream 2 and the next nested word in stream 3 follows. After the second group nested words inserted into the nested stream, that would be next nested word in stream 2 will be the next nested word which has been inserted into the stream since the codeword # 7 is the lowest The codeword of the second set of nested words is (what the codeword # 8 in stream 1 and then codeword # 11 in stream 3 follows).
Das Verwenden des aktuellen Decoders als das Modell für den Datenstrom ist verantwortlich für die Ausführungswahl und Verzögerung, um den verschachtelten Strom zu erzeugen. Es ergeben sich keine großen Kosten für Duplex-Systeme, die sowohl Codierer als auch Decodierer haben. Dies kann auf jeden parallelen Satz von Datenworten unterschiedlicher Länge (oder unterschiedlicher Größe) verallgemeinert werden, die in einer der deterministischen Reihenfolge verarbeitet werden.The Use the current decoder as the model for the data stream is responsible for the execution choice and delay, to generate the interleaved stream. There are no results huge costs for Duplex systems that have both encoders and decoders. This can be different on every parallel set of data words Length (or different size) generalized be processed in one of the deterministic order become.
Code-Typen und Bitstrom-Generatoren für paralleles DecodierenCode types and bitstream generators for parallel decoding
Bei der Erfindung könnten vorhandene Codierer, wie Q-Coder oder B-Coder, als die Bitstrom-Erzeugungselemente verwendet werden, welche parallel angeordnet sind. Jedoch können auch andere Codes und Codierer verwendet werden. Die Codierer und ihre zugeordneten Codes die bei der vorliegenden Erfindung verwendet worden sind, sind einfache Codierer.at of the invention existing encoders, such as Q-coder or B-coder, as the bit-stream generating elements be used, which are arranged in parallel. However, too other codes and encoders are used. The encoders and theirs associated codes used in the present invention are simple encoders.
Bei der Erfindung bietet ein Verwenden von einem Bitstrom-Generator mit einem einfachen Code statt eines komplexen Codes, wie dem arithmetischen Code, welcher von dem Q-Coder verwendet worden ist, oder die Codes mit mehreren Zuständen, die von dem B-Coder verwendet worden sind, Vorteile. Ein einfacher Code ist vorteilhaft, da die Hardware-Ausführung viel schneller und einfacher ist, und erfordert weniger Silizium als ein komplexer Code.at The invention provides for using a bitstream generator with a simple code instead of a complex code, like the arithmetic Code used by the Q-coder or the codes with multiple states, those from the B coder have been used, benefits. A simple code is advantageous because the hardware execution much faster and easier, and requires less silicon as a complex code.
Ein weiterer Vorteil der Erfindung besteht darin, daß der Codier-Wirkungsgrad verbessert werden kann. Ein Code, welcher eine endliche Menge einer Zustandsinformation verwendet, kann nicht fehlerlos den Shannon-Entropie-Grenzwert für jede Wahrscheinlichkeit treffen. Bekannte in Hardware ausgeführte Codes, bei welchen ein einziger Bitstrom-Generator mehrere Wahrscheinlichkeiten oder Kontexte behandeln kann, haben Beschränkungen, welche den Codier-Wirkungsgrad verringern. Ein Beheben der Beschränkungen, die für mehrere Kontexte oder Wahrscheinlichkeitsklassen notwendig sind, ermöglicht das Benutzen von Codes, die näher an den Shannon-Entropie-Grenzwert herankommen.One Another advantage of the invention is that the coding efficiency improves can be. A code which is a finite set of state information can not faultlessly set the Shannon entropy limit for each probability to meet. Known hardware executing codes in which a single bitstream generator multiple probabilities or contexts can handle, have restrictions, which reduce the coding efficiency. Fixing the restrictions the for several contexts or probability classes are necessary, allows using codes that are closer approach the Shannon entropy threshold.
R-CodesR-codes
Der Code (und Codierer), der bei einer Ausführungsform der Erfindung verwendet ist, wird als R-Code bezeichnet. R-Codes sind adaptive Codes, die eine veränderliche Anzahl von identischen Eingabesymbolen in ein Codewort umsetzen. In einer Ausführungsform werden die R-Codes parametriert, so daß viele verschiedene Wahrscheinlichkeiten mit einer einzigen Decodiererausführung behandelt werden können. Darüber hinaus können die R-Codes der Erfindung durch eine einfache sehr schnelle Hardware decodiert werden.Of the Code (and encoder) used in one embodiment of the invention is, is called R-code. R codes are adaptive codes that a changeable one Convert number of identical input symbols into a codeword. In one embodiment the R-codes are parameterized so that many different probabilities can be treated with a single decoder design. Furthermore can the R codes of the invention by a simple very fast hardware be decoded.
In
der Erfindung werden die R-Codes von einem R-Codierer verwendet,
um ein Codieren oder Decodieren durchzuführen. In einer Ausführungsform
ist ein R-Codierer ein Bitstrom-Generator, der mit einem Wahrscheinlichkeits-Bewertungsmodul
kombiniert ist. Beispielsweise könnte
in
Codewörter stellen Durchläufe des wahrscheinlichsten Symbols (MPS) dar. Ein MPS stellt das Ergebnis einer binären Entscheidung mit mehr als 50% Wahrscheinlichkeit dar. Andererseits stellt das am wenigsten wahrscheinliche Symbol (LPS) das Ergebnis einer binären Entscheidung mit weniger als 50% Wahrscheinlichkeit dar. Wenn zwei Ergebnisse gleich wahrscheinlich sind, ist es nicht wichtig, welches mit MPS oder LPS bezeichnet ist, solange sowohl der Codierer als auch der Decodierer dieselbe Bezeichnung vornehmen. Die sich ergebende Bitfolge in der komprimierten Datei ist in Tabelle 1 für einen vorgegebenen Parameter dargestellt, auf den als MAXRUN verwiesen ist.Put codewords runs the most likely symbol (MPS). An MPS produces the result a binary one Decision with more than 50% probability. On the other hand The least probable symbol (LPS) represents the result a binary one Decision with less than 50% probability. If two Results are equally likely, it does not matter which one with MPS or LPS, as long as both the encoder and also the decoder to make the same name. The resulting Bit sequence in the compressed file is in Table 1 for one given parameters, referred to as MAXRUN is.
Tabelle - Biterzeugungs-Codieren Table - Biter Generation Coding
Um zu codieren, wird die Anzahl MPSs in einem Durchlauf mittels eines einfachen Zählers gezählt. Wenn dieser Zählwert gleich dem MAXRUN-Zählwert ist, wird ein 0 Codewort in den Codestrom abgegeben, und der Zähler wird zurückgesetzt. Wenn ein LPS angetroffen wird, dann wird eine 1, auf welche die Bits N folgen, welche eindeutig die Anzahl an MPS-Symbolen vor dem LPS beschreiben, in den Codestrom eingebracht. (Hierbei gibt es viele Möglichkeiten, die N Bits zuzuteilen, um die Durchlauflänge zu beschreiben.) Wieder wird der Zähler zurückgesetzt. Die Anzahl an Bits, die für N erforderlich sind, hängt von dem Wert von MAXRUN ab. Es könnte auch ein Einser-(1's)Komplement der Codewörter verwendet werden.To encode, the number of MPSs in a run is counted by a simple counter. If this count equals the MAXRUN count, a 0 codeword is output to the code stream and the counter is reset. If an LPS is encountered, then a 1 followed by bits N which uniquely describe the number of MPS symbols before the LPS is injected into the code stream. (There are many ways to allocate the N bits to describe the pass length.) Again, the counter is reset. The number of bits required for N depends on the value of MAXRUN. One's (1's) complement of the codewords could also be used.
Um zu decodieren, wenn das erste Bit in dem Codestrom 0 ist, wird der Wert von MAXRUN in dem MPS-Zähler abgelegt, und die LPS-Anzeige wird gelöscht. Dann wird das 0 Bit weggeworfen. Wenn das erste Bit eine 1 ist, dann werden die folgenden Bits geprüft, um die Bits N zu extrahieren, und der entsprechende Zählwert (N) wird in dem MPS-Zähler gesetzt, und der LPS-Indikator wird gesetzt. Dann werden die Codestrom-Bits, welche das 1N Codewort enthalten, weggeworfen.Around to decode when the first bit in the code stream is 0, the Value of MAXRUN in the MPS counter and the LPS indicator is cleared. Then the 0 bit is thrown away. If the first bit is a 1, then the following bits are checked to get the Extract bits N, and the corresponding count (N) is set in the MPS counter, and the LPS indicator is set. Then the code stream bits, which contain the 1N codeword, thrown away.
R-Codes
werden entsprechend den Vorgaben in Tabelle 1 erzeugt. Die Definition
eines vorgegebenen R-Codes Rx(k) wird durch MAX-RUN festgelegt, beispielsweise:
MAXRUN
für Rx(k)
= x·2k-1
folglich gilt:
MAXRUN für R2 (k)
= 2·2k-1
MAXRUN für R3 (k) = 3·2k-1
usw...R codes are generated according to the specifications in Table 1. The definition of a given R code Rx (k) is defined by MAX-RUN, for example:
MAXRUN for Rx (k) = x * 2k -1
consequently:
MAXRUN for R2 (k) = 2 · 2 k-1
MAXRUN for R3 (k) = 3 x 2 k-1
etc...
R-Codes sind eine Untergruppe von Golomb-Codes. Zu beachten ist, daß Rice-Codes nur R2 (•) Codes benutzen. Die R-Codes der Erfindung lassen die Verwendung sowohl von R2(k) und R3(k) Codes zu und erforderlichenfalls andere Rn(k) Codes. In einer Ausfüh rungsform werden R2 (k) und R3 (k) verwendet. Rn existiert für n = 2 und n ist gleich einer ungeraden Zahl (z.B. R2, R3, R5, R7, R9, R11, R13, R15). In einer Ausführungsform wird für den R2 (k) Code der Durchlaufzählwert r in N codiert; der Durchlaufzählwert r wird in k Bits beschrieben, so daß 1N dargestellt wird mit (k + 1) Bits. Ebenso können in einer Ausführungsform für einen R3 (k) Code die Bits N 1Bit enthalten, um anzuzeigen, ob n < 2(k-1) oder n ≥ 2(k-1), und entweder (k – 1) oder k Bits um den Durchlaufzählwert r anzuzeigen, so daß die Veränderliche N dargestellt wird durch insgesamt k bzw. (k + 1) Bits. In anderen Ausführungsformen könnte das 1's-Komplement von N in dem Codewort verwendet werden. In diesem Fall zielt das MPS darauf „ Codeströme mit vielen 0'en zu erzeugen, oder LPS zielt darauf ab, Codeströme mit vielen 1'en zu erzeugen.R codes are a subset of Golomb codes. Note that Rice codes use only R2 (•) codes. The R codes of the invention allow the use of both R2 (k) and R3 (k) codes and, if necessary, other Rn (k) codes. In one embodiment, R2 (k) and R3 (k) are used. Rn exists for n = 2 and n is equal to an odd number (eg, R2, R3, R5, R7, R9, R11, R13, R15). In one embodiment, for the R2 (k) code, the pass count r is encoded in N; the pass count r is written in k bits so that 1N is represented with (k + 1) bits. Similarly, in one embodiment, for an R3 (k) code, bits N may contain 1Bit to indicate whether n <2 (k-1) or n≥2 (k-1) , and either (k-1) or k bits to indicate the pass count r, so that the variable N is represented by a total of k and (k + 1) bits, respectively. In other embodiments, the 1's complement of N could be used in the codeword. In this case, the MPS aims to "generate code streams with many 0's or LPS aims to generate code streams with many 1's.
Tabellen 2 bis 5 veranschaulichen einige effiziente R-Codes, die bei einer Ausführungsform der Erfindung verwendet worden sind. Es sollte beachtet werden, daß andere Lauflängencodes in der Erfindung ebenfalls verwendet werden können. Ein Beispiel eines alternativen Lauflängencodes für R2 (2) ist in Tabelle 6 dargestellt. Die Tabellen 7 und 8 zeigen Beispiele der Codes, die in einer Ausführungsform verwendet worden sind.tables FIGS. 2-5 illustrate some efficient R codes that are used in a embodiment of the invention have been used. It should be noted that others Run-length code can also be used in the invention. An example of an alternative Run-length code for R2 (2) is shown in Table 6. Tables 7 and 8 show examples of the codes, in one embodiment have been used.
Tabelle 8 - Ein anderer Alternativer R2 (2) Code Table 8 - Another Alternative R2 (2) Code
Wahrscheinlichkeits-Bewertungsmodell für R-CodesProbability assessment model for R codes
In
einer Ausführungsform
führt der
R2(0) Code kein Codieren durch: Eine Eingabe von 0 wird in eine 0
codiert, und eine Eingabe von 1 wird in eine 1 codiert (oder umgekehrt)
und ist optimal für
Wahrscheinlichkeiten gleich 50%. Der R2 (1) Code der bevorzugten
Ausführungsform
ist optimal für
Wahrscheinlichkeiten nahe bei 0,707 (d.h.70,7%), und der R3 (1)
Code ist optimal für
die 0,794 Wahrscheinlichkeit (79,4%). Der R2 (2) Code ist optimal
für die
0,841 Wahrscheinlichkeit (84,1%). Tabelle 7 veranschaulicht den
nahezu optimalen Lauflängencode,
wobei der Wahrscheinlichkeits-Versatz durch folgende Gleichung festgelegt
ist:
Wahrscheinlichkeits-Versatz = -log2(LPS) Tabelle
9 In one embodiment, the R2 (0) code does not encode: an input of 0 is encoded into a 0, and an input of 1 is encoded into a 1 (or vice versa), and is optimally equal to 50% for probabilities. The R2 (1) code of the preferred embodiment is optimal for probabilities close to 0.707 (ie 70.7%), and the R3 (1) code is optimal for the 0.794 probability (79.4%). The R2 (2) code is optimal for the 0.841 probability (84.1%). Table 7 illustrates the near optimal runlength code, where the likelihood offset is determined by the following equation:
Probability Offset = -log 2 (LPS) Table 9
Die Codes sind nahezu optimal, so daß der Wahrscheinlichkeits-Bereich, wie durch den Wahrscheinlichkeits-Versatz angezeigt ist, den Raum verhältnismäßig gleichmäßig bedeckt, selbst wenn die optimalen Wahrscheinlichkeiten nicht so viel in den höheren k Werten als in den niedrigen k Werten differenzieren.The Codes are nearly optimal, so that the probability range, as by the probability offset is displayed, the space is covered relatively evenly, even if the optimal probabilities are not that much in the higher one k values differ as in the low k values.
Nunmehr wird auf die Wahrscheinlichkeit Bezug genommen, bei welcher ein R-Code optimal ist. In der Tat trifft nur R2 (2) die Entropie-Kurve. Eine reale Betrachtung zeigt für welchen Wahrscheinlichkeitsbereich ein ganz bestimmter R-Code besser ist als alle R-Codes in einer vorgegebenen Klasse. Die folgenden Tabellen sehen die Wahrscheinlichkeitsbereiche für die Klasse von R2 Codes und für die Klasse von R2 und R3 Codes vor.Now, reference is made to the probability that an R code is optimal. In fact, only R2 (2) hits the entropy curve. A real consideration shows for which probability range a very specific R-code is better than all R-codes in a given class. The following tables provide the probability ranges for the class of R2 codes and for the class of R2 and R3 codes.
Für die Klasse von R2 Codes von 0 bis 12 gelten die Bereiche in Tabelle 10 unten. Wenn beispielsweise nur R2 Codes verwendet werden, ist R2 (0) der beste, wenn 0,50 ≤ Wahrscheinlichkeit ≤ 0,6180 ist. Genauso ist R2 (1) der beste, wenn gilt 0,6180 ≤ Wahrscheinlichkeit ≤ 0,7862.For the class For R2 codes from 0 to 12, the ranges in Table 10 below apply. For example, if only R2 codes are used then R2 (0) is the best if 0.50 ≤ probability ≤ 0.6180. Similarly, R2 (1) is the best if 0.6180 ≤ Probability ≤ 0.7862.
Tabelle 10 - R2 Codes von 0 bis 12 Table 10 - R2 codes from 0 to 12
Für die Klasse von R2 und R3 Codes sind die Lösungen in Tabelle 11 unten angegeben. Wenn beispielsweise R2 und R3 Codes verwendet werden, ist R2 (1) der beste, wenn gilt: 0,6180 ≤ Wahrscheinlichkeit ≤ 0,7549.For the class of R2 and R3 codes are the solutions in Table 11 below. For example, if R2 and R3 codes R2 (1) is the best, if: 0.6180 ≤ Probability ≤ 0.7549.
Tabelle 11 - R2 und R3 Codes Längen weniger als oder gleich 13 Bits Table 11 - R2 and R3 codes are lengths less than or equal to 13 bits
Ein R2(k) für ein festes k wird ein Spurlängencode genannt. Jedoch ist ein festes k nur der beste für einen Wahrscheinlichkeitsbereich. Es ist zu beachten, daß, wenn nahe einer optimalen Wahrscheinlichkeit codiert wird, ein R-Code gemäß der Erfindung eine 0 und 1N-Codewörter mit etwa gleicher Frequenz verwendet.One R2 (k) for a fixed k becomes a track length code called. However, a fixed k is only the best for a probability range. It should be noted that, when encoded near an optimal probability, an R-code according to the invention a 0 and 1N codewords used with approximately the same frequency.
Mit anderen Worten, in der einen Hälfte der Zeit gibt der R-Codierer der Erfindung einen Code ab, und in der anderen Hälfte der Zeit gibt der R-Codierer den anderen Code ab. Durch Überprüfen der Anzahl von 0 und 1N Codewörter kann eine Feststellung getroffen werden, ob der beste Code zu verwenden ist. Das heißt, wenn zu viele 1N Codewörter ausgegeben werden, dann wird die Durchlauf länge zu lang; andererseits wird, wenn zu viele 0 Codewörter ausgegeben werden, die Durchlauflänge zu kurz.With in other words, in one half In time, the R-coder of the invention outputs a code, and in the other half In time, the R-coder outputs the other code. By checking the Number of 0 and 1N codewords A statement can be made as to whether to use the best code is. That is, if too many 1N codewords are output, then the passage length becomes too long; on the other hand, when too many 0 codewords output, the run length too short.
Das Wahrscheinlichkeits-Bewertungsmodell, das von Langdon verwendet worden ist, prüft das erste Bit jedes Codeworts, um zu bestimmen, ob die Quellen-Wahrscheinlichkeit über oder unter dem aktuellen Voranschlag liegt (Siehe G.G. Langdon, "An Adaptive Run-Length Coding Algorithm", IBM Technical Disclosure Bulletin, Vol. 26, Nr. 7B, Dezember 1983). Basierend auf dieser Feststellung wird k erhöht oder erniedrigt. Wenn beispielsweise ein Codewort, das MPS anzeigt, gesehen wird, ist der Wahrscheinlichkeits-Voranschlag zu niedrig. Daher wird gemäß Langdon k um 1 für jedes 0 Codewort erhöht. Wenn ein Codewort, das weniger als MAXRUN MPS anzeigt, worauf ein LPS (z.B. 1N Codewort) folgt, gesehen wird, ist der Wahrscheinlichkeits-Voranschlag zu hoch. Folglich wird gemäß Langdon k um 1 für jedes 1N Codewort erniedrigt.The Probability rating model used by Langdon has been tested the first bit of each codeword to determine if the source probability is above or below the current estimate (See G. G. Langdon, "An Adaptive Run-Length Coding Algorithm ", IBM Technical Disclosure Bulletin, Vol. 26, No. 7B, December 1983). Based on this finding, k is increased or decreased. If, for example A code word indicating MPS is considered to be the Probability Estimate low. Therefore, according to Langdon k around 1 for every 0 codewords increased. If a codeword that reads less than MAXRUN MPS indicates what LPS (e.g., 1N codeword) is seen, is the Probability Estimate too high. Consequently, according to Langdon k around 1 for every 1N codeword is lowered.
Die vorliegende Erfindung läßt eine komplexere Wahrscheinlichkeits-Bewertung zu als das einfacher Erhöhen oder Verringern von k um 1 bei jedem Codewort. Die Erfindung enthält einen Wahrscheinlichkeits-Bewertungsmodulzustand, welcher den zu benutzenden Code festlegt. Viele Zuständen können denselben Code verwenden. Codes werden Zuständen mit Hilfe einer Zustandstabelle zugeordnet.The The present invention leaves a more complex probability rating to than simply increasing or Decrease k by 1 for each codeword. The invention includes a Probability score module state which is the one to use Code sets. Many states can use the same code. Codes become states using a state table assigned.
In einer Ausführungsform der Erfindung ändert der Wahrscheinlichkeits-Voranschlag jedes abgegebene Codewort. Folglich erhöht oder erniedrigt der Wahrscheinlichkeits-Bewertungsmodul den Wahrscheinlichkeits-Voranschlag in Abhängigkeit davon, ob ein Codewort mit einer 0 oder einer 1 beginnt. Wenn beispielsweise ein "0" Codewort ausgegeben wird, kommt es zu einem Erhöhen des Voranschlags der MPS-Wahrscheinlichkeit.Wenn dagegen ein "1" Codewort ausgegeben wird, wird der Voranschlag der MPS-Wahrscheinlichkeit erniedrigt.In an embodiment of the invention changes the probability estimate of each delivered codeword. consequently elevated or the probability score module lowers the probability estimate dependent on whether a codeword starts with a 0 or a 1. If, for example a "0" code word is output becomes, it comes to an increase the estimate of the MPS probability. However, if a "1" code word is output, the Estimates of the MPS probability lowered.
Der
bekannte Langdon-Codierer verwendete nur R2 (k) Codes und erhöhte oder
erniedrige k für
jedes Codewort. Die Erfindung dagegen verwendet R2(k) und R3 (k)
Codes in Verbindung mit der Zustandstabelle, um die Adaptionsrate
auf die Anwendung abstimmen zu können.
Das heißt,
wenn es eine kleine Menge stationärer Daten ist, muß die Adaption
schneller sein, um auf ein optimales Codieren hinauszulaufen, und
wenn es eine größere Menge
stationärer
Daten gibt, kann die Adaptionszeit länger sein, so daß das Codieren
gewählt
werden kann, um eine bessere Kompression bei dem Rest der Daten
zu erreichen. Wo eine variable Anzahl an Zustandsänderungen
vorkommen kann, können
spezifische Anwendungs-Kennwerte
auch die Adaptionsrate beeinflussen. Wegen der Art der R-Codes ist
die Bewertung für
R-Codes einfach und erfordert wenig Hardware, während sie sehr leistungsfähig ist.
In
Die
Eingliederung der R3(k) Codes ermöglicht es, mehr Wahrscheinlichkeitsraum
mit einer größeren Effizient
abzudecken. Eine beispielsweise Wahrscheinlichkeits-Bewertungszustandstabel le
gemäß der Erfindung
ist in
Anfangs befindet sich der Codierer im Zustand 0, welcher der R2 (0) Code (d.h. kein Code) für den Wahrscheinlichkeitsvoranschlag ist, welcher gleich 0,50 ist. Nachdem jedes Codewort verarbeitet ist, wird der Zustandszähler in Abhängigkeit von dem ersten Bit des Codeworts in- bzw. dekrementiert. In einer Ausführungsform erhöht ein Codewort von 0 die Größe des Speichers. Daher wird durch jedes Codewort eine Änderung in dem Zustand bei dem Zustandszähler vorgenommen. Mit anderen Worten, der Wahrscheinlichkeits-Bewertungsmodul ändert den Zustand. Jedoch können aufeinanderfolgende Zustände demselben Code zugeordnet werden. In diesem Fall wird die Wahrscheinlichkeitsbewertung ohne ein Ändern von Codes bei jedem Codewort erreicht. Mit anderen Worten, der Zustand wird für jedes Codewort geändert; jedoch wird der Zustand zu bestimmten Zeiten in dieselben Wahrscheinlichkeiten abgebildet. Beispielsweise verwenden alle Zustände 5 bis –5 den R2 (0) Code, während die Zustände 6 bis 11 und –6 bis –11 den R2 (1) Code benutzen. Mit Hilfe der Zustandstabelle der Erfindung kann eine Wahrscheinlichkeitsbewertung in einer nichtlinearen Weise bei demselben Codierer bleiben.At first the encoder is in state 0 which is the R2 (0) code (i.e., no code) for the Probability Estimate is equal to 0.50. After each codeword is processed, the state counter in dependence is incremented or decremented by the first bit of the codeword. In a embodiment elevated a code word of 0 the size of the memory. Therefore, a change in the state is added by each codeword the state counter performed. In other words, the probability score module changes that Status. However, you can successive states be assigned to the same code. In this case, the probability rating without a change reached by codes at each codeword. In other words, the condition is for each codeword changed; however, at certain times, the condition becomes the same probabilities displayed. For example, all states 5 to -5 use the R2 (0) code, while the conditions 6 to 11 and -6 to -11 Use the R2 (1) code. With the help of the state table of the invention can do a probability assessment in a nonlinear way stay with the same encoder.
Zu erwähnen ist noch, daß mehr Zustände mit demselben R-Code für die niedrigen Wahrscheinlichkeiten eingeschlossen sind, und zwar deswegen, da der Verlust an Wirkungsgrad, wenn der falsche Code bei niedrigen Wahrscheinlichkeiten verwendet wird, groß ist. Die Art der Lauflängen-Codezustandstabelle besteht darin zwischen Zuständen nach jedem Codewort zu übertragen. In einer Zustandstabelle, die ausgelegt ist, um Codes mit jeder Zustandsänderung zu ändern, wenn zwischen Zuständen bei den niedrigen Wahrscheinlichkeiten gewechselt wird, wechselt der Code zwischen einem Code, welcher sehr nahe bei dem Entropie-Wirkungsgrad-Grenzwert ist und einem Code, welcher weit von dem Entropie-Wirkungsgrad-Grenzwert weg ist. Folglich kann sich ein Nachteil (in Form der Anzahl von codierten Datenbits) in dem Übergang zwischen Zuständen ergeben. Herkömmliche Wahrscheinlichkeits-Bewertungsmodule, wie der Langdon-Wahrscheinlichkeits-Bewertungsmodul verliert seine Wirksamkeit wegen dieses Nachteils.It should also be noted that more states are included with the same low-likelihood R-code, because the loss of efficiency when the wrong code is used at low probabilities is large. The type of runlength code state table is to transmit between states after each codeword. In a state table designed to change codes with each state change when switching between states at the low probabilities, the code switches between a code which is very close to the entropy efficiency limit and a code which is far is away from the entropy efficiency limit. Consequently, a disadvantage (in the form of the number of coded data bits) in the transition between Zu staged. Conventional probability assessment modules, such as the Langdon Probability Assessment Module, lose their effectiveness because of this disadvantage.
In den Lauflängencodes höherer Wahrscheinlichkeit ist der Nachteil, der sich bei dem falschen Code ergibt, nicht so groß. Folglich werden in der Erfindung zusätzliche Zustände zu den niedrigeren Wahrscheinlichkeiten hinzugefügt, so daß die Änderungen beim Schwanken zwischen den zwei korrekten Codes erhöht werden, wodurch die Codierunzulänglichkeit geringer wird.In the run length codes higher Probability is the downside to the wrong code not so great. Thus, in the invention, additional states become added lower probabilities, so that the changes in the waver between the two correct codes are raised, whereby the coding inadequacy becomes smaller.
In bestimmten Ausführungsformen kann der Codierer einen anfänglichen Wahrscheinlichkeits-Bewertungszustand haben. Mit anderen Worten, die Codierer könnten in einem vorherbestimmten Zustand, beispielsweise dem Zustand 18, beginnen. In einer Ausführungsform könnte eine andere Zustandstabelle verwendet werden, so daß einige Zustände für die wenigen ersten Symbole verwendet würden, um eine schnelle Adaption zuzulassen, und eine zweite Zustandstabelle könnte für die verbleibenden Symbole für eine langsame Adaption verwendet werden, um ein Feinabstimmen der Wahrscheinlichkeitsbewertung zu ermöglichen. Auf diese Weise kann der Codierer imstande sein, früher einen wirksameren Code in dem Codierprozeß zu benutzen. In einer anderen Ausführungsform könnte der Codestrom einen anfänglichen Wahrscheinlichkeitsvoranschlag für jeden Kontext spezifizieren. In einer Ausführungsform werden die Inkremente oder Dekremente nicht gemäß einer festen Zahl (z.B. 1) gemacht. Stattdessen kann der Wahrscheinlichkeits-Bewertungszustand durch eine veränderliche Zahl entsprechend der Menge an bereits angetroffenen Daten oder der Änderung in den Daten (deren Stabilität) inkrementiert werden. Beispiele solcher Tabellen befinden sich in den nachstehend beschriebenen Tabellen 21 bis 25.In certain embodiments The encoder may have an initial one Have probability rating state. In other words, the coders could in a predetermined state, for example state 18, kick off. In one embodiment could another state table can be used so that some conditions for the few first symbols would be used for a quick adaptation admit, and a second state table could be for the remaining symbols for one slow adaptation can be used to fine-tune the probability score to enable. On this way, the encoder can be able to get a more effective code earlier to use in the encoding process. In another embodiment could the code stream is an initial one Probability estimate for specify each context. In one embodiment, the increments or decrements not according to one fixed number (e.g., 1). Instead, the probability assessment state through a changeable Number according to the amount of data already encountered or the change in the data (their stability) be incremented. Examples of such tables are in Tables 21 to 25 described below.
Wenn
die Zustandstabelle symmetrisch ist, wie die beispielshafte Tabelle
der
Überblick über das ausgeglichene parallele Entropie-CodiersystemOverview of the balanced parallel Entropy coding
Die Erfindung schafft ein ausgeglichenes paralleles Entropie-Codiersystem, welches sowohl ein Realzeit-Codieren als auch ein Realzeit-Decodieren einschließt, was in einer sehr schnellen/preiswerten Hardware durchgeführt worden ist. Die vorliegende Erfindung kann in zahlreichen verlustfreien Codieranwendungen verwendet werden, einschließlich einer Realzeit-Kompression/Dekompression von Daten auf beschreibbaren Bildplatten oder magnetischen Platten, einer Realzeit-Kompression/Dekompression von Computer-Netzdaten, einer Realzeit-Kompression/Dekompression von Bilddaten in einem komprimierten Rahmenspeicher in einem Multifunktionsgerät (z.B. Kopierer, Faksimilegerät, Scanner, Printer, usw.) und einer Realzeit-Kompression/Dekompression von Tondaten; allerdings ist die Erfindung hierauf nicht beschränkt.The The invention provides a balanced parallel entropy coding system which Both real-time encoding and real-time decoding include what been done in a very fast / inexpensive hardware is. The present invention can be found in many lossless Encoding applications, including real-time compression / decompression data on recordable optical disks or magnetic disks, Real-time compression / decompression of computer network data, a Real-time compression / decompression of image data in a compressed Frame memory in a multifunction device (e.g., copier, facsimile machine, scanner, Printer, etc.) and real-time compression / decompression of sound data; however, the invention is not limited thereto.
Ein Spezifizieren der Leistung des Codierers erfordert eine gewisse Aufmerksamkeit. Es ist einfach, einen Codierer auszulegen, der eine gewisse Rate für die ursprünglichen Daten erreicht, die in einen ausreichend schnellen codierten Datenkanal eingegeben sind. In vielen Anwendungsfällen ist es jedoch das Ziel bei dem Codierer, den codierten Datenkanal effizient zu nutzen. Eine codierte Datenkanal-Benutzung wird durch die maximale Burst-Rate des Original-Daten-Interface, durch die Codiergeschwindigkeit und die an den Daten erreichte Kompression eingeengt. Die Wirkung dieser Effekte muß über einige lokale Datenmengen berücksichtigt werden, welche von der Bufferung in dem Codierer abhängt. Es ist wünschenswert, einen Codierer zu haben, der den codierten Datenkanal effizient nutzt, während die Codiergeschwindigkeit und eine hohe Kompression erhalten bleibt und die maximale Burst-Rate sich noch einstellt.One Specifying the performance of the encoder requires some Attention. It's easy to design a coder that has a certain rate for the originals Data is obtained in a sufficiently fast coded data channel are entered. In many applications, however, it is the goal at the encoder, to efficiently use the coded data channel. An encoded data channel usage is determined by the maximum burst rate of the original data interface, by the encoding speed and narrowed the compression achieved on the data. The effect of this Effects must about some taken into account local data volumes which depends on the buffering in the encoder. It is desirable to have an encoder that efficiently processes the encoded data channel uses while the coding speed and high compression is maintained and the maximum burst rate is still set.
Im folgenden wird der Codierer der Erfindung beschrieben. Ein Decodierer, der in Verbindung mit dem Codierer verwendet werden kann, wird ebenfalls beschrieben.in the Next, the encoder of the invention will be described. A decoder, which can be used in conjunction with the encoder is also described.
Realzeit-Codieren bei der vorliegenden ErfindungReal-time encoding at of the present invention
Der
Codierer
Die
Umordnungseinheit
Die
Umordnungseinheit
In einer Ausführungsform führt das Codiersystem (und das entsprechende Decodiersystem) der Erfindung das Codieren (oder Decodieren) mit Hilfe eines einzigen integrierten Schaltungschips durch. In einer anderen Ausführungsform enthält eine einzige integrierte Schaltung das Codiersystem der Erfindung, einschließlich dessen Codierer, Decodierer und Speichers. Ein separater externer Speicher kann hinzugefügt werden, um das Codieren zu unterstützen. Ein Multichip-Modul oder eine integrierte Schaltung können sowohl die Codier/Decodier-Hardware und den Speicher enthalten.In an embodiment does that Coding system (and the corresponding decoding system) of the invention encoding (or decoding) using a single integrated Circuit chips through. In another embodiment, a contains single integrated circuit, the coding system of the invention, including its Encoder, decoder and memory. A separate external memory can be added to support coding. A multichip module or an integrated circuit can include both the encoding / decoding hardware and the memory.
Mit dem Codiersystem der Erfindung kann versucht werden, die effektive Bandbreite um bis zu einem Faktor N zu erhöhen. Wenn die erreichte Kompression geringer als N:1 ist, dann wird der codierte Datenkanal voll ausgenutzt, jedoch ist die erreichte effektive Bandbreitenzunahme nur gleich der Kompressionsrate. Wenn die erreichte Kompression größer als N:1 ist, dann ist die effektive Bandbreite erreicht, wobei eine zusätzliche Bandbreite beschreibbar ist. In beiden Fällen muß die erreichte Kompression über einem örtlichen Bereich der Daten liegen, welche durch den in dem Codiersystem vorhanden Pufferwert festgelegt ist.With The coding system of the invention may attempt to reduce the effective Increase bandwidth by up to a factor of N When the compression reached is less than N: 1, then the coded data channel is fully exploited, however, the achieved effective bandwidth increase is only equal the compression rate. If the compression achieved is greater than N: 1, then the effective bandwidth is reached, with a additional bandwidth is writable. In both cases must the reached compression over a local one Area of the data, which by the present in the coding system Buffer value is set.
Der Bitgenerator für den Codierer der ErfindungThe bit generator for the encoder the invention
Ein
Speicher
In
der Erfindung wird die Erzeugung von 1N Codewörter durchgeführt, so
daß deren
Länge ohne
eine zusätzliche
Information bestimmt werden kann. Tabelle 12 veranschaulicht 1N
Codewort-Darstellungen von R3 (2) Codewörtern für den Decodierer und Codierer.
Der Decodierer erwartet, daß das "1" Bit in einem "1N" Codewort
das niedrigstwertige Bit (LSB) ist, und daß der "N" Zählwertanteil
in der richtigen MSB...LSB-Reihenfolge vorliegt. In dem Decodierer
kann das Codewort veränderlicher
Länge nicht
von einem Nullauffüllen
unterschieden werden ohne zu wissen, welcher spezieller Code verwendet
wird.In dem Codierer wird das Codewort umgekehrt, und die Position
des höchstwertigen "1" Bits zeigt die Länge von "1N" Codewörtern an.
Um Codewörter
in einer Codierer-Reiheinfolge zu erzeugen, muß das Komplement des Zählwerts
umgekehrt werden. Dies kann erreicht werden durch Umkehren des 13
Bit-Zählwerts
und durch dessen Verschieben, so daß es zu dem niedrigstwertigen
Bit (LSB) ausgerichtet ist. Wie im einzelnen nachstehend noch beschrieben
wird, kehrt die Bit-Packeinheit die Codewörter in die Decodierer-Reihenfolge
um. Jedoch hat diese Umkehr von Codewörtern keine erhöhte Komplexität der Bitpackeinheit
Tabelle 12 - ""2N"-Codewort-Darstellungen für R3 (2) Codewörter Table 12 - "" 2N "codeword representations for R3 (2) codewords
Für R3 Codes erfordert ein Erzeugen von "N" Codewörtern auch, daß das Bit, das auf die "1" folgt, anzeigt, ob ein kurzer oder ein langer Zählwert vorliegt.For R3 codes also requires generating "N" codewords that this Bit following the "1" indicates whether a short or a long count is present.
Durch Verwenden mehrerer Speicherbänke ermöglicht die Erfindung ein Pipelining. Beispielsweise kommt im Falle eines Speichers mit mehreren Anschlüssen eine Leseoperation für einen Speicher für ein uncodiertes Bit vor, während eine Leseoperation an dem Speicher für das vorherige uncodierte Bit vorkommt.By Using multiple memory banks allows the invention is a pipelining. For example, in case of one Multi-port memory a read operation for a memory for an uncoded bit before while a read operation on the memory for the previous uncoded Bit occurs.
Ein Altera AHDL-Abtast-AusführungAn Altera AHDL scan design
Eine Ausführungsform des Codierer-Bitgenerators der Erfindung weist ein FPGA auf. Die Ausführung behandelt alle R2- und R3-Codes bis zu R2(12). Der AHDL-(Altera-Hardware-Beschreibungs-Sprach-)Quellencode ist unten aufgelistet.A embodiment The encoder bit generator of the invention has an FPGA. The Execution treated all R2 and R3 codes up to R2 (12). The AHDL (Altera Hardware Description Voice) source code is listed below.
Die
Auslegung weist mehrere Teile auf, wie in
Die Ausführung verwendet zwei Pipeline-Stufen. Während der ersten Pipeline-Stufe wird der Zählwert inkrementiert, die Wahrscheinlichkeitsklasse wird ausgedehnt, und eine Subtraktion und ein Vergleich für lange R3 Codewörter wird durchgeführt. Alle übrigen Operationen werden während der zweiten Pipeline-Stufe durchgeführt.The execution uses two pipeline stages. During the first pipeline stage the count is incremented, the probability class is extended, and a subtraction and a comparison for long R3 codewords is carried out. The rest Operations are during the second pipeline stage.
Die Umordnungseinheit der ErfindungThe rearrangement unit the invention
Ein "Snooper"-Decodierer kann verwendet werden, um einen Decodierer umzuordnen, wobei ein Decodierer in dem Codierer enthalten ist, und schafft Anforderungen von Daten in einer Reihenfolge, in welcher Die Codewörter für den tatsächlichen Decodierer benötigt werden. Um einen "Snooper"-Decodierer zu stützen, kann ein Umordnen von Durchlaufzählwerten unabhängig für jeden Strom durchgeführt werden. Für Decodierer, die leicht modelliert werden können, können mehrere Zeitstempel-(time stamped)Schlangen oder eine einzige Mischschlange (merged queue) verwendet werden, um ein Umordnen zuzulassen. In einer Ausführungsform kann ein Umordnen jedes Codeworts mit Hilfe einer schlangenförmigen Datenstruktur erreicht werden und ist unabhängig von dem Verwenden von mehreren codierten Datenströmen. Wie das Umordnen durchgeführt werden kann, wird nachstehend noch beschrieben.A "snooper" decoder can used to rearrange a decoder, a decoder is contained in the encoder and creates requests for data in an order in which the codewords are needed for the actual decoder. To support a "Snooper" decoder, you can a reordering of pass counts independently for each Electricity performed become. For Decoders that can be easily modeled can have multiple timestamps (time stamped) Snakes or a single merging queue used to allow reordering. In one embodiment can rearrange each codeword using a serpentine data structure be achieved and is independent by using multiple encoded data streams. As the reordering performed will be described below.
Die erste Umordnungsoperation, die in dem Codierer durchgeführt wird, besteht darin, jeden der Durchlaufwerte umzuordnen, so daß der Durchlaufwert am Anfang des Durchlaufs spezifiziert ist, (wenn der Decodierer für ein Decodieren notwendig ist). Dieses Umordnen ist erforderlich, da der Codierer nicht bis zum Ende eines Durchlaufs feststellen kann, was ein Durchlaufzählwert (und ein Codewort) ist. Folglich wird der sich ergebende Durchlaufzählwert, der beim Codieren erzeugt worden ist, umgeordnet, so daß der Decodierer in der Lage ist, die Durchlaufzählwerte zurück in den Datenstrom richtig zu decodieren.The first shuffling operation performed in the encoder is to re-order each of the pass values so that the pass value is specified at the beginning of the pass (if the decoder for a Decoding is necessary). This reordering is required because the encoder can not determine until the end of a run, what a pass count (and a codeword) is. Consequently, the resulting pass count, which has been generated in the coding, rearranged so that the decoder in capable of the pass counts back to correctly decode into the data stream.
In
Durchlaufzählwert-UmordnungseinheitPass count shuffling
Wie vorstehend beschrieben, erhält der Decodierer Codewörter zu dem Zeitpunkt, wenn der Anfang der Daten, die durch das Codewort codiert worden sind, gebraucht wird. Jedoch kennt der Codierer nicht die Indentität des Codeworts bis zum Ende der Daten, die durch das Codewort codiert worden sind.As described above the decoder codewords at the time when the beginning of the data by the codeword coded, is needed. However, the encoder does not know the identity of the codeword to the end of the data encoded by the codeword have been.
Ein
Blockdiagramm einer Ausführungsform
der Durchlaufzählwert-Umordnungseinheit
In
Ein
Indexeingangssignal
Um
es zu wiederholen, ein Indexeingangssignal
Die
Umordnungseinheit
Der
Zeigerspeicher
Der
Kopfzähler
Ein
Steuermodul
Wenn
ein neuer Durchlauf startet, wird ein ungültiger Dateneintrag in den
Codewortspeicher
Wenn
ein Durchlauf startet, wird der Index für den Durchlauf im Speicher
Wenn
ein Durchlauf nicht startet oder endet, ist die Durchlaufzählwert-Umordnungseinheit
leer. Wenn ein Durchlauf startet und ein Durchlauf nicht endet,
und wenn der Speicher voll ist, dann wird ein Codewort vom Speicher
Wenn
ein Durchlauf endet und ein Durchlauf nicht startet, dann wird die
Adresse, die in dem Zeigerspeicher
Wenn
ein Durchlauf startet und ein Durchlauf endet (d.h. ein Durchlauf
gleichzeitig sowohl beginnt als auch endet) und wenn der Speicher
voll ist, dann wird ein Codewort von dem Speicher
In
der Erfindung kann eine Umordnungseinheit
Wie
vorstehend beschrieben, wird ein Codewort ausgegeben, wenn der Codewortspeicher
Von
der Umordnungseinheit
In
einer Ausführungsform
arbeitet die Umordnungseinheit
Obwohl
Codewörter
ausgegeben werden können,
wenn ein Kopfzeiger
Wenn eine Codewort-Speicherstelle als ungültig markiert ist, können die unbenutzten Codes verwendet werden, um Identifizierung zu speichern, für welchen Durchlaufzählwert dies ist (d.h. die Kontextfach- oder Wahrscheinlichkeitsklasse, welche die Stelle füllen muß, wird dort gespeichert). Diese Information ist brauchbar, um den Fall zu behandeln, bei welchem der Speicher voll ist. Insbesondere kann die Information dazu verwendet werden, dem Bitgenerator anzuzeigen, daß ein Codewort für diese spezielle Lauflänge nicht beendet wurde, und daß sie nun beendet werden muß. In einem solchen Fall wird ein Entscheidung getrof fen, um ein ungültiges Codewort auszugeben, welches infolge des Zustands, das der Speicher voll ist, aufgetreten sein kann. Folglich zeigt, wenn das System den Durchlaufzähler zurücksetzt, die Information an, wenn hinsichtlich Bitgenratoren und Durchlaufzählwerten, das System wieder anzufangen beginnt.If a codeword location is marked as invalid, the unused codes used to store identification, for which pass count this is (i.e., the context bin or probability class, which fill the place must, will stored there). This information is useful to the case to treat at which the memory is full. In particular, can the information is used to indicate to the bit generator the existence Codeword for this special run length was not finished, and that she now has to be ended. In such a case, a decision is made to invalidate a codeword due to the condition that the memory is full is, may have occurred. Consequently, when the system displays the Pass count resets the information if, in terms of bit generators and pass counts, the system starts to start again.
Bezüglich der Indexeingabe kann aus Pipelining-Gründe, wenn Bänke von Wahrscheinlichkeitsklassen verwendet werden, der Index eine Bankindentifizierung enthalten. Das heißt, es kann mehrere Durchlaufzählwerte für eine ganz bestimmte Wahrscheinlichkeitsklasse geben. Beispielsweise können zwei Durchlaufzählwerte für den 80%-Code verwendet werden, wenn erst der eine und dann der andere verwendet wird.Regarding the Index input may be for pipelining reasons if banks of probability classes used, the index contain a bank identification. This means, it can have multiple pass counts for one give very specific probability class. For example, two Durchlaufzählwerte for the 80% code can be used if first one and then the other is used.
Da
die Codewörter
veränderliche
Länge haben,
müssen
die im Speicher
Wenn
der Speicher
Wenn jedoch der Codierer ein "0" Codewort abgibt, und einen Durchlaufzähler rücksetzt, da der Codewortspeicher voll ist, muß der Decodierer dasselbe tun. Dies erfordert, daß der Decodierer die Codierer-Codewortspeicher-Schlange modelliert. Wie dies durchgeführt wird, wird weiter unten erläutert.If however, the encoder outputs a "0" codeword, and a pass counter resets, since the codeword memory is full, the decoder must do the same. This requires that the Decoder models the encoder codeword queue. As this is done will be explained below.
Um Leistung in CMOS-Implementierungen zu sparen, können Zähler für "|N" Codewörter wirksam gemacht werden, wenn "0" Codewörter für ungültige Durchläufe ausgegeben werden. Das heißt, da ein zu decodierendes "1N" Codewort gültig ist, während nur ein "0" Codewort ungültig sein kann.Around To save performance in CMOS implementations, counters for "| N" codewords can be effective are made when "0" code words are issued for invalid runs become. This means, since a "1N" codeword to be decoded is valid, while only a "0" code word will be invalid can.
Alternative Ausführunasform, die auf Kontext basiertAlternative embodiment, based on context
Die
Arbeitsweise der Umordnungseinheit
In ähnlicher
Weise kann, wenn ein Durchlauf endet und die entsprechende Adresse
im Zeigerspeicher
Für Durchlaufzählwert "Kontext"-Systeme fordert
jeder Kontext eine Speicherstelle im Zeigerspeicher
Ein Beispiel mit dem R2 (2) Code, das in Tabelle 13 dargestellt ist, wird verwendet, um einen Umordnen zu veranschaulichen. Tabelle 14 zeigt die umzuordnenden Daten (0=MPS, wahrscheinliche res Symbol; 1=LPS, weniger wahrscheinliches Symbol), die als Kontext bezeichnet sind. Es gibt nur zwei Kontexte. Die uncodierte Bitanzahl zeigt Zeit in uncodierten Bit-Taktzyklen an. Start und Ende von Durchläufen werden angezeigt, und Codewörter werden am Ende von Durchläufen dargestellt.One Example with the R2 (2) code shown in Table 13 is used to illustrate a reordering. Table 14 shows the data to be reordered (0 = MPS, probable res symbol, 1 = LPS, less probable symbol), which are referred to as context. There are only two contexts. The uncoded bit count shows time in uncoded bit clock cycles. Start and end of runs will be displayed, and codewords be at the end of runs shown.
Tabelle 13 - R2(2)Code Table 13 - R2 (2) Code
Tabelle 14 - Beispiele von zu codierenden Daten Table 14 - Examples of data to be encoded
Die Umordnungsoperation für die beispielshaften Daten ist in Tabelle 15 dargestellt. Ein Codewortspeicher für vier Stellen 0 bis 3 wird verwendet, welcher groß genug ist, um in diesem Beispiel nicht überzulaufen. Jede Zeile zeigt den Zsutand des Systems nach einer Operation, welche entweder der Durchlaufstart oder das Durchlaufende für einen bestimmten Kontext oder die Ausgabe eines Codeworts ist. Ein "x" wird verwendet, um Speicherstellen anzuzeigen, die "don't care" sind. Für einige uncodierte Bits startet weder ein Durchlauf noch endet er, so daß die Umordnungseinheit leer ist. Für codierte Bits, die Durchläufe beenden, können ein oder mehr Codewörter ausgegeben werden, welche mehrere Änderungen in dem Systemzustand bewirken können.The shuffling operation for the example data is shown in Table 15. A codeword memory for four digits 0 through 3 is used, which is large enough not to overflow in this example. Each line shows the status of the system after an operation which is either the run start or run end for a particular context or the output of a codeword. An "x" is used to indicate memory locations that are "do not care". For some uncoded bits neither a run starts it still ends, so that the rearrangement unit is empty. For coded bits that terminate passes, one or more codewords may be output which may cause several changes in the system state.
Tabelle 15 - Beispiel von Umordnungsoperationen Table 15 - Example of reordering operations
In Tabelle 15 werden die Kopf- und Nachlaufzeiger auf null initialisiert, was anzeigt, daß nichts in dem Codewortspeicher (z.B. der Schlange) enthalten ist.In Table 15 initializes the head and tail pointers to zero, which indicates that nothing is contained in the code word memory (e.g., the queue).
Der Zeigerspeicher ist mit zwei Speicherstellen dargestellt, und zwar eine für jeden Kontext. Jede Stelle hat "don't care" Werte vor einer Bitzahl 1. Der Codewortspeicher ist mit einer Tiefe von vier Codewörtern dargestellt, die alle Anfangs "don't care"-Werte sind.Of the Pointer memory is represented with two memory locations, namely one for every context. Every job has "do not care" values in front of you Bit number 1. The codeword memory is represented with a depth of four codewords, which are all initially "do not care" values.
Entsprechend den für die Bitzahl 1 erhaltenen Daten verbleibt dem Kopfzeiger ein Zielen auf die Codewortspeicherstelle 0. Da der Decodierer Daten erwartet, wird die nächste verfügbare Codewortspeicherstelle, 0, dem Codewort zugeteilt und ein ungültiger Wert wird in die Speicherstelle 0 geschrieben. Da der Kontext null ist, wird die Adresse der Codewortspeicherstelle, die dem Codewort zugeordnet ist, in eine Zeigerspeicherstelle für den Null-Kontext (Zeigerspeicherstelle 0) geschrieben. Folglich wird eine "0" an der Zeigerspeicherstelle 0 gespeichert. Der Nachlaufzeiger wird auf die nächste Codewortspeicherstelle 1 inkrementiert.According to the data obtained for the bit number 1, the head pointer remains aiming at the codeword storage location 0. Since the decoder expects data, the next available codeword storage location, 0, is assigned to the codeword and an invalid value is written into the memory location 0. Since the context is zero, the address of the codeword location associated with the codeword is written to a pointer location for the null context (pointer location 0). Consequently, a "0" is added to the pointer memory 0 stored. The tracking pointer is incremented to the next codeword memory location 1.
Entsprechend den Daten die der Bitzahl 2 entsprechen, bleibt der Zeiger auf die erste Speicherstelle ausgerichtet (da dort kein Ausgang gewesen ist, der zu inkrementieren ist). Da die Daten dem zweiten Kontext, Kontext 1 Kontext entsprechen, wird die nächste Codewortspeicherstelle dem Codewort als Codewortspeicherstelle 1 zugeteilt, wie durch den Nachlaufzeiger angezeigt ist, und ein ungültiger Wert wird in die Stelle geschrieben. Die Adresse, Codewortstelle 1, wird in die Zeigerspeicherstelle geschrieben, die dem Kontext 1 entspricht. Das heißt, die Adresse der zweiten Codewort-Speicherstelle wird in die Zeigerspeicherstelle 1 geschrieben. Der Nachlaufzeiger wird dann inkrementiert.Corresponding the data corresponding to the number of bits 2, the pointer remains on the aligned first memory location (since there was no output is to be incremented). Since the data is the second context, context 1 context, the next codeword location will be the codeword assigned as a codeword storage location 1, as by the Trailing pointer is displayed and an invalid value is written to the digit. The address, codeword location 1, is placed in the pointer memory location written that corresponds to the context 1. That is, the Address of the second codeword memory location is in the pointer memory location 1 written. The tracking pointer is then incremented.
Entsprechend den Daten, die der Bitzahl 3 entsprechen, ist die Umordnungseinheit leer, da ein Durchlauf nicht startet oder endet.Corresponding the data corresponding to the bit number 3 is the rearrangement unit empty, as a pass does not start or end.
Entsprechend den Daten, die der Bitszahl 4 entsprechen, wird ein Ende eines Durchlauf für Kontext 1 angezeigt. Daher wird das Codewort "101" in die dem Kontext 1 zugeteilte Codewortspeicherstelle geschrieben (Codewortspeicherstelle 1), wie durch die Zeigerspeicherstelle für Kontext 1 angezeigt ist. Die Kopf- und Nachlaufzeiger bleiben dieselben, und der Wert in der Zeigerspeicherstelle für Kontext 1 wird nicht wieder verwendet; so ist er "don't care".Corresponding the data corresponding to the number of bits 4 becomes one end of a pass for context 1 is displayed. Therefore, the codeword becomes "101" in FIG the codeword location allocated to context 1 is written (Codeword location 1), as by the pointer location for context 1 is displayed. The head and tail pointers remain the same and the value in the pointer location for context 1 will not return used; so he is "do not care".
Entsprechend den Daten, die der Bitzahl 5 entsprechen, ist die Umordnungseinheit leer, da ein Durchlauf nicht startet oder endet. Entsprechend den Daten, die der Bitzahl 6 entsprechen, kommt derselbe Typ Operationen wie vorstehend beschrieben für Bit 2 vor.Corresponding the data corresponding to the number of bits 5 is the rearrangement unit empty, as a pass does not start or end. According to the Data corresponding to the bit number 6 comes the same type of operations as described above for Bit 2 ahead.
Entsprechend den Daten, die einer Bitzahl 7 entsprechen, kommt das Ende des Durchlaufs für das Codewort für Kontext 0 vor. In diesem Fall wird das Codewort "0" in die Codewort-Speicherstelle geschrieben (Codewort-Speicherstelle 0), wie durch die Zeigerspeicherstelle für Kontext 0 angezeigt ist (Zeigerspeicherstelle 0). Dann wird der Wert an der Zeigerspeicherstelle wieder nicht verwendet, so daß er ein "don't care" Wert ist. Ebenso enthält die Codewort-Speicherstelle, welche durch den Kopfzeiger bestimmt ist, gültige Daten. Daher werden die gültigen Daten ausgegeben und der Kopfzeiger wird inkrementiert. Durch ein Inkrementieren des Kopfspeichers wird auf eine andere Codewort-Speicherstelle gezeigt, die ein gültiges Codewort enthält. Folglich wird dieses Codewort ausgegeben und der Kopfzeiger wird wieder inkrementiert. In diesem Beispiel werden Codewörter ausgegeben, wenn sie in Ordnung sind, was im Gegensatz dazu steht, wenn der Codewortspeicher vollständig voll ist.Corresponding the data corresponding to a bit number 7 comes the end of the pass for the codeword for context 0 ago. In this case, the codeword becomes "0" in the codeword storage location written (codeword storage location 0), as indicated by the pointer location for context 0 (pointer location 0). Then the value at the pointer memory location does not become again used so that he is a "do not care" value. As well contains the codeword storage location determined by the head pointer is, valid Dates. Therefore, the valid Data is output and the head pointer is incremented. Through a Incrementing the head store will be to another codeword location shown a valid Code word contains. Consequently, this codeword is output and becomes the head pointer again incremented. In this example, codewords are output if they are okay, which, in contrast, is when the Code word memory completely is full.
Ein Verarbeiten der uncodierten Bits kommt entsprechend der vorstehenden Beschreibung ständig vor. Die Codewortspeicherstellen werden nicht mit Hilfe ganz bestimmer Kontexte zugänglich gemacht, so daß Codewörter von einem der Kontext aus an einer ganz bestimmten Codewortspeicherstelle während des Codierens einer Datendatei gespeichert werden können.One Processing the uncoded bits comes according to the above Description constantly in front. The codeword storage locations are not completely determined Accessible to contexts made, so that codewords of one out of context at a very specific codeword location while encoding a data file.
Die Bit-PackungseinheitThe bit packing unit
Eine
Bitpackungseinheit ist in
Die
Bitpackungseinheit
In
Der
Stromzähler
Die
Packungslogik
Die
verschachtelten Wörter
sind in dem Speicher
Der
Speicher
In
einer Ausführungsform
sind beim Codierstart die Nachlaufzeiger
Der
Kopfspeicher
Der
Speicher
Die Packungslogik der ErfindungThe packing logic of invention
Ein
Blockdiagramm der Packungslogik ist in
In
einer Ausführungsform
werden Codewörter
an einen 13 Bit Bus mit nicht verwendeten genullten Bits eingegeben.
Diese genullten nicht benutzten Bits sind den "1" in "1N" Codewörtern benachbart,
so daß ein
Prioritäscodierer
in der Größeneinheit
Akkumulatoren
Basierend
auf dem aktuellen Wert des Akkumulators richtet die Schiebeeinheit
das aktuelle Wort aus, so daß es
irgendwelchen vorherigen Codewörtern
in das verschachtelte Wort folgt. Folglich werden Daten in dem Codierer
in der Decodierer-Reihenfolge verschoben. Der Ausgang der Schiebeeinheti
Register
Anfangs
wird ein Codewort eines Stroms von der Schiebeeinheit
Die
Steuerung wird sowohl für
den MUX
Umordnungs-OptionenShuffling options
Die
Erfindung schafft viele Optionen zum Durchführen des Umordnens an den Daten.
Beispielsweise müssen
in einem System mit mehreren Codeströmen die Codeströme in verschachtelten
Worten umgeordnet weden, wie in
Ein
Verfahren zum Umordnen von Daten in verschachtelten Worten besteht
darin, einen sogenannten Snooper-Decoder zu verwenden, wie er in
Jeder
codierte Datenstrom hat eine Durchlaufzählwert-Umordnungseinheit, die
eine Durchlaufzählwert-Umordnungseinheit
Ein Codierer mit einem Snooper-Decodierer kann in einem halben Duplex-System attraktiv sein, da der Snooper-Decodierer auch als ein normaler Decodierer verwendet werden kann. Ein Vorteil dieser Snooper-Decodiererlösung ist die Anwendbarkeit hinsichtlich eines termininistischen Codierers. Alternative Lösungen, die nachstehend noch besprochen werden, ohne eine Abhängigkeit von einem Snooper-Decodierer verwenden einfachere Modelle des Decodierers, um die Hardwarekosten zu verringern. Für die Decodierer, welche mehrere Codewörter in demselben Taktzyklus decodieren, kann ein Modellieren des Decodierers mit weniger Hardware als ein Decodierer selbst nicht möglich sein, was die Verwendung eines Snooper-Decodierers nötig macht. Wie nachstehend noch beschrieben wird, existieren für Decodierer, die nur meistens ein Codewort pro Zyklus decodieren, einfachere Modelle.One Encoder with a snooper decoder can work in half a duplex system be attractive, since the snooper decoder also as a normal Decoder can be used. An advantage of this snooper decoder solution is the applicability to a termininistic coder. Alternative solutions, which will be discussed below without dependence from a snooper decoder use simpler models of the decoder, to reduce hardware costs. For the decoders, which are several codewords in the same clock cycle, modeling the decoder not be possible with less hardware than a decoder itself, which requires the use of a Snooper decoder. As follows is still described exist for decoders, which only mostly decode one codeword per cycle, simpler models.
Eine andere Technik, um Daten für in pipelineart verbundene Decodierersysteme umzuordnen, die meistens ein Codewort pro Taktzyklus decodieren, basieren auf der Tatsache, daß die einzige Information, die zum Modellieren der Decoder-Anforderungen für codierte Daten benötigt wird, darin besteht, die Reihenfolge der Codewörter zu kennen (wobei alle Codewörter in Betracht zu ziehen sind, und nicht die Codewörter für jeden codierten Datenstrom unabhängig hiervon). Wenn eine Zeitmarke jedem Codewort zugeordnet wird, wenn sie die Durchlaufzählwert-Umordnungseinheit einstellt, bis, welches bitgepackte verschachtelte Wort die älteste ihm zugeordnete Zeitmarke hat, das nächste auszugebende verschachtelte Codewort.Another technique for rearranging data for pipelined decoder systems, which usually decode one codeword per clock cycle, is based on the fact that the only information needed to model the decoder requirements for coded data is to change the order of the codecs Knowing codewords (taking into account all codewords, not the codewords for each coded datastream independently). If a timestamp is assigned to each codeword, if it sets the swept count reordering unit, which bit-packed nested word the oldest timestamp associated with it has the next interleaved codeword to be output.
Ein
einbeispielhafte Codiererumordnungseinheit ist in Form eines Blockdiagramms
in
In
dieser Ausführungsform
ist der Snooper-Codierer durch einen einfachen Vergleicher ersetzt,
welcher festlegt, welche von den Bitpackeinheiten
Die Schritte, die in Verbindung mit mehreren Schlangen mit Zeitmarken verwendet sind, werden nachstehend kurz beschrieben. Diese Schritte sind die Codiereroperation. Keine Vereinfachung ist für die Fälle vorgesehen, wenn ein Durchlauf mit demselben Codewort sowohl startet als auch endet. Die Operationen können für jedes codierte Symbol überprüft werden (obwohl in der Praxis nicht alle Prüfungen durchgeführt werden müssen). Verschachtelte Worte werden als 32 Bit hinsichtlich der Größe angenommen.The Steps associated with multiple timestamped queues are briefly described below. These steps are the encoder operation. No simplification is provided for the cases when a run starts with the same codeword as well ends. The operations can be for each coded symbol to be checked (although in practice not all tests have to be carried out). nested Words are assumed to be 32 bits in size.
Die Decodiereroperationen sind ähnlich, obwohl die Codewörter nicht in der Schlange gesichert werden müssen. Es ist noch notwendig, die Zeitmarke der Codewörter in der Schlange zu sichern.The Decoder operations are similar, although the codewords do not need to be secured in line. It is still necessary the timestamp of the codewords secure in the queue.
Die
Funktion der Zeitmarken, die vorstehend erläutert ist, wird verwendet,
um die Ordnungsinformation der Codewörte rzu speichern. Eine äquivalente
Art, dasselbe Konzept auszudrücken
ergibt sich durch das Verwenden einer einzigen Schlange für alle Codewörter, d.h.
eine vermischte Schlange. In dem gemischten Schlangensystem, wie
es in
Für beliebige Ströme speichert der Umordnungsspeicher einen verschachtelten Strom ID für jedes Codewort. Jeder verschachtelte Strom hat seinen eigenen Kopfzeiger. Wenn eine Bitpackeinheit mehr Daten benötigt, wird der entsprechende Kopfzeiger verwendet, um so viele Codewörter abzurufen, wie benötigt werden, um ein neues verschachteltes Wort zu bilden. Dies kann ein Nachsehen an vielen Codewort-Speicherstellen sein, um festzustellen, welche Teile des richtigen Stroms sind. Alternativ hierzu kann dies ein Nachsehen in dem Codewortspeicher für zusätzliche Felder einschließen, um eine verknüpfte Liste durchzuführen.For any streams The reordering memory stores a nested stream ID for each Code word. Each nested stream has its own head pointer. When a bitpack unit needs more data, the corresponding one becomes Header used to retrieve as many codewords as needed to to form a new interlaced word. This can be a mistake be at many codeword storage locations to determine which ones Are parts of the right stream. Alternatively, this may be Look in the code word memory for additional fields to include a linked one List.
Eine andere Methode, um Ströme gemäß der Erfindung zu verschachteln, benutzt eine gemischte Schlange mit einer festen Stromzuweisung. Diese Methode benutzt einen einzigen Nachlaufzeiger, wie im Fall der gemischten Schlange, so daß keine Zeitmarken erforderlich sind. Ebenso werden mehrere Kopfzeiger in dem vorherigen Fall verwendet, so daß es keinen Overhead gibt, um die Daten von einem ganz bestimmten Strom abzugeben. Um dies zu erreichen, wird die Zuweisung von Codeworten zu verschachtelten Strömen entsprechend der folgenden Vorgabe für N Ströme durchgeführt: Ein Codewort M wird einem Strom M Modulo (mod) N zugewiesen. Verschachtelte Ströme können Codewörter aus irgendeinem Kontextfach oder einer Wahrscheinlichkeitsklasse gemäß dieser Methode haben. Wenn die Anzahl an Strömen eine Potenz von zwei ist, können M mod N berechnet werden, indem einige der höherwertigen Bits weggeworfen werden. Beispielsweise soll der Codewort-Umordnungsspeicher mit 12 Bits adressiert werden und es sollen vier verschachtelte Ströme verwendet werden. Der Nachlaufzeiger ist 12 Bit lang, und die zwei niedrigstwertigen Bits identifizieren den codierten Strom für das nächste Codewort. Vier Kopfzeiger mit 10 Bits sind jeweils implizit jeder der vier möglichen Kombinationen der zwei niedrigstwertigen Bits zugewiesen. Sowohl die Nachlauf- als auch die Kopfzeiger werden als normale binäre Zähler inkrementiert.A other method to currents according to the invention to nest, use a mixed snake with a solid one Current assignment. This method uses a single tracking pointer, as in the case of the mixed queue, so no time stamps required are. Likewise, multiple headers are used in the previous case so that it There is no overhead to the data from a very specific stream leave. To achieve this, the assignment of codewords corresponding to nested currents the following default for N streams carried out: A codeword M is assigned to a stream M modulo (mod) N. nested streams can codewords from any context or probability class according to this Have method. If the number of streams is a power of two, can M mod N are calculated by throwing away some of the higher order bits become. For example, the codeword reordering memory with 12 bits are addressed and four nested streams are used become. The tracking pointer is 12 bits long, and the two least significant ones Bits identify the encoded stream for the next codeword. Four head pointer with 10 bits each are implicitly each of the four possible ones Combinations of the two least significant bits assigned. Either the trailing and the head pointers are incremented as normal binary counters.
In dem Decodierer hat die Schiebeeinheit Register, um verschachtelte Wörter zu speichern. Die Schiebeeinheit stellt entsprechend ausgerichtete codierte Daten in dem Bitgenerator dar. Wenn der Bitgenerator einige codierte Daten verwendet, infor miert er die Schiebeeinheit. Die Schiebeeinheit präsentiert ordnungsgemäß ausgerichtete Daten aus dem nächsten verschachtelten Strom. Wenn die Anzahl codierter Datenströme N ist, hat die Schiebeeinheit N – 1 Taktzyklen, um die verwendeten Daten herauszuschieben, und um vielleicht ein anderes verschachtelts Codewort anzufordern, bevor dieser spezielle verschachtelte Strom wieder verwendet wird.In At the decoder, the shift unit has registers to nested words save. The sliding unit provides aligned accordingly encoded data in the bit generator. If the bit generator has some encoded data, it informs the sliding unit. The Sliding unit presented properly aligned Data from the next nested electricity. If the number of encoded data streams is N, has the sliding unit N - 1 Clock cycles to push out the data used, and maybe one to request another nested codeword before that special one nested power is reused.
Der Decodierer der ErfindungThe decoder of the invention
Die Erfindung weist einen Decodierer auf, welcher den Realzeit-Codierer mit einem begrenzten Umordnungsspeicher stützt. In einer Ausführungsform enthält der Decodierer reduzierte Speicheranforderungen und eine Komplexität, an dem ein Durchlaufzählwert für jede Wahrscheinlichkeitsklasse statt jedes Kontextfach erhalten bleibt.The The invention comprises a decoder comprising the real-time coder with a supports limited rearrangement storage. In one embodiment contains the decoder reduces memory requirements and complexity in which a pass count for every Probability class is preserved instead of every context box.
Eine Ausführungsform des Decodierersystems der ErfindungAn embodiment the decoder system of the invention
Im
System
Wenn
die codierten Daten
Entsprechend
dem Kontextfach fragt das Decodiersystem
Sobald
der Decodierzustand für
das aktuelle Kontextfach vom Speicher
Die
Schiebelogik
Die
Logik
Das
Decodiersystem
In
der ersten Stufe wird das aktuelle Kontextfach bestimmt (
In
der dritten Stufe des Pipeline-Decodierprozesses der Erfindung wird
ein dekomprimiertes Bit erzeugt (
Während der
vierten Stufe verarbeiter das Decodiersystem ein Codewort und/oder
aktualisiert den Durchlaufzählwert
(
Das Pipeline-Codieren der Erfindung beginnt tatsächlich mit einer Entscheidung, ob der Decodierprozeß zu starten ist. Diese Feststellung basiert darauf, ob es genug Daten gibt, um den Decodierer der Erfindung darzustellen. Wenn nicht genug Daten von der FIFO vorliegen, bleibt das Decodiersystem stecken (stalled). In einem anderen Fall kann das Decodiersystem stecken bleiben, wenn decodierte daten an eine periphere Einrichtung abgegeben werden, die nicht in der Lage ist, die Daten, die von dem Decodierer abgegeben worden sind, aufzunehmen, wie sie erzeugt werden. Beispielsweise kann, wenn der Decodierer eine Abgabe an ein Video-Display-Interface und der ihm zugeordneten Videoschaltung vorsieht, das Video zu langsam sein, so daß der Decodierer angehalten werden muß, um ein Video einholen zu können.The Pipeline coding of the invention actually begins with a decision whether the decoding process too start is. This statement is based on whether there is enough data to represent the decoder of the invention. If not enough Data from the FIFO, the decoding system gets stuck (Stalled). In another case, the decoding system may get stuck remain when decoded data is submitted to a peripheral facility which is unable to receive the data from the decoder have been submitted to record how they are generated. For example can if the decoder is a delivery to a video display interface and the video circuit assigned to it, the video is too slow be so that the Decoder must be stopped to get a video.
Sobald die Entscheidung getroffen worden ist, den Decodierprozeß zu starten, wird das akutelle Kontextfach durch das Kontextmodell bestimmt. Bei der Erfindung wird das aktuelle Kontextfach durch Überprüfen der vorherigen Daten festgestellt. Solche vorherigen Daten können in Zeilenpuffer gespeichert werden und können Daten von der aktuellen Zeile und/oder vorherigen Zeilen enthalten, beispielsweise in einem Kontextmodell für ein vorgegebenes Bit. Bits von Zeilenpuffer(n) können mit Hilfe eines Modells (template) bezüglich der vorherigen Daten ausgelegt werden, so daß das Kontextfach für die aktuellen Daten dementsprechend ausgewählt wird, ob die vorherigen prüfenden Daten zu dem Modell passen. Diese Zeilenpuffer enthalten Bitschiebe-Register. Ein Muster kann für jede Bitebene eines n Bitbildes verwendet werden. As soon as the decision has been made to start the decoding process, the current context is determined by the context model. In the invention, the current context subject is checked by checking the previous data detected. Such previous data can be found in Line buffers can be stored and can take data from the current one Line and / or previous lines, for example in one Context model for a given bit. Bits of line buffer (s) can be constructed using a model (template) regarding the previous data, so that the context box for the current Data selected accordingly will, whether the previous examining Data matches the model. These line buffers contain bit shift registers. A pattern can be for every bit plane of a n bit image can be used.
In einer Ausführungsform wird das Kontextfach dadurch gewählt, daß eine Adresse an einen Speicher während der nächsten Pipeline-Stufe abgegeben wird. Die Adresse kann eine vorherbestimmte Anzahl Bits, wie beispielsweise 3 Bits enthalten, um die Bitebene zu identifizieren. Mit Hilfe von drei Bits kann die Bitposition in Pixeldaten identifiziert werden. Die Form, die verwendet wird, um den Kontext zu bestimmen, kann auch als ein Teil der Adresse dargestellt werden. Die Bits, die verwendet werden, um die Bitebene zu identifizieren und die Bits, die die Form identifizieren, können kombiniert werden, um eine Adresse für eine spezifische Stelle im Speicher zu erzeugen, welcher die Zustandsinformation für das durch diese Bits festgelegte Kontextfach enthält. Beispielsweise kann durch Benutzen von drei Bits, um die Bitposition in einem ganz bestimmten Pixel zu bestimmen, und durch Verwenden der zen vorherigen Bits in derselben Position in jeder der vorherigen Pixel in dem Modell eine 13 Bit Kontext-Adresse erzeugt werden.In one embodiment, the context tray is selected by providing an address to a memory during the next pipeline stage. The address may contain a predetermined number of bits, such as 3 bits, to identify the bit-plane. With the help of three bits, the bit position in pixel data can be identified. The form used to determine the context can also be represented as part of the address. The bits used to identify the bit-plane and the bits identifying the shape can be combined to generate an address for a specific location in memory that contains the state information for the context slot specified by those bits. For example, by using three bits to determine the bit position in a particular pixel and by using the zen previous bits in the same position in each of the previous pixels in the model, a 13 bit context address can be generated.
Mit
Hilfe der Adresse, die mittels des Kontextmodells erzeugt worden
ist, wird auf den Speicher (z.B. RAM) zugegriffen, um die Zustandsinformation
zu erhalten. Der. Zustand enthält
den PEM-Zustand. Der PEM-Zustand schließt den aktuellen Wahrscheinlichkeitsvoranschlag
ein. Da mehr als ein Zustand denselben Code benutzen, schließt der PEM-Zustand
eine Wahrscheinlichkeitsklasse oder eine Codebestimmung ein, jedoch
nicht einen Index in einer Tabelle, wie beispielsweise die in
Sobald die vierte Stufe beeendet worden ist, werden ein neuer Bitgeneratorzustand und ein PEM-Zustand in den Speicher geschrieben. Ebenso wird in der fünften Stufe der codierte Datenstrom mit den nächsten Codewort verschoben. Die Schiebeoperation ist in der sechsten Stufe beendet.As soon as the fourth stage has been turned on, become a new bit generator state and a PEM state written to memory. Likewise, in the fifth Stage the coded data stream with the next codeword shifted. The shift operation is completed in the sixth stage.
In
Anfangs
werden der FIFO und Register
- *X bedeutet "dont' care"
- * X means "do not care"
Die
eingegebenen Daten variabler Länge
werden in verschachtelte Worte fester Länge unterteilt, wie in Verbindung
mit
Herkömmliche Decodierer (z.B. Huffman-Decodierer) sind nicht immer verzögerungstolerant. Information, die aus einem Decodieren aller vorherigen Codeworte bestimmt wird, ist erforderlich, um die Verschiebung variabler Länge durchzuführen, die notwendig ist, um das nächste Codewort zu decodieren. Andererseits schafft die Erfindung verzögerungstolerante Decodierer.conventional Decoders (e.g., Huffman decoders) are not always delay tolerant. Information resulting from decoding all previous code words is required to perform the variable-length displacement, the is necessary to the next Code word to decode. On the other hand, the invention provides delay tolerant Decoder.
Verschieben in dem DecodiersystemMove in the decoding system
Der Decodierer der Erfindung schafft eine Schiebelogik, um die verschachtelten Worte in dem richtigen Bitgenerator für ein Decodieren zu verschieben. Die Verschiebeeinheit der Erfindung erfordert kein besonderen Typ von Anfangszeichen "Kontext" ("by context") oder von "Wahrscheinlichkeits"-("by probability"-)Parallelismus. Es wird ein Coderer angenommen, welcher ein Codewort M dem Strom M mod N (M%N in der C-Sprache) zuteilt, wobei N die Anzahl Ströme ist. In der Erfindung werden codierte Daten aus dem aktuellen Strom dargestellt, bis ein Codewort angefordert wird. Nur dann werden die Daten auf den nächsten Strom geschaltet.Of the Decoder of the invention provides a shift logic to the interleaved Move words in the right bit generator for decoding. The shifting unit of the invention does not require a special type initial characters "by context" or "probability" - parallelism. A coder is assumed which transmits a codeword M to the stream M mod N (M% N in C language), where N is the number of streams. In the invention, coded data is represented from the current stream, until a codeword is requested. Only then will the data be on the next Power switched.
Die
Register
Für R-Codes
bestimmt die Codewort-Größeneinheit
Die
Schiebeeinheit
Der
FIFO ist niemals leer. Nur ein Wort kann pro Taktzyklus verwendet
werden, und nur ein Codewort kann pro Taktzyklus verschoben werden.
Die Verzögerung,
um das Verschieben durchzuführen,
wird kompensiert, da das System vier Codeworte vorher startet. Wenn
jedes Codewort hingeschoben wird, um ausgerichtete codierte Datenausgang
zu sein, werden die anderen Codewörter in den Registern
Die
Schiebeeinheit
Wenn
ein Codewort von dem System angefordert wird, werden die Register
in dem FIFO taktgesteuert, so daß Codewörter in der Richtung des Ausgangs
bewegt werden. Wenn die Schiebeeinheit
In
dieser Ausführungsform
wird das nächste
Codewortsignal in dem Bitgenerator empfangen, bevor die Entscheidung,
Ströme
zu schalten, getroffen wird. Wenn nicht garantiert werden kann,
daß das
nächste Codewortsignal
von dem Bitgenerator vor der Entscheidung empfangen wird, Ströme zu schalten,
kann ein vorausschauendes System, beispielsweise eines, das in
Die
Logik, welche das Codewort verwendet, ist in zwei Teile unterteilt,
eine Codewort-Vorverarbeitungslogik und eine Codewort-Verarbeitungslogik.
Zwei identische Pipeline-Vorverarbeitungseinheiten
Off-Chip-Speicher und KontextmodellOff-chip memory and context model
In einer Ausführungsform kann es erwünscht sein, viele Chips für externe Speicher- oder externe Kontextmodelle zu verwenden. In diesen Ausführungsformen ist es erwünscht, die Verzögerung zwischen einem Erzeugen eines Bits und dem Zurverfügunghaben des Bits, das an dem Kontextmodell verfügbar ist, zu verringern, wobei mehrere integrierte Schaltungen verwendet werden.In an embodiment it may be desired be, many chips for to use external storage or external context models. In these embodiments is it desirable the delay between generating a bit and having it available of the bit available on the context model, where several integrated circuits are used.
Über die
Auswähllogik
Zu beachten ist, daß auch eine andere Speicherarchitektur verwendet werden werden könnte. Beispielsweise kann ein Chip mit dem Kontextmodell und einem Speicher auf einem Chip und dem Codierer auf einem anderen Chip verwendet werden. Ebenso kann ein System ein Codierchip mit einem internen Speicher, welcher für einige Kontexte verwendet wird, und einen externen Speicher aufweisen, welcher für andere Kontexte verwendet wird.To Note that too another memory architecture could be used. For example can a chip with the context model and a memory on one Chip and the encoder can be used on another chip. As well For example, a system can use a coding chip with an internal memory for some Contexts is used and have an external memory, which for other contexts is used.
Bitgeneratoren mit einem SpeicherBit generators with one Storage
Das
Kontextmodell
In
einer Ausführungsform
weist der Speicher
Da Bitgeneratorzustände (Durchlaufzählwerte, usw), Wahrscheinlichkeitsklassen, nicht Kontextfächern, zugeordnet sind, gibt es eine zusätzliche Pipeline-Verzögerung bevor ein Bit an dem Kontextmodell verfügbar ist. Da ein Aktualisieren eines Bitgenerator-Zustands mehrere Taktzyklen dauert (der Bitgenerator-Zustandsspeicher bewirkt eine Verzögerung) werden mehrere Bitgenerator-Zustände für jede Geschwindigkeitsklasse verwendet. Wenn beispielsweise die Pipeline sechs Taktzyklen ist, dann hat der Bitgenerator-Zustandsspeicher sechs Einträge pro Wahrscheinlichkeitsklasse. der Zähler wird verwendet, um die richtige Speicherstelle auszuwählen. Selbst mit mehreren Einträgen pro Wahrscheinlichkeitsklasse ist die Größe des Speichers üblicherweise kleiner als die Anzahl an Kontexten. Der Speicher kann entweder mit mehreren Bänken von SRAM oder mit einer mehrtourigen Registerdatei ausgeführt sein.There Bitgeneratorzustände (Durchlaufzählwerte, etc), probability classes, not context fans, are assigned it's an extra Pipeline delay before a bit is available on the context model. As an update a bit generator state lasts several clock cycles (the bit generator state memory causes a delay) become several bit generator states for every Speed class used. For example, if the pipeline is six clock cycles, then the bit generator state memory six entries per probability class. the counter is used to select correct memory location. Even with multiple entries per probability class, the size of the memory is usually less than the number of contexts. The memory can either with several benches SRAM or with a multi-pass register file.
Da ein Durchlaufzählwert mehreren Kontexten zugeordnet werden kann, muß eine Ausführungsform den Wahrscheinlichkeitsbewertungszustand von einem oder mehreren Kontexten erweitern. In einer Ausführungsform wird der PEM-Zustand des Kontextes, welcher ein Durchlaufende bewirkt, aktualisiert. Statt ein Lesen, Modifizieren oder Schreiben eines Durchlaufzählwerts anzufordern, bevor er wieder gelesen werden kann, kann ein Durchlauf zählwert wieder verwendet werden, sobald das Modifizieren abgeschlossen ist.There a pass count can be assigned to multiple contexts, an embodiment must the probability evaluation state from one or more contexts. In one embodiment becomes the PEM state of the context which causes a pass end updated. Instead of reading, modifying or writing one Durchlaufzählwerts Again, a pass count can be requested before it can be reread be used as soon as the modification is completed.
Ein Teil des Signals, das sich in einen anderen Zyklus erstreckt, zeigt die Gültigkeit des Signals nur für diesen Zeitabschnitt, in welchem das Signal dargestellt ist, das sich in den anderen Zyklus erstreckt. Es sind bestimmte Signale dargestellt, die gesondert für mehr als einen Zyklus gültig sind. Ein Exemplar davon ist das Temp-Durchlaufzählsignal, welches an einer Stelle am Ende des zweiten Zyklus gültig ist, und dann wieder während des dritten Zyklus. Dies zeigt an, daß das Signal nur am Ende des Zyklus zu registrieren ist. Eine Liste von Abhängigkeiten ist ebenfalls in Tabelle 17 unten dargestellt, welche die Abhängigkeiten für denselben oder vorherigen Taktzyklus zu dem augenblicklichen Zeitpunkt wiedergibt, welchen das Signal als gültig spezifiziert. Tabelle 17
- * CM = Textmodell, SH = Schiebeeinheit, BS = Bit Generator, PEM = Wahrscheinlichkeitsbewertungsmodul
- ** [italics} bedeutet Abhängigkeiten von vorherigem Taktzyklus
- ✝✝ In einer Ausführungsform wird die meiste kombinatorische Logik für ein Aktualisieren des PEM Zustands in dem "PEM-Tabellen"-Schritt durchgeführt; "PEM-Aktualisieren" ist einfach eine Multiplexoperation
- * CM = text model, SH = shift unit, BS = bit generator, PEM = probability evaluation module
- ** [italics] means dependencies from previous clock cycle
- In one embodiment, most combinatorial logic is performed for updating the PEM state in the "PEM Table"step; PEM update is simply a multiplex operation
Implizites SignalisierenImplicit signaling
In einigen Ausführungsformen muß der Decodierer in den endlichen Umordnungspuffer des Codierers modellieren. In einer Ausführungsform wird dieses Modellieren mit einem impliziten Signalisieren erreicht. Wie vorher bereits hinsichtlich des Codierers erläutert, wird, wenn ein Codewort in dem Codierer gestartet wird, Raum in dem entsprechenden Puffer für das Codewort in der Reihenfolge reserviert, in welcher die Codewörter auf dem Kanal plaziert werden sollten. Wenn der letzte Platz in einem Puffer für ein neues Codewort reserviert ist, dann werden einige Codewörter in den komprifmierten Bitstrom plaziert, ob sie nun vollständig bestimmt worden sind oder nicht.In some embodiments, the decoder must model in the coder's finite reorder buffer. In one embodiment, this modeling is achieved with implicit signaling. As previously explained with respect to the coder, when a codeword is started in the coder, space in the corresponding buffer is reserved for the codeword in the order in which the codewords should be placed on the canal. If the last slot in a buffer is reserved for a new codeword then some codewords are placed in the compressed bitstream, whether or not they have now been completely determined.
Wenn ein partielles Codewort beendet werden muß, kann ein Codewort gewählt werden, welches kurz ist und korrekt die insoweit empfangenen Symbole spezifiziert. Beispielsweise kann in einem R-Codiersystem, wenn es notwendig ist, ein Codewort für eine Reihe von 100 MPSs in einem Durchlaufcode mit 128 maximalen Lauflängen vorzeitig zu vervollständigen, das Codwort für 128 MPSs verwendet werden, da dieses korrekt die ersten 100 Symbole spezifiziert.If a partial codeword must be terminated, a codeword can be selected, which is short and correctly specifies the symbols received so far. For example, in an R-coding system, if necessary, a codeword for a series of 100 MPSs in a pass code with 128 maximum run lengths prematurely to complete, the code word for 128 MPSs are used, since this correctly the first 100 symbols specified.
Andererseits kann ein Codewort, das 100 MPSs spezifiziert, auf die ein LPS folgt, verwendet werden. Wenn das Codewort vervollständigt worden ist, wird es aus dem Umordnungspuffer entfernt und dem Codestrom hinzugefügt. Hierdurch können vorher vervollständigte Codewörter in dem Codestrom plaziert werden. Wenn ein Erzwingen der Vervollständigung eines partiellen Codeworts zu einem Entfernen eines Codeworts aus dem vollem Puffer führt, dann kann ein Codieren fortdauern. Wenn ein Puffer noch voll ist, dann muß das nächste Codewort wieder vervollständigt und dem Codestrom hinzugefügt werden. Dieser Prozeß dauert an, bis der Puffer, welcher voll war, nicht mehr länger voll ist. Der Decodierer kann den Codierer für implizites Signalisieren modellieren, wobei ein Zähler für jede Bitgenerator-Zustandsinformations-Speicherstelle verwendet wird.on the other hand can a codeword specifying 100 MPSs followed by an LPS, be used. When the codeword has been completed, it will turn off removed from the reorder buffer and added to the code stream. hereby can previously completed codewords be placed in the code stream. If forcing the completion of a partial codeword for removing a codeword leads to the full buffer, then coding can continue. If a buffer is still full, then the next codeword has to be completed again and added to the code stream become. This process lasts until the buffer that was full is no longer full is. The decoder may signal the encoder for implicit signaling model using a counter for every Bitgenerator state information storage location is used.
In einer Ausführungsform hat jeder Durchlaufzähler (Wahrscheinlichkeitsklasse in diesem Biespiel) einen Zähler, welcher dieselbe Größe wie die Kopf- oder Nachlaufzähler in den Codierern (z.B. 6 Bits) ist. Jedesmal wenn ein neuer Durchlauf gestartet wird (eines neues Codewort abgefragt wird), wird der entsprechende Zählwert mit der Größe des Codewort-Speiches geladen. Jedesmal wenn ein Durchlauf gestartet wird (ein neues Codewort abgefragt wird) werden alle Zähler dekrementiert. Irgendein Zähler, welcher null erreicht, bewirkt, daß der entsprechende Durchlaufzählstand gelöscht wird (und das vorhandene LPS gelöscht wird).In an embodiment every run counter has (Probability class in this Biespiel) a counter, which the same size as the Heading or tracking counter in the encoders (e.g., 6 bits). Every time a new pass is started (a new code word is queried), the corresponding count with the size of the codeword memory loaded. Every time a run is started (a new codeword is queried) are all counters decremented. Any counter, which reaches zero, causes the corresponding pass count deleted is deleted (and the existing LPS becomes).
Optionen für ein Signalisieren für endlichen SpeicherOptions for signaling for finite Storage
Ein Realzeit-Codieren in der Erfindung erfordert, daß der Decodierer Durchläufe von MPSs behandelt, auf die nicht ein LPS fordert und die nicht die maximale Lauflänge sind. Dies kommt vor, wenn der Codierer einen Durchlauf von MPSs beginnt, aber nicht einen genug begrenzten Umordnungsspeicher hat, um zu warten, bis der Durchlauf abgeschlossen wird. Diese Bedingung erfordert, daß ein neues Codewort zu decodieren ist, und das nächste Mal dieses Kontextfach verwendet wird; dieser Zustand muß dem Decodierer signalisiert werden. Drei mögliche Wege, um den Decodierer zu modifizieren, werden nachstehend beschrieben.One Real-time coding in the invention requires the decoder to make runs of MPSs that are not challenged by an LPS and not the ones that are treated maximum run length are. This happens when the encoder passes through MPSs starts but does not have a enough limited reordering memory, to wait until the run is completed. This condition requires that one new code word to decode, and next time this context box is used; this condition must be signaled to the decoder. Three possible Ways to modify the decoder will be described below.
Wenn der Puffer voll ist, muß der Durchlaufzählwert für das Kontextfach oder die Wahrscheinlichkeitsklasse, das bzw. die herausgezwungen ist, zurückgesetzt werden. Um dies wirksam durchzuführen, ist ein Speichern des Kontextfaches oder der Wahrscheinlichkeitsklasse in dem Codewortspeicher nützlich. Da dies nur bei Durchläufen benötigt wird, die noch nicht ein zugeordnetes Codewort haben, kann der Speicher, welcher zum Speichern des Codeworts verwendet ist, gemeinsam benutzt werden. In einigen System können, statt ein unvollständiges Wort herauszuzwingen, Bits in die Kontext/Wahrscheinlichkeitsklasse des (oder irgendein) Codeworts gezwungen werden, das in dem Puffer nicht abgefertigt ist, wenn der Puffer voll ist. Der Decodierer stellt dies fest und benutzt das entsprechende (falsche) Kontextfach oder die entsprechende Wahrscheinlichkeitsklasse.If the buffer is full, the must pass count for the Context tray or the probability class that is forced out is reset become. To do this effectively, is a store of the context bin or the probability class useful in the codeword memory. Because this only on runs needed which does not yet have an associated codeword, the memory, which is used to store the codeword, shared become. In some system, instead of an incomplete one Word out bits in the context / likelihood class of the (or any) codeword being forced in the buffer not cleared when the buffer is full. The decoder notice this and use the appropriate (wrong) context box or the corresponding probability class.
Bei einem Imstrom-Signalisieren werden Codeworte verwendet, um dies dem Decodierer zu signalisieren. In einer Ausführungsform werden die R2(k)- und R3(k)-Codedefinitionen geändert, um nichtmaximale Lauflängen von MPS zu erhalten, auf die nicht ein LPS folgt. Dies kann dadurch durchgeführt werden, daß ein Bit dem Codewort hinzugefügt wird, das mit der niedrigsten Wahrscheinlichkeit auftreten sollte. Dies ermöglicht eine eindeutig decodierbare Vorsilbe für die nicht-maximalen Lauflängen-Zählwerte. Tabelle 18 zeigt einen Ersatz für R2 (2) Codes, was ein im Strom-Signalisieren gestattet. Die Nachteile dieser Methode sind, daß die R-Code-Decodierlogik geändert werden muß, und daß es Kompressionskosten jedesmal gibt, wenn das Codewort mit der geringsten Wahrscheinlichkeit auftritt.at In a stream signaling, codewords are used to do this signal to the decoder. In one embodiment, the R2 (k) - and R3 (k) code definitions changed, by non-maximum run lengths from MPS that is not followed by an LPS. This can be done carried out be that one bit added to the codeword which should occur with the lowest probability. This allows a uniquely decodable prefix for the non-maximum run-length counts. Table 18 shows a replacement for R2 (2) codes, which allows one to signal in the stream. The disadvantages This method is that the R-code decoding logic changed must become, and that it There are compression costs every time the codeword is the least Probability occurs.
Tabelle 18 Table 18
In einigen Ausführungsformen führt der Decodierer ein implizites Signalisieren mit Hilfe von Zeitmarken durch. Ein Zähler hält eine Spur der aktuellen "Zeit" durch Inkrementieren jedesmal dann, wenn ein Codewort gefordert wird. Wenn jedoch ein Codewort gestartet ist, wird die aktuelle "Zeit" in einem dem Co dewort zugeordneten Speicher gesichert. Nachdem das erste Mal ein Codewort verwendet ist, wird der entsprechende gespeichert "Zeit"-Wert plus der Größe des Codierer-Umordnungspuffers mit der aktuellen "Zeit" verglichen. Wenn die aktuelle "Zeit" größer ist, wird ein implizites Signal erzeugt, so daß ein neues Codewort gefordert wird. Folglich ist der begrenzte Umordnungsspeicher in dem Codierer simuliert worden. In einer Ausführungsform werden genug Bits für "Zeit"-Werte verwendet, so daß alle Codeworte aufgezählt werden können.In some embodiments leads the Decoder an implicit signaling by means of timestamps by. A counter holds one Track the current "time" by incrementing every time a codeword is required. If, however, a Codeword is started, the current "time" is in saved to the Co dewort memory. After that The first time a codeword is used, the corresponding stored "time" value plus the size of the coder rearrangement buffer is stored compared with the current "time". If the current "time" is greater, an implicit signal is generated so that a new code word is required becomes. Consequently, the limited reordering memory is in the encoder been simulated. In one embodiment if enough bits are used for "time" values, so that everyone Code words enumerated can be.
Um den erforderlichen Speicher zu reduzieren, wird die Anzahl an Bits, welche für die Zeitmarken verwendet werden, auf einem Minimum gehalten. Wenn die Zeitmarken eine kleine Anzahl Bits benutzen, so daß Zeitwerte wieder verwendet werden, muß aufgepaßt werden, daß alle alten Zeitmarken vermerkt sind, bevor der Zähler Wiederbenutzungszeiten startet. Hierbei soll N die Größe der Anzahl Adressenbits für Schlange oder den Bitgenerator-Zustandsspeicher sein. Zeitmarken mit (N + 1) Bits können verwendet werden. Der Bitgenerator-Zustandsspeicher muß mehrere Zugriffe haben, vielleicht zwei Lese- und zwei Schreib-Zugriffe pro decodierten Bit. Ein Zähler wird verwendet, um zyklisch den Bitgenerator-Zustandsspeicher zu durchlaufen, indem einmal für jedes decodierte Bit inkrementiert wird. Eine Speicherstelle, die zu alt ist, wird gelöscht, so daß ein neues Codewort abgefragt wird, wenn es in Zukunft gebraucht wird. Dies garantiert, daß alle Zeitmarken überprüft werden, bevor irgendein Zeitwert wieder benutzt wird.Around reduce the required memory, the number of bits, which for The timestamps used are kept to a minimum. If the timestamps use a small number of bits so that time values to be used again, must be watched that all Old timestamps are noted before the meter re-uses starts. Here, N is the size of the number Address bits for Queue or the bit generator state memory. timestamps with (N + 1) bits be used. The bit generator state memory must have several Have accesses, maybe two read and two write requests per decoded bit. A counter is used to cyclically grant the bit generator state memory go through once for each decoded bit is incremented. A storage location that is too old, will be deleted, so that one new code word is queried, if it is needed in the future. This guarantees that everyone Checking timestamps, before any time value is used again.
Wenn der Bitgenerator-Zustandsspeicher kleiner als die Schlange ist, kann die Zählrate (der Zeitmarken-Zähler) und die erforderliche Speicherbandbreite reduziert werden, und zwar deswegen, da jede Zeitmarke (eine pro Bitgenerator-Zustandsspeicher) nur einmal bezüglich der Anzahl Zyklen geprüft werden muß, die erforderlich sind, um die ganze Schlange zu benutzen. Auch kann ein Speichern der Zeitmarken in einem anderen Speicher die geforderte Speicherbandbreite verringern. In einem System, was "0" Code- Worte für partielle Durchläufe verwendet, brauchen Zeitmarken für "1N" Codeworte nicht geprüft zu werden. In einem System, das "1N"-Codeworte für partielle Durchläufe benutzt, ist nur die Zeitmarke zu prüfen, bevor ein LPS erzeugt wird.If the bit generator state memory is smaller than the queue, can the count rate (the timestamp counter) and the required memory bandwidth can be reduced because of each timestamp (one per bit generator state memory) only once the number of cycles tested must become, which are needed to use the whole snake. Also can storing the time stamps in another memory the required Reduce memory bandwidth. In a system, which uses "0" partial-word code words do not need timestamps for "1N" codewords checked to become. In a system, the "1N" codewords for partial runs is used only to check the timestamp before generating an LPS becomes.
In einigen Ausführungsformen wird ein implizites Signalisieren mit einer Schlange während eines Decodierens durchgeführt. Das Verfahren kann in einem halben Duplexsystem brauchbar sein, in welchem die Hardware für ein Codieren während des Decodierens verfügbar ist. Die Wirkung der Schlange ist meistens dieselbe wie während des Codieren. Wenn ein neues Codewort gefordert wird, wird dessen Index in der Schlange plaziert und als ungültig markiert. Wenn die Daten von einem Codewort abgeschlossen sind, wird deren Schlangeneintrag als gültig markiert. Wenn Daten aus der Schlange genommen werden, um Raum für neue Codewörter zu schaffen, wird, wenn die herausgenommenen Daten als ungültig markiert sind, die Bitgenerator-Zustandsinformation von diesem Index aus gelöscht. Diese Löschoperation kann erfordern, daß der Bitgenerator-Zustandsspeicher eine zusätzliche Schreiboperation unterstützen kann.In some embodiments becomes an implicit signaling with a snake during one Decoding done. The method may be useful in half a duplex system, in which the hardware for a coding during of decoding available is. The effect of the snake is mostly the same as during the Coding. If a new codeword is required, its index becomes placed in the queue and marked as invalid. If the data are completed by a codeword, their snake entry as valid marked. When data is queued to allow room for new codewords create, if the removed data is marked as invalid are the bit generator state information from this index deleted. This deletion operation may require that Bitgenerator state memory may support an additional write operation.
Explizites Signalisieren teilt dagegen einen Pufferüberlauf in Form von verdichteten Daten mit. Ein Beispiel hierfür ist, ein zusätzliches Kontextfach zu haben, das einmal für jedes normale Kontextfach-Decodieren oder einmal für jedes Codewort verwendet wird, das decodiert wird. Bits, die aus dem zusätzlichen Kontextfach decodiert worden sind, zeigen an, wenn der Zustand auftritt, bei welchem ein neues codewort benötigt wird, und ein neues Codewort muß für das entsprechende normale Kontextfach decodiert werden. In diesem Fall müssen die Codeworte für diesen speziellen Kontext richtig umgerodnet werden. Da die Benutzung dieses Kontextes eine Funktion von etwas Bekanntem bezüglich der Umordnungseinheit ist (üblicherweise wird es nur einmal für jedes Codewort verwendet), kann der Speicher, der erforderlich ist, um den zusätzlichen Kontext umzuordnen, begrenzt oder implizit modelliert werden. Ebenso können die möglichen Codes für diesen zusätzlichen Kontext begrenzt werden.Explicit signaling, on the other hand, reports a buffer overflow in the form of compressed data. An example of this is to have an additional context pocket used once for each normal context-bin decode or once for each codeword being decoded. Bits coming from the extra context box indicate when the condition is occurring at which a new codeword is needed, and a new codeword must be decoded for the corresponding normal context bin. In this case, the codewords for this particular context need to be properly redrawn. Since the use of this context is a function of anything known about the reordering unit (usually it is used only once for each codeword), the memory required to reorder the additional context can be limited or implicitly modeled. Likewise, the possible codes for this additional context may be limited.
Ein implizites Signalisieren modelliert den begrenzten Codierer-Puffer, wenn decodiert wird, um ein Signal zu erzeugen, das anzeigt, daß ein neues Codewort decodiert werden muß. In einer Ausführungsform wird eine Zeitmarke für jeden Kontext erhalten. In einer Ausführungsform wird der Umordnungspuffer endlicher Größe des Codierers direkt modelliert. In einem halben Duplexsystem kann, da die Codierer-Umordnungsschaltung während des Decodierens verfügbar ist, diese verwendet werden, um die Signale für den Decodierer zu erzeugen.One implicit signaling models the limited encoder buffer, when decoded to produce a signal indicating that a new one is being generated Codeword must be decoded. In one embodiment becomes a timestamp for get every context. In one embodiment, the reorder buffer becomes finite size of the encoder directly modeled. In a half duplex system, since the encoder rearranging circuit while of decoding available These are used to generate the signals for the decoder.
Wie genau ein implizites Signalisieren erreicht wird, hängt von den Einzelheiten ab, wie der Codierer den vollen Pufferzustand erkennt und behandelt. Bei einem System mit einer gemischten Schlange mit fester Zuordnung kann das Verwenden von mehreren Kopfzeigern Wahlmöglichkeiten zulassen, was "Puffer voll" bedeutet. Bei einer entsprechenden Auslegung des Decodierers kann ein entsprechendes Modell bemessen werden.As exactly one implicit signaling is achieved depends on the details of how the encoder recognizes the full buffer state and treated. In a mixed snake system with Fixed allocation may involve the use of multiple head choices allow what "buffer full "means. With a corresponding design of the decoder, a corresponding Model are measured.
Im
folgenden wird eine Codierer-Operation beschrieben, und ein Modell
für ein
Benutzen durch den Codierer bei einer gemischten Schlange mit einer
fest Stromzuordnung, parallel zu einem Wahrscheinlichkeitssystem.
Für dieses
Beispiel soll der Umordnungspuffer
In dem Decodierer gibt es einen Zähler für jede Wahrscheinlichkeit. Wenn ein neues Codewort verwendet wird, um einen Durchlauf zu starten, wird der Zähler mit 192 geladen. Wenn zu irgendeinem Zeitpunkt ein neues Codewort bei irgendeiner Wahrscheinlichkeit verwendet wird, werden alle Zähler dekrementiert. Wenn irgendein Zähler null erreicht, wird die Lauflänge für diese Wahrscheinlichkeit null gesetzt (und das vorhandene LPS-Flag wird gelöscht).In The decoder has a counter for every Probability. If a new codeword is used to create a Run to start is the counter loaded with 192. If at any time a new codeword if any probability is used, all counters are decremented. If any counter reaches zero, the run length becomes for this Probability zero is set (and the existing LPS flag becomes deleted).
Es kann vorteilhaft sein, mehrere RAM Bänke (einen mehrtourigen Speicher, eine Simulation mit einem schnellen Speicher, usw.) zu verwenden, und zwar eine Bank für jeden codierten Datenstrom. Dadurch können alle Bitpackeinheiten Daten gleichzeitig aufnehmen, so daß ein Lesen mehreren Codewörtern für einen ganz bestimmten Strom ein Lesen bei anderen Strömen nicht behindern.It may be beneficial to multiple RAM banks (a multi-speed memory, a simulation with a fast memory, etc.), and a bank for every coded data stream. This allows all bitpack units Record data simultaneously so that reading multiple codewords for one very particular current does not hinder reading at other currents.
In anderen Systemen müssen mehrere Bitpackeinheiten sich für einen einzigen Speicher auf der Basis einer Codewort-Reihenfolge entscheiden, wie sie in dem Puffer gespeichert ist. In diesen Systemen kann ein Entfernen eines Antrags aus einem Puffer ein verschachteltes Wort nicht vervollständigen. Jede Biteinheit nimmt üblicherweise einen Bruchteil eines verschachtelten Wortes infolge auf. Jede Bitpackeinheit nimmt zumindest eine Anzahl Bits auf, die gleich der kürzesten Codewortlängen sind (z.B. 1 Bit) und höchstens eine Anzahl Bits, die gleich der größten Codewortlänge sind (z.B. 13 Bits). Verschachtelte Worte können nicht abgegeben werden, bis die vollständig sind und müssen in der Initialisierungsreihenfolge abgegeben werden. In diesem Beispiel kann eine Bitpackeinheit zum Puffern 13 verschachtelte Worte haben; dies ist die maximale Anzahl an verschachtelten Worten, die mit Codewörtern maximaler Länge vervollständigt wer den können, während ein anderer Strom ein anstehendes verschachteltes Wort hat, das Codewörter minimaler Länge aufnimmt.In other systems need several bit packing units for a single memory based on a codeword order decide how it is stored in the buffer. In these systems removing a request from a buffer may be a nested one Do not complete word. Each bit unit usually takes a fraction of a nested word due to. Each bitpack unit takes at least a number of bits equal to the shortest Codeword lengths are (e.g., 1 bit) and at most a number of bits equal to the largest codeword length (e.g., 13 bits). Nested words can not be delivered until the complete are and must be in the initialization order. In this example For example, a bitpack unit for buffering may have 13 nested words; this is the maximum number of nested words using codewords maximum length completed who can, while one other stream has a pending word pending, the codewords are min Length absorbs.
Ein System, in welchem jedes Codewort zwei Schreibvorgänge und einen Lesevorgang bei einem Speicher erfordert, kann weniger erwünscht für eine Hardware-Ausführung sein, als ein System, welches zwei Schreib- und zwei Lesevorgänge durchführt. Wenn dies für das beispielhafte System mit vier Strömen gewünscht wurde, könnten Bitpackeinheiten 1 und 2 gemeinsam einen Speicherlesezyklus und Bitpackeinheiten 1 und 3 gemeinsam einen anderen Lesezyklus (oder irgendeine andere beliebige Kombination) benutzen. Obwohl dies die Größe der benötigen Pufferung nicht reduzieren würde, würde es eine höhere Transferrate in der Bitpackeinheit zulassen. Dies kann es den Bitpackeinheiten ermöglichen, die Kapazität des codierten Datenkanals besser auszunutzen.A system in which each codeword requires two writes and one read at a memory may be less desirable for a hardware implementation than a system that performs two writes and two reads. If this is the case for the exemplary four stream system If desired, bitpack units 1 and 2 could share a memory read cycle and bitpack units 1 and 3 could share a different read cycle (or any other combination). Although this would not reduce the size of the buffering required, it would allow a higher transfer rate in the bitpack unit. This may allow bitpack units to better utilize the capacity of the encoded data channel.
Systeme mit einem Speicher fester GrößeSystems with a memory fixed size
Ein Vorteil eines Systems, das mehrere Bitgenerator-Zustände hoher Wahrscheinlichkeitsklasse hat, besteht darin, daß das System ein verlustbehafetes Codieren stützen kann, wenn ein Speicher fester Größe überläuft. Dies kann bei einer Bildkompression für einen Rahmenpuffer und andere Anwendungsfälle brauchbar sein, die jedoch nur eine begrenzte Menge codierter Daten speichern.One Advantage of a system that has multiple bit generator states higher Probability class, is that the system is lossy Support coding can if a memory of a fixed size overflows. This can be done with image compression for one However, frame buffers and other applications may be useful store only a limited amount of encoded data.
Für Systeme mit einem Speicher fester Größe, werden die mehreren Bitgeneratorzustände für jede Wahrscheinlichkeit jeweils einem Teil der Daten zugeordnet. Beispielsweise könnten jeweils acht Zustände einer ganz bestimmten Bitebene für acht Bitdaten zugewiesen werden. In diesem Fall wird eine Schiebeeinheit jedem Teil der Daten zugeordnet, im Unterschied zu Schiebeeinheiten, die nacheinander das nächste Codewort erzeugen. Zu beachten ist, daß die Daten nicht durch eine Bitebene geteilt werden müssen. Ebenso wird in dem Codierer kein Verschachteln durchgeführt; jeder Teil der Daten wird einfach bitgepackt. Ein Speicher wird jedem Teil der Daten zugeordnet.For systems with a memory of fixed size, be the multiple bit generator states for every probability each associated with a portion of the data. For example, each could eight states a very specific bit level for eight bit data to be assigned. In this case, a sliding unit becomes each Part of the data assigned, in contrast to sliding units, the one after the other Generate codeword. It should be noted that the data is not covered by a Bitebene must be shared. Likewise, no interleaving is performed in the encoder; everyone Part of the data is simply bit-packed. A memory becomes everyone Part of the data assigned.
Eine Speicherverwaltung für codierte Daten ist für Systeme dargestellt, die alle Daten in einem Speicher fester Größe speichern, und für Systeme, die Daten an einen Kanal mit einer maximal zulässigen Bandbreite übertragen. In diesen beiden Systemen ist eine maßvolle Verschlechterung in einem verlustbehafteten System erwünscht. Verschiedene Datenströme werden für Daten mit unterschiedlicher Wichtigkeit verwendet, so daß wenige wichtige Ströme gespeichert oder nicht übertragen werden können, wenn nicht eine ausreichende Speichermöglichkeit oder Bandbreite verfügbar ist.A Memory management for coded data is for Systems that store all the data in a fixed-size memory, and for Systems that transmit data to a channel with a maximum allowed bandwidth. In these two systems is a moderate deterioration in a lossy system desired. Different data streams will be for data used with varying importance so that few important streams saved or not transferred can be if there is not enough memory or bandwidth available.
Wenn
ein Speicher verwendet wird, müssen
die codierten Daten so gespeichert werden, daß auf sie zugegriffen werden
kann, so daß weniger
wichtige Datenströme
weggeworfen werden können,
ohne daß die Möglichkeit
verloren geht, wichtige Datenströme
zu decodieren. Da codierte Daten eine variable Länge haben, kann eine dynamische
Speicherzuteilung verwendet werden.
Anfangs zeigt jeder Zeiger, der einem Strom zugeordnet ist, auf den Beginn einer Speicherseite, und der freie Zeiger auf die nächste verfügbare Speicherseite. Codierten Daten aus einem ganz bestimmten Strom werden an einer Speicherstelle gespeichert, die durch den entsprechenden Zeiger adressiert ist. Der Zeiger wird dann auf die nächste Speicherstelle inkrementiert.At first Each pointer associated with a stream points to the beginning one memory page, and the free pointer to the next available memory page. Coded data from a very specific stream will be sent to one Memory location saved by the corresponding pointer is addressed. The pointer is then incremented to the next memory location.
Wenn der Zeiger das Maximum für die aktuelle Seite erreicht, ergibt sich das folgende. Die Adresse des Startes der nächsten freien Seite (die in dem freien Zeiger gespeichert ist) wird mit der akuellen Seite gespeichert.(Entweder ein Teil des codierten Datenspeichers oder ein gesonderter Speicher oder eine Registerdatei könnten verwendet werden). Der aktuelle Zeiger wird auf die nächste freie Seite gesetzt und dann inkrementiert. Diese Aktionen ordnen eine neue Speicherseite einem ganz bestimmten Strom zu und schaffen Verbindungen, daß die Zuordnungsreihenfolge während des Decodierens festgestellt werden kann.If the pointer is the maximum for When the current page is reached, the following results. The address of the Start the next free page (which is stored in the free pointer) is with stored on the current page (either a part of the coded Data store or a separate store or register file could be used). The current pointer will be on the next free one Page set and then incremented. These actions arrange one new memory page to a very specific power and create connections, that the Assignment order during of the decoding can be determined.
Wenn alle Seiten in dem Speicher verwendet sind und es mehr Daten aus einem Datenstrom gibt, kann eines von drei Dingen getan werden. In allen drei Fällen wird ein Speicher, der dem am wenisten wichtigen Datenstrom zugeordnet ist, wieder einem wichtigeren Datenstrom zugeordnet werden und es werden keine Daten mehr des am wenigsten wichtigen Datenstroms gespeichert.If all pages in the memory are used and it gets more data out Given a data stream, one of three things can be done. In all three cases becomes a memory associated with the least important data stream is to be assigned to a more important data stream again and it No more data is stored on the least important data stream.
Erstens wird einfach die Seite, die gerade von dem am wenigsten wichtigesten Strom benutzt, den wichtigeren Daten zugeordnet. Da die typischen Entropie-Codierer interne Zustandsinformation benutzen, gehen alle der am wenigsten wichtigen Daten verloren, die vorher in dieser Seite gespeichert sind.First just becomes the page that is just the least important Power used, assigned to the more important data. Because the typical Entropy coders use internal state information, all go lost the least important data previously in this Page are stored.
Zweitens, die Seite, die gerade von dem am wenigsten wichtigen Strom verwendet wird, wird einfach dem wichtigeren Datenstrom zugeordnet. Im Unterschied zu dem vorherigen Fall wird der Zeiger auf das Ende der Seite gesetzt und da wichtigere Daten auf die Seite geschrieben werden, wird der entsprechende Zeiger dekrementiert. Dies hat den Vorteil, daß die am wenigsten wichtigen Daten am Anfang der Seite erhalten werden, wenn der wichtigere Datenstrom nicht die gesamte Seite erfordert.Second, the page currently being used by the least important stream is simply assigned to the more important data stream. Unlike the previous case, the pointer is placed at the bottom of the page, and as more important data is written to the page, the corresponding pointer becomes decremented. This has the advantage of getting the least important data at the top of the page if the more important data stream does not require the entire page.
Drittens statt die aktuelle Seite mit den am wenigsten wichtigen Daten wieder zuzuordnen, wird irgendeine Seite von am wenigsten wichtigen Daten wieder zugeordnet. Dies macht es erforderlich, daß die codierten Daten für alle Seiten unabhängig voneinander zu codieren sind, wodurch die erreichte Kompression verringert wird. Dies macht es auch erforderlich, daß die uncodierten Daten, die dem Start/Anfang aller Seiten entsprechen, identifiziert werden. Da eine von am wenigsten wichtigen Daten weggeworfen werden kann, ist eine größere Flexibilität im Hinblick auf eine vertretbare Verschlechterung bei verlustbehaftetem Codieren verfügbar. Die dritte Alternative kann insbesondere in einem System attraktiv sein, das eine fest Kompressionsrate über Bereiche des Bildes erreicht. Eine spezifizierte Anzahl von Speicherseiten kann einem Bereich des Bildes zugeordnet werden. Ob weniger wichtige Daten zurückgehalten werden oder nicht, kann von der Kompression abhängen, die in dem speziellen Bereich erreicht ist. (Der Speicher, der einem Bereich zugeordnet ist, kann nicht vollständig ausgenutzt werden, wenn eine verlustfreie Kompression gefordert wird, die weniger als die zugeordnete Speichermenge benötigt). Ein Erreichen einer festen Kompressionsrate in einem Bereich des Bildes kann einen beliebigen Zugriff auf die Bildbereich unterstützen.thirdly instead of the current page with the least important data again will allocate any page of least important data reassigned. This requires that the coded Data for all pages independent are to be coded from each other, which reduces the achieved compression becomes. This also requires that the uncoded data, the corresponding to the start / beginning of all pages. Since one of the least important data can be thrown away, is more flexibility in terms of a reasonable deterioration in lossy coding available. The third alternative may be particularly attractive in a system which achieves a fixed compression rate over areas of the image. A specified number of memory pages can be in one area be assigned to the image. Whether less important data withheld or not, may depend on the compression in the particular Area is reached. (The memory associated with an area is not complete be exploited when requiring lossless compression which requires less than the allocated amount of memory). One Achieving a fixed compression rate in an area of the image can support any access to the image area.
Die Fähigkeit, Daten in jede Seite von beiden Enden aus zu schreiben, kann genutzt werden, um den gesamten in dem System verfügbaren Speicherraum besser zu nutzen. Wenn alle Seiten zugeordnet sind, kann eine Seite, die ausreichend freien Raum an Ende hat, für eine Benutzung von dem Ende aus zugeordnet werden. Die Möglichkeit, beide Enden einer Seite zu nutzen, muß gegenüber den Kosten ausgeglichen sein, eine Spur zu der Stelle zu halten, zu der die zwei Datentypen passen (dies ist schwierig für den Fall, daß eine der Datentypen nicht wichtig war und einfach darüber geschrieben werden könnte).The Ability, To write data in each page from both ends can be used will improve the overall memory available in the system to use. If all pages are assigned, a page that can be has enough free space at the end for one use of the end from being assigned. The possibility, to use both ends of a page must be balanced against the cost be to keep a track to the point where the two data types fit (this is difficult for the case that one of the Data types was not important and could easily be written about it).
Nunmehr wird ein System betrachtet, bei welchem Daten in einem Kanal übertragen statt in einem Speicher gespeichert werden. Speicherseiten fester Größe werden verwendet, aber es wird nur eine Seite pro Strom benötigt. (Oder vielleicht zwei, wenn sie nach der Ping-Pong-Methode benötigt werden, um eine Pufferung für den Kanal zu schaffen, so daß, während die eine beschrieben wird, die andere für ein Ausgeben ausgelesen wird). Wenn eine Speicherseite voll ist, wird sie an den Kanal übertragen, und die Speicherstelle kann wieder benutzt werden, sobald die Seite übertragen ist. In einigen Anwendungsfällen kann die Seitengröße des Speichers die Größe von Datenpaketen, die in dem Kanal ver wendet worden sind, oder ein Vielfaches einer Paketgröße sein.Now Consider a system in which data is transmitted in a channel instead of being stored in a memory. Memory pages firmer To become size but only one page per stream is needed. (Or maybe two if needed after the ping-pong method to buffer for to create the channel, so that while one is written, the other is read out for output). When a memory page is full, it is transferred to the channel, and the storage location can be used again as soon as the page is transferred is. In some applications can change the page size of the memory the size of data packets, which have been used in the channel or be a multiple of a packet size.
In einigen Übertragungssystemen, beispielweise ATM (asynchroner Transfermode) können Prioritäten Paketen zugeordnet werden. ATM hat zwei Prioritätspegel, einen vorrangigen und einen sekundären. Sekundäre Pakete werden nur übertragen, wenn ausreichend Bandbreite verfügbar ist. Ein Schwellenwert kann verwendet werden, um zu bestimmen, welche Ströme vorrangig sind und welche sekundär sind. Eine andere Methode würde darin bestehen, einen Schwellenwert an dem Codierer zu benutzen, um Ströme nicht zu übertragen, welche weniger wichtig als ein Schwellenwert waren.In some transmission systems, For example, ATM (Asynchronous Transfermode) can be Priority Packets be assigned. ATM has two priority levels, a priority one and a secondary one. secondary Packages are only transmitted if enough bandwidth available is. A threshold can be used to determine which ones streams are priority and which secondary are. Another method would be to use a threshold at the encoder, around streams not to transfer which were less important than a threshold.
Gesonderte Bitgeneratoren für jeden CodeSeparate bit generators for each code
Das
Kontextmodell
Tabelle 19 Table 19
Um die gewünschte Geschwindigkeit zu erreichen, kann erforderlichenfalls ein Vor-Decodieren von einem oder mehreren Bits durchgeführt werden, um zu garantieren, daß decodierte Daten schnell verfügbar sind. In einigen Ausführungsformen werden, um die Notwendigkeit zu vermeiden, einen großen Durchlaufzählwert bei jedem Taktzyklus zu aktualisieren, sowohl das Codewort-Decodieren als auch das Durchlaufzählen für lange Codes aufgeteilt.Around the desired To achieve speed, if necessary, a pre-decode be performed by one or more bits to guarantee that decoded Data is readily available. In some embodiments To avoid the need, add a large pass count update every clock cycle, both codeword decoding as well as the run count for long Split codes.
Der Bitegenerator für R2 (0) Codes ist unkompliziert.Ein Codewort ist erforderlich, jedesmal wenn ein Bit angefordert wird. Das generierte Bit ist einfach das Codewort (XORed mit dem MPS).Of the Bitegenerator for R2 (0) codes is straightforward. A codeword is required every time when a bit is requested. The generated bit is just that Codeword (XORed with the MPS).
Codes für kurze Lauflängen, beispielsweise R2(1), R3(1), R2 (2) und R3 (2) werden auf die folgende Weise behandelt. Alle Bits in einem Codewort werden decodiert und in einer Zustandseinrichtung gespeichert, welche einen kleinen Zähler (1, 2 bzw. 3 Bits) und ein LPS Bit. Der Zähler und das LPS-Bit arbeiten als ein R-Code Decodierer.codes for a short time Run lengths For example, R2 (1), R3 (1), R2 (2), and R3 (2) become the following treated. All bits in a codeword are decoded and in one State device which has a small counter (1, 2 or 3 bits) and an LPS bit. The counter and the LPS bit work as an R-code decoder.
Für längere Codes,
wie R2 (k) und R3(k) für
k > 2 werden Bitgeneratoren
in zwei Einheiten unterteilt, wie in
Die
Einheit
Die
Einheit
Eine
Ausführung
der Zählwerteinheit
In
einer Ausführungsform
ist der Zähler
Eine
Ausführungsform
der Zähleinheit
Wenn
das neue Codewort decodiert wird, werden die durchgeführten Aktionen
durch den Codeworteingang bestimmt. Wenn der Eingang ein "0"-Codewort ist, wird der MPS Zähler
Von einer Symstemperspektive aus gesehen, müßte die Anzahl Codes klein für das System sein, um gut zu arbeiten, üblicherweise 25 oder weniger. Die Größe des Multiplexers, der für Bit- und das nächste Codewort betreffende Ausgänge benötigt wird, und der Decodierer zum Freigeben eines ganz bestimmten Bitgenerators muß für eine schnelle Operation begrenzt werden. Ebenso muß das Codewort von der Schiebeeinheit nicht zu hoch für einen hochschnellen Betrieb sein.From From a symmetrical perspective, the number of codes would be small for the System to work well, usually 25 or less. The size of the multiplexer, the for Bit and the next Code word related outputs needed and the decoder for enabling a particular bit generator must be for a quick Operation be limited. Likewise, the code word from the sliding unit does not have to too high for to be a high speed operation.
Gesonderte Bitgeneratoren für jeden Code erlauben eine Pipeline-Verarbeitung. Wenn alle Codewörter aus mindestens drei Bits resultierten, könnte eine Verarbeitung von Codewörtern in zwei Zyklen statt in einem in Form einer Pipeline vorgenommen werden. Hierdurch kann die Geschwindigkeit des Decodierers verdoppelt werden, wenn die Bitzähler ein Begrenzungsteil des Systems waren. Ein Weg, um dies zu erreichen, besteht darin, daß auf das Codewort mit einer Lauflänge null (das Codewort zeigt genau ein LPS an) ein Bit folgt, welches das nächste uncodierte Bit ist. Diese könnten als RN(k) + 1 Codes bezeichnet werden, und würden immer zumindest zwei Bits codieren. R2 (0) Codewörter und vielleicht einige der anderen kurzen Codewörter brauchen für eine entsprechende Geschwindigkeit nicht mit einer Pipeline verbunden zu sein.separate Bit generators for Each code allows pipeline processing. If all codewords off could result in processing of at least three bits codewords in two cycles instead of one in the form of a pipeline become. This can double the speed of the decoder be when the bit counter were a limiting part of the system. One way to achieve this is in that on the codeword with a run length zero (the codeword indicates exactly one LPS) follows a bit which the next uncoded bit is. These could are referred to as RN (k) + 1 codes, and would always be at least two bits encode. R2 (0) codewords and maybe some of the other short codewords need for an appropriate one Speed not to be connected to a pipeline.
Gesonderte Bitgeneratoren eignen sich selbst für eine Verwendung in Verbindung einem impliziten Signalisieren. Ein implizites Signalisieren für einen Codieren mit einem endlichen Speicher kann auf folgende Weise erreicht werden. Jeder Bitgenerator hat einen Zähler, der die Größe einer Schlangenadresse, beispielsweise 9 Bits hat, wenn eine Schlange mit einer Größe 512 verwendet wird. Jedesmal, wenn ein neues Codewort von einem Bitgenerator verwendet wird, wird der Zähler mit dem maximalen Wert geladen. Jedesmal wenn ein Bitgenerator ein Codewort anfordert, werden die Zähler für alle Bitgeneratoren drekrementiert. Jedesmal wenn ein Zähler null erreicht, wird der entsprechende Bitgenerator-Zustand gelöscht (beispielsweise der MPS-Zähler, der R2 (2) Zähler und LPS sowie der Zähler für einen langen Durchlaufzählwert werden gelöscht). Da ein Löschen vorkommen kann, selbst wenn ein ganz bestimmter Bitgenerator nicht freigegeben wird, gibt es keine Schwierigkeiten mit verbrauchten Zählwerten.separate Bit generators are themselves suitable for use in conjunction an implicit signaling. An implicit signaling for one Coding with a finite memory can be achieved in the following way become. Each bit generator has a counter the size of one Queue address, for example, has 9 bits if a queue used with a size 512 becomes. Every time a new codeword is used by a bit generator becomes, becomes the counter loaded with the maximum value. Every time a bit generator turns on Code word requests are the counters for all Bit generators are reduced in size. Every time a counter is zero reached, the corresponding bit generator state is deleted (for example, the MPS counter the R2 (2) counter and LPS and the counter for one long pass count will be deleted). As a deletion can happen even if a very specific bit generator does not is released, there is no difficulty with used up Counts.
Speicher-Initialisierung für jedes KontextfachMemory initialization for each context specialist
In Fällen, wo ein Speicher für jedes Kontextfach eine Wahrscheinlichkeits-Bewertungsinformation erhält, kann eine zusätzliche Speicherbandbreite gefordert werden, um den Decodierer (z.B. den Speicher) sehr schnell zu initialiseren. Ein schnelles Initialisieren des Decodierers kann ein Problem sein, wenn der Decodierer viele Kontexte hat, und sie alle gelöscht werden müssen. Wenn der Decodierer viele Kontexte (1K oder mehr) unterstützt und der Speicher nicht global gelöscht werden kann, würde eine unanehmbare große Zahl von Taktzyklen erforderlich sein, um den Speicher zu löschen.In cases where a memory for each context pocket receives probability score information, additional memory bandwidth may be required to initialize the decoder (eg, memory) very quickly. Fast initializing the decoder can be a problem if the decoder has many contexts and they all need to be cleared. If the decoder has many contexts (1K or more) and the memory can not be erased globally, an unacceptable large number of clock cycles would be required to erase the memory.
Um Kontexte schnell zu löschen, verwenden einige Ausführungsformen der Erfindung ein zusätzliches Bit, das hier als das initialisierte Zustandsbit bezeichnet wird, das mit jedem Kontext gespeichert wird. Folglich wird ein zusätzliches Bit in dem PEM-Zustand (z.B. 8 Bits) für jeden Kontext gespeichert.Around Quickly clear contexts, use some embodiments invention an extra bit, which is referred to here as the initialized status bit, the is saved with every context. Consequently, an additional Bit in the PEM state (e.g., 8 bits) for saved every context.
Der
Speicher für
jedes Kontextfach und die Initialisierungs-Steuerlogik sind in
Der
Wert im Register
Jeder
Kontextfach-Speichereintrag muß ein
initialisiertes Zustandsbit sein, das auf den aktuellen Wert des
Registers gebracht ist, bevor eine andere Decodieroperation beginnen
kann. Der Zähler
PEM mit schneller AdaptionPEM with fast adaptation
Der in der vorliegenden Erfindung verwendete PEM kann ein Adaptionsschema enthalten, um eine schnellere Adaption unabhängig von der verfügbaren Datenmenge zu ermöglichen.Vorliegende Erfindung kann das Decodieren ermöglichen, um anfangs schneller zu adaptieren und um langesamer zu adaptieren, wenn mehr Daten verfügbar sind, und zwar als eine Einrichtung, um einen genaueren Vorschlag bzw. Schätzwert zu schaffen. Ferner kann der PEM in einer feldprogrammierbaren Wörteranordnung (FPGA) zu oder einer ASIC-Implementierung einer PEM-Zustandstabelle/Einrichtungfestgelegt sein.Of the PEM used in the present invention may be an adaptation scheme included, for a faster adaptation regardless of the available amount of data to allow Invention may enable decoding to be faster at first adapt and slow down to adapt as more data becomes available, as a means to make a more precise proposal or estimated value to accomplish. Furthermore, the PEM may be in a field programmable word order (FPGA) to or an ASIC implementation of a PEM state table / device be.
Die nachstehenden Tabellen 20 bis 25 beschreiben eine Anzahl von Wahrscheinlichkeitsbewertungszustandseinrichtungen. Einige Tabellen benutzen nicht R3 Codes oder benutzen nicht lange Codes, um die Hardwarekosten zu verringern. Alle Tabellen, außer der Tabelle 20 verwenden spezielle schnelle "Adaptier"-Zustände, die verwendet werden, um bei Kodierstart schnell zu adaptieren, bis das erste LPS vorkommt. Diese schnellen Adaptionszustände sind initialisiert in den Tabellen dargestellt. Beispielsweise ist in Tabelle 21, wenn ein Decodieren beginnt, der aktuelle Zustand ein Zustand 0. Wenn ein MPS vorkommt, geht der Decodierer auf Zustand 35 über. Solange MPSs vorkommen, geht der Decodierer von dem Zustand 35 aus, schließlich geht er auf den Zustand 28 über. Wenn zu irgendeinem Zeitpunkt ein LPS vorkommt, geht der Decodierer ausgehend von den schnellen Adaptierzuständen auf einen Zustand über, welcher den korrekten Wahrscheinlichkeitszustand für die Daten darstellt, die insoweit erhalten worden sind.The Tables 20 to 25 below describe a number of probability score state devices. Some tables do not use R3 codes or use long Codes to reduce hardware costs. All tables except the Table 20 uses special fast "adapting" states that are used to adapt quickly at code start until the first LPS occurs. These fast adaptation states are initialized in the tables. For example in Table 21, when decoding begins, the current state a state 0. When an MPS occurs, the decoder goes to state 35 over. As long as MPSs occur, the decoder goes from state 35, finally goes he over to state 28. If at any time an LPS occurs, the decoder goes off starting from the fast adaptation states to a state over which represents the correct probability state for the data that have been obtained to that extent.
Für jede Tabelle geht, nachdem eine bestimmte Zahl MPSs erhalten worden ist, der Decodierer von schnellen Adaptierzuständen aus. In der gewünschten Ausführungsform gibt es, da die schnellen Adaptierzustände angeregt worden sind, keinen Mechanismus, um auf diese zurückzugehen, außer der Codierprozeß wird wieder gestartet. In anderen Ausführungsformen kann die Zustandstabelle entsprechend ausgelegt werden, um diese schnellen Adaptierzustände wieder einzugeben, um eine schnellere Adaption zuzulassen. Bei der Erfindung ist es für den Decodierer möglich, schneller die mehr versetzten Codes zu erreichen, um dadurch möglicherweise eine verbesserte Kompression zu gewinnen. Die schnelle Adaption kann für eine ganz bestimmte Tabelle durch Ändern des Tabelleneintrags für einen aktuellen Zustand 0 beseitigt werden, so daß die Tabelle nur auf einen Zustand nach oben oder nach unten in Abhängigkeit von den eingegebenen Daten übergeht.For each table goes after getting a certain number of MPSs that Decoder of fast Adaptierzuständen. In the desired embodiment there is no, since the fast Adaptierzustände have been stimulated Mechanism to go back to this except the coding process becomes started again. In other embodiments, the state table be designed according to these fast Adaptierzustände again to allow faster adaptation. In the invention is it for the decoder possible, faster to reach the more staggered codes, thereby possibly to gain improved compression. The fast adaptation can for a specific table by changing the table entry for one current state 0 are eliminated so that the table is only one State up or down depending on the entered Data passes.
Für alle Tabellen sind die Daten für jeden Zustand der Code für diesen Zustand der nächste Zustand bei einem positiven aktuellen Wert und der nächste Zustand bei einem negativen aktuellen Wert (unten). Sternchen zeigen Zustände an, bei welchen das MPS auf einen negativen aktuellen Wert geändert werden muß. Tabelle 20
- * Schalten für MPS
- * Schalten für MPS
- * Schalten MPS
- * Schalten MPS
- * Schalten MPS
- * Schalten MPS
- * Switching for MPS
- * Switching for MPS
- * Turn on MPS
- * Turn on MPS
- * Turn on MPS
- * Turn on MPS
Ein Addieren einer schnellen Addition zu einer Wahrscheinlichkeitsbewegung hilft nur bei dem Codierstart. Andere Methoden können angewendet werden, um eine Adaption während des Codierens zu verbessern, wenn die statistischen Wert eines Kontextfaches sich schneller ändern als die vorher beschriebenen PEM-Zustandstabellen folgen können.One Adding a fast addition to a probability move only helps with the coding start. Other methods can be applied to an adaptation during to improve the coding when the statistical value of a context tray change faster than the previously described PEM state tables can follow.
Eine Methode, um eine schnelle Adaption während des Codierens zu erhalten, besteht darin, einen Beschleunigungsterm zu dem aktuellen PEM-Zustandswert hinzuzufügen. Diese Beschleunigung könnte in einer PEM-Zustandstabelle untergebracht sein, indem jeder Code eine konstante Anzahl Mal (z.B. 8) wiederholt wird. Dann kann ein Beschleunigungsterm M (z.B. eine positive ganze Zahl) hinzugefügt oder von dem augenblicklichen Zustand, wenn er aktualisiert ist, sobtrahiert werden. Wenn M 1 ist, arbeitet das System genauso wie eins ohne eine Beschleunigung und es kommt zu der langsamsten Adaption. Wenn M größer als 1 ist, kommt es zu einer schnelleren Adaption. Anfangs kann M auf irgendeinen Wert größer als 1 gesetzt werden, um anfangs eine schnelle Adaption zu schaffen.A Method to get a fast adaptation during encoding, It is an acceleration term to the current PEM state value add. This acceleration could be housed in a PEM state table by any code a constant number of times (e.g., 8) is repeated. Then one can Acceleration term M (e.g., a positive integer) is added or from the current state, when updated, so it is become. If M is 1, the system works the same as one without an acceleration and it comes to the slowest adaptation. If M greater than 1, there is a faster adaptation. At first M can any value greater than 1 to initially provide a fast adaptation.
Eine Methode der Erfindung, den Wert von M zu aktualisieren, basiert auf der Anzahl aufeinanderfolgender Codewörter. Wenn beispielsweise eine vorherbestimmte Anzahl Codewörter nacheinander aufgetreten ist, dann wird der Wert von M erhöht. Wenn beispielsweise vier aufeinanderfolgende Codewörter "0""0""0""0" oder "1N""1N""1N""1N" sind, dann wird der Wert von M erhöht. Dagegen kann ein Schaltmuster zwischen "0" und "1N" Codewörtern verwendet werden, um den Wert von M zu erniedrigen. Wenn beispielsweise vier aufeinanderfolgende Codewörter "0""1N""0""1N" oder "1N""0""1N""0" sind, dann wird der Wert von M erniedrigt.A Method of the invention to update the value of M based on the number of consecutive codewords. For example, if a predetermined number of codewords has occurred consecutively, then the value of M is increased. If for example, four consecutive code words "0" "0" "0" "0" or "1N" "1N" "1N" "1N", then the value of M is increased. In contrast, a switching pattern between "0" and "1N" codewords may be used to decrease the value of M. For example, if four successive codewords "0" "1N" "0" "1N" or "1N" "0" "1N" "0", then the value of M is lowered.
Bei einem anderen Beschleunigungsverfahren werden Zustandstabellen verwendet, in welchen jeder Code S-mal wiederholt wird, wobei S eine positive ganze Zahl ist. S ist ein inverser Beschleunigungsparameter. Wenn S eins ist, ist die Adaption schnell, und wenn S größer ist, wird die Adaption langsamer. Der Wert von S kann anfangs auf 1 eingestellt werden, um anfangs eine schnelle Adaption zu erhalten. Mit Hilfe eines ähnlichen Verfahrens eines der vorstehend beschriebenen kann der Wert von S aktualisiert werden, wenn vier aufeinanderfolgende Codeworte "0""0""0""0" oder "1N""1N""1N""1N" sind. In einem solchen Fall wird der Wert von S erniedrigt. Im Gegensatz hierzu wird, wenn vier aufeinanderfolgende Codeworte "0""1N""0""1N" oder "1N""0""1N""0" sind, der Wert von S erhöht.at another acceleration method uses state tables in which each code is repeated S times, where S is a positive integer is. S is an inverse acceleration parameter. If S is one, the adaptation is fast, and when S is larger, the adaptation slows down. The value of S may initially be set to 1 to get a fast adaptation at first. With help a similar one Method of any of the above may be the value of S are updated when four consecutive codewords are "0" "0" "0" "0" or "1N" "1N" "1N" "1N". In such a Case, the value of S is lowered. In contrast, when four consecutive codewords "0" "1N" "0" "1N" or "1N" "0" "1N" "0", the value of S increases.
Die Definition von aufeinanderfolgenden Codeworten kann mehrere Bedeutungen habe. In einem "Kontext"-("by context"-)System können aufeinanderfolgende Codeworte auf aufeinanderfolgende Codeworte in einem Kontextfach hinweisen. In einem "Wahrscheinlichkeit"-System können aufeinanderfolgende Codeworte auf aufeinanderfolgende Codeworte in einer Wahrscheinlichkeitsklasse hinweisen. Andererseits können in jedem System aufeinanderfolgende Codeworte auf Codeworte global hinweisen (ohne Rücksicht auf ein Kontextfach oder eine Wahrscheinlichkeitsklasse). Für diese drei Beispiel und die Speicherbits, die erforderlich sind, um eine Codewörter-Historie zu erhalten, 3 × Anzahl von Kontextfächern, 3 × Anzahl von Wahrscheinlichkeitsklassen bzw. 3. Ein Aufrechterhalten einer Beschleunigung für jedes Kontextfach kann die beste Adaption schaffen. Da ein schlechtes Verfolgen oft auf eine globale Änderung in den uncodierten Daten zurückzuführen ist, kann ein globales Bestimmen einer Beschleunigung auch eine gute Adaption schaffen.The Definition of consecutive codewords can have multiple meanings have. In a "context" system, successive ones can be used Codewords on consecutive codewords in a context box clues. In a "probability" system can be consecutive Codewords on consecutive codewords in a probability class clues. On the other hand, in each system successive codewords on codewords globally to point out (without consideration to a context or probability class). For this three examples and the memory bits required to make a Codewords history to get, 3 × number contextual subjects, 3 × number of probability classes or 3. Maintaining one Acceleration for every context compartment can create the best adaptation. As a bad Often track for a global change in the uncoded data, Global determination of acceleration can also be a good one Create adaptation.
System-AnwendungenSystem applications
Ein Erfolg irgendeines Kompressionssystems besteht darin, Speicheranforderungen für einen Datensatz zu verringern. Das parallele System der Erfindung kann für eine Anwendung als Ersatz dienen, die laufend durch ein verlustfreies Codiersystem vollgefüllt worden ist, und kann bei Systemen angewendet werden, die mit Ton, Text, Datenbasen, Computer oder anderen digitalen Daten, Signalen oder Symbolen arbeiten. Beispielsweise schließen verlustfreie Codiersysteme eine Faksimile-Kompression, eine Datenbasis-Kompression, eine Kompression von grafischen Bitmap-Bildern und eine Kompression von Transformations-Koeffizienten in Bildkompressions-Standards, wie JPEG und MPEG ein. Die Erfindung ermöglicht eine kleine effiziente Hardware-Implementierung und relativ schnelle Software-Implementierung, so daß es dadurch eine gute Wahl selbst für Anwendungen gibt, die keine hohe Geschwindigkeit erfordern.One Success of any compression system is memory requirements for one Reduce the record. The parallel system of the invention may for one Application to serve as a substitute, running through a lossless Fully filled coding system and can be applied to systems that use sound, Text, databases, computers or other digital data, signals or symbols work. For example, lossless coding systems include a facsimile compression, a database compression, a compression graphical bitmap images and a compression of transform coefficients in image compression standards, like JPEG and MPEG. The invention enables a small efficient hardware implementation and relatively fast software implementation, so that's it a good choice for yourself There are applications that do not require high speed.
Der
tatsächliche
Vorteil, den die Erfindung gegenüber
dem Stand der Technik hat, ist die Möglichkeit eines Betriebs mit
sehr hohen Geschwindigkeit, insbesondere beim Decodieren. Auf diese
Weise können
mit Hilfe der Erfindung kostspielige hochschnelle Kanäle voll
genutzt werden, wie hochschnelle Computernetze, Satelliten und terrestriche
Funkkanäle.
Das
parallel arbeitende System der Erfindung ist auch anwendbar, um
eine effektive Bandbreite außerhalb
mäßig schnellen
Kanälen,
wie ISDN, CD-ROM und SCSI zu erhalten. Ein derartiges Bandbreiten-Anpassungssystem
ist in
Das
System der Erfindung ist eine ausgezeichnete Wahl für einen
Entropie-Codiererteil eines Realzeit-Videosystems ähnlich dem
Hochauflösungs-Fernsehsystem
(HDTV) und den MPEG-Video-Standards. Ein derartiges System ist in
Folglich sind ein Verfahren und eine Einrichtung zum parallelen Decodieren und Codieren von Daten beschrieben worden.consequently are a method and apparatus for parallel decoding and encoding data.
Claims (115)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US31611694A | 1994-09-30 | 1994-09-30 | |
US316116 | 1994-09-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE19536401A1 DE19536401A1 (en) | 1996-04-04 |
DE19536401B4 true DE19536401B4 (en) | 2006-07-20 |
Family
ID=23227538
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19536401A Expired - Fee Related DE19536401B4 (en) | 1994-09-30 | 1995-09-29 | Method and device for coding and decoding data |
Country Status (10)
Country | Link |
---|---|
JP (1) | JP3272580B2 (en) |
KR (1) | KR100240372B1 (en) |
CN (1) | CN1136659C (en) |
CA (1) | CA2156889C (en) |
DE (1) | DE19536401B4 (en) |
FR (1) | FR2725330B1 (en) |
GB (1) | GB2293735B (en) |
NL (1) | NL1001317C2 (en) |
RU (1) | RU2117388C1 (en) |
TW (1) | TW410311B (en) |
Families Citing this family (53)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2311704B (en) * | 1995-08-31 | 1998-04-15 | Ricoh Kk | Method and apparatus for compressing arbitrary data |
US5654703A (en) * | 1996-06-17 | 1997-08-05 | Hewlett-Packard Company | Parallel data compression and decompression |
US5963716A (en) * | 1996-12-02 | 1999-10-05 | Hewlett-Packard Company | Bi-directional data stream decompression |
US6222468B1 (en) * | 1998-06-04 | 2001-04-24 | Ricoh Company, Ltd. | Adaptive coding with adaptive speed |
CN1301014C (en) | 2001-11-22 | 2007-02-14 | 松下电器产业株式会社 | Variable length coding method and variable length decoding method |
ATE456901T1 (en) * | 2002-04-08 | 2010-02-15 | Eighting Kk | NETWORK GAMING METHOD, NETWORK GAMING DEVICE AND SERVER |
US7555540B2 (en) * | 2003-06-25 | 2009-06-30 | Microsoft Corporation | Media foundation media processor |
US7395490B2 (en) * | 2004-07-21 | 2008-07-01 | Qualcomm Incorporated | LDPC decoding methods and apparatus |
US7346832B2 (en) * | 2004-07-21 | 2008-03-18 | Qualcomm Incorporated | LDPC encoding methods and apparatus |
US7788106B2 (en) | 2005-04-13 | 2010-08-31 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Entropy coding with compact codebooks |
US7991610B2 (en) | 2005-04-13 | 2011-08-02 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Adaptive grouping of parameters for enhanced coding efficiency |
KR100818268B1 (en) * | 2005-04-14 | 2008-04-02 | 삼성전자주식회사 | Apparatus and method for audio encoding/decoding with scalability |
US7716551B2 (en) * | 2005-12-07 | 2010-05-11 | Microsoft Corporation | Feedback and frame synchronization between media encoders and decoders |
KR100717587B1 (en) * | 2006-07-05 | 2007-05-15 | 주식회사 대우일렉트로닉스 | Method and apparatus for detecting optical information and optical information processing apparatus |
US9319700B2 (en) | 2006-10-12 | 2016-04-19 | Qualcomm Incorporated | Refinement coefficient coding based on history of corresponding transform coefficient values |
US8599926B2 (en) | 2006-10-12 | 2013-12-03 | Qualcomm Incorporated | Combined run-length coding of refinement and significant coefficients in scalable video coding enhancement layers |
US8325819B2 (en) | 2006-10-12 | 2012-12-04 | Qualcomm Incorporated | Variable length coding table selection based on video block type for refinement coefficient coding |
US8565314B2 (en) | 2006-10-12 | 2013-10-22 | Qualcomm Incorporated | Variable length coding table selection based on block type statistics for refinement coefficient coding |
ES2450265T3 (en) | 2006-11-14 | 2014-03-24 | Nippon Telegraph & Telephone Corporation | Encoding method and image signal decoding method, encoding method and information source decoding method, devices for them, their programs, and memory medium with registered program |
CN101247496B (en) * | 2007-02-13 | 2012-10-10 | 华晶科技股份有限公司 | Method for dynamically regulating image frame |
KR100842042B1 (en) | 2007-07-16 | 2008-06-30 | 충남대학교산학협력단 | A method for code-blocks encryption which enables dynamic decryption of encrypted executable code |
PL2297856T3 (en) * | 2008-07-11 | 2023-05-08 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Method for encoding a symbol, method for decoding a symbol, method for transmitting a symbol from a transmitter to a receiver, encoder, decoder and system for transmitting a symbol from a transmitter to a receiver |
EP2437500A4 (en) * | 2009-05-29 | 2013-04-17 | Mitsubishi Electric Corp | Image encoding device, image decoding device, image encoding method, and image decoding method |
CN102055483B (en) * | 2009-10-29 | 2013-05-08 | 鸿富锦精密工业(深圳)有限公司 | Entropy decoding device |
KR101631944B1 (en) | 2009-10-30 | 2016-06-20 | 삼성전자주식회사 | Method and apparatus for entropy encoding and entropy decoding for accelarting video decoding |
EP2362657B1 (en) * | 2010-02-18 | 2013-04-24 | Research In Motion Limited | Parallel entropy coding and decoding methods and devices |
US8769686B2 (en) | 2010-02-26 | 2014-07-01 | Futurewei Technologies, Inc. | System and method for securing wireless transmissions |
JP5676744B2 (en) | 2010-04-13 | 2015-02-25 | フラウンホーファー−ゲゼルシャフト・ツール・フェルデルング・デル・アンゲヴァンテン・フォルシュング・アインゲトラーゲネル・フェライン | Entropy coding |
WO2012006738A1 (en) * | 2010-07-13 | 2012-01-19 | Research In Motion Limited | Methods and devices for data compression using context-based coding order |
KR101676477B1 (en) * | 2010-07-21 | 2016-11-15 | 삼성전자주식회사 | Method and apparatus lossless encoding and decoding based on context |
US8650456B2 (en) * | 2010-09-08 | 2014-02-11 | Marvell World Trade Ltd. | Decoder based data recovery |
US8913666B2 (en) * | 2010-10-01 | 2014-12-16 | Qualcomm Incorporated | Entropy coding coefficients using a joint context model |
CN102457284B (en) * | 2010-10-29 | 2014-09-03 | 池勇潮 | Digital data compression/decompression method and system |
JP5570437B2 (en) * | 2011-01-12 | 2014-08-13 | 三菱電機株式会社 | Entropy encoding device, entropy decoding device, entropy encoding method, and entropy decoding method |
KR101955142B1 (en) | 2011-01-14 | 2019-03-06 | 지이 비디오 컴프레션, 엘엘씨 | Entropy encoding and decoding scheme |
US8995523B2 (en) * | 2011-06-03 | 2015-03-31 | Qualcomm Incorporated | Memory efficient context modeling |
WO2013050612A1 (en) * | 2011-10-06 | 2013-04-11 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Entropy coding buffer arrangement |
JP2013214832A (en) * | 2012-03-30 | 2013-10-17 | Fujitsu Ltd | Compression and decompression system, compression device, decompression device, compression and decompression method, and compression program and decompression program |
RU2608464C2 (en) * | 2012-09-28 | 2017-01-18 | Телефонактиеболагет Лм Эрикссон (Пабл) | Device, method and network server for detecting data structures in data stream |
US9990202B2 (en) | 2013-06-28 | 2018-06-05 | Intel Corporation | Packed data element predication processors, methods, systems, and instructions |
US9516345B2 (en) | 2014-03-17 | 2016-12-06 | Qualcomm Incorporated | Systems and methods for low complexity forward transforms using mesh-based calculations |
US9432696B2 (en) | 2014-03-17 | 2016-08-30 | Qualcomm Incorporated | Systems and methods for low complexity forward transforms using zeroed-out coefficients |
CN105828083A (en) * | 2015-01-06 | 2016-08-03 | 中兴通讯股份有限公司 | Method and device for decoding data streams |
GB2539239B (en) * | 2015-06-10 | 2017-10-04 | Gurulogic Microsystems Oy | Encoders, decoders and methods utilizing mode symbols |
JP2019515592A (en) * | 2016-05-10 | 2019-06-06 | 華為技術有限公司Huawei Technologies Co.,Ltd. | Data transmission method, data reception method, transmission device, and reception device |
WO2017197358A1 (en) * | 2016-05-13 | 2017-11-16 | Intel Corporation | Polar code construction and encoding |
JP7027706B2 (en) * | 2017-06-15 | 2022-03-02 | ソニーグループ株式会社 | Transmitter, receiver, transmission method, reception method and recording medium |
CN107623524B (en) * | 2017-07-01 | 2020-07-31 | 中山大学 | Hardware-based Huffman coding method and system |
CN111384963B (en) * | 2018-12-28 | 2022-07-12 | 上海寒武纪信息科技有限公司 | Data compression/decompression device and data decompression method |
US11184021B2 (en) | 2019-03-15 | 2021-11-23 | Samsung Electronics Co., Ltd. | Using predicates in conditional transcoder for column store |
TWI825305B (en) * | 2019-04-16 | 2023-12-11 | 南韓商三星電子股份有限公司 | Transcoder and method and article for transcoding |
CN110635807B (en) * | 2019-08-05 | 2022-10-21 | 湖南遥昇通信技术有限公司 | Data coding method and decoding method |
CN112383313B (en) * | 2020-10-10 | 2023-08-04 | 中科驭数(北京)科技有限公司 | Parallel data decoding device and method |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3394352A (en) * | 1965-07-22 | 1968-07-23 | Electronic Image Systems Corp | Method of and apparatus for code communication |
US5045852A (en) * | 1990-03-30 | 1991-09-03 | International Business Machines Corporation | Dynamic model selection during data compression |
US5272478A (en) * | 1992-08-17 | 1993-12-21 | Ricoh Corporation | Method and apparatus for entropy coding |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA1291821C (en) * | 1986-09-15 | 1991-11-05 | Glen G. Langdon, Jr. | Arithmetic coding encoder and decoder system |
CA1291820C (en) * | 1986-09-15 | 1991-11-05 | William B. Pennebaker | Probability estimation based on decision history |
US5097261A (en) * | 1989-11-22 | 1992-03-17 | International Business Machines Corporation | Data compression for recording on a record medium |
EP0442548B1 (en) * | 1990-01-30 | 1995-08-02 | Laboratoires D'electronique Philips S.A.S. | Variable length coding and decoding devices for digital data |
KR950000286B1 (en) * | 1992-05-28 | 1995-01-12 | 삼성전자 주식회사 | Coding device and method for fax |
US5475388A (en) * | 1992-08-17 | 1995-12-12 | Ricoh Corporation | Method and apparatus for using finite state machines to perform channel modulation and error correction and entropy coding |
GB2272612B (en) * | 1992-11-06 | 1996-05-01 | Roke Manor Research | Improvements in or relating to ATM signal processors |
KR0134166B1 (en) * | 1992-11-24 | 1998-04-22 | 모리시타 요이찌 | Video signal recording apparatus and method thereof |
US5381145A (en) * | 1993-02-10 | 1995-01-10 | Ricoh Corporation | Method and apparatus for parallel decoding and encoding of data |
US5583500A (en) * | 1993-02-10 | 1996-12-10 | Ricoh Corporation | Method and apparatus for parallel encoding and decoding of data |
US5414423A (en) * | 1993-04-29 | 1995-05-09 | International Business Machines Corporation | Stabilization of probability estimates by conditioning on prior decisions of a given context |
-
1995
- 1995-08-24 CA CA002156889A patent/CA2156889C/en not_active Expired - Fee Related
- 1995-09-07 GB GB9518375A patent/GB2293735B/en not_active Expired - Fee Related
- 1995-09-07 TW TW084109370A patent/TW410311B/en not_active IP Right Cessation
- 1995-09-29 DE DE19536401A patent/DE19536401B4/en not_active Expired - Fee Related
- 1995-09-29 CN CNB951172328A patent/CN1136659C/en not_active Expired - Fee Related
- 1995-09-29 JP JP25379295A patent/JP3272580B2/en not_active Expired - Fee Related
- 1995-09-29 RU RU95116587A patent/RU2117388C1/en not_active IP Right Cessation
- 1995-09-29 NL NL1001317A patent/NL1001317C2/en not_active IP Right Cessation
- 1995-09-29 FR FR9511521A patent/FR2725330B1/en not_active Expired - Fee Related
- 1995-09-30 KR KR1019950033942A patent/KR100240372B1/en not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3394352A (en) * | 1965-07-22 | 1968-07-23 | Electronic Image Systems Corp | Method of and apparatus for code communication |
US5045852A (en) * | 1990-03-30 | 1991-09-03 | International Business Machines Corporation | Dynamic model selection during data compression |
US5272478A (en) * | 1992-08-17 | 1993-12-21 | Ricoh Corporation | Method and apparatus for entropy coding |
Non-Patent Citations (2)
Title |
---|
GORMISCH, M.J., ALLEN, J.D.: Finite State Machine Binary Entropy Coding. In: Proc. Data Compression Conference, 30. March 1993, Snowbird, UT, USA, S. 449 * |
LANGDON, G.G.: An Adaptive Run-Length Coding Algorithm. In: IBM Technical Disclosure Bulletin, Vol. 26, Nr. 7B, Dez. 1983 * |
Also Published As
Publication number | Publication date |
---|---|
GB2293735A (en) | 1996-04-03 |
DE19536401A1 (en) | 1996-04-04 |
FR2725330B1 (en) | 1999-01-22 |
CA2156889A1 (en) | 1996-03-31 |
GB9518375D0 (en) | 1995-11-08 |
GB2293735B (en) | 1997-10-22 |
JP3272580B2 (en) | 2002-04-08 |
FR2725330A1 (en) | 1996-04-05 |
NL1001317A1 (en) | 1996-04-01 |
JPH08116266A (en) | 1996-05-07 |
RU2117388C1 (en) | 1998-08-10 |
NL1001317C2 (en) | 1998-01-21 |
CN1133512A (en) | 1996-10-16 |
CA2156889C (en) | 1999-11-02 |
CN1136659C (en) | 2004-01-28 |
KR960012741A (en) | 1996-04-20 |
TW410311B (en) | 2000-11-01 |
KR100240372B1 (en) | 2000-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19536401B4 (en) | Method and device for coding and decoding data | |
DE4446072A1 (en) | Method and device for parallel coding and decoding of data | |
DE19635251C2 (en) | Method and apparatus for compressing any data | |
DE19506164C2 (en) | Method for compressing entered symbols into code words | |
DE4437790B4 (en) | Method and apparatus for using finite state machines to perform channel modulation and error correction and entropy coding | |
DE112006002148B4 (en) | Exchange buffer for video processing | |
EP2068448B1 (en) | Method and arrangement for arithmetic encoding and decoding with application of several tables | |
DE4314741A1 (en) | Huffman decoder architecture for higher operating speed and reduced memory requirements | |
DE10301362A1 (en) | Block data compression system, consisting of a compression device and a decompression device, and method for fast block data compression with multi-byte search | |
EP2109993B1 (en) | Device and method for encoding a block of transformation coefficients | |
DE2801611A1 (en) | PROCEDURE AND ARRANGEMENT FOR ADDRESSING AND STORING DATA IN MEMORIES WITH OPTIONAL ACCESS | |
DE19534730A1 (en) | Entropy encoder for facsimile transmission | |
DE4429017A1 (en) | Method for coding data in a data compression system, compression/decompression method and decompression system for decompressing compressed data | |
DE102007020292A1 (en) | Method for compressing data using run-length coding, in particular for medical image data | |
DE19958962A1 (en) | Video coder for variable length code, has code generator delivering code information and code length information to bit packer, via buffers | |
DE69535392T2 (en) | Apparatus for decoding variable length codes using relative addressing | |
DE19900150B4 (en) | Apparatus and method for encoding information with a finite state machine | |
DE60015755T2 (en) | LOSS-FREE ADAPTIVE CODING OF DATA OF A FINAL ALPHABET | |
CN112290953B (en) | Array encoding device and method, array decoding device and method for multi-channel data stream | |
DE69826971T2 (en) | TRANSMISSION SYSTEM WITH COORDERS OF VARIABLE LENGTH | |
DE69937761T2 (en) | Arithmetic coding / decoding of a digital information signal | |
DE19738917A1 (en) | Bidirectional scanning system for video coefficients | |
EP3424200A1 (en) | Identification coding device and identification coding device for data distribution in networks, and network elements comprising such devices | |
DE112012004727B4 (en) | Unpack a variable number of data bits | |
DE19860652A1 (en) | Video decoder for high picture quality |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8364 | No opposition during term of opposition | ||
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |
Effective date: 20140401 |