Die
vorliegende Erfindung bezieht sich auf die Kodierung von Transformationskoeffizientenblöcken, wie
z. B. eines Bildes, wie sie beispielsweise im Verlauf der digitalen
Bildkompressionsmethode nach dem JPEG2000-Standard vorkommt.The
The present invention relates to the coding of transform coefficient blocks, such as
z. As an image, such as in the course of the digital
Image compression method according to the JPEG2000 standard occurs.
Die
Schritte des JPEG2000-Kodierprozesses umfassen ein optionales Aufteilen
des Bildes in sogenannte Kacheln bzw. Tiles, d. h. rechteckige Bildbereiche,
eine Gleichsignalanteilpegelverschiebung, eine optionale Transformation
der Farbkomponenten, die Durchführung
einer diskreten Wavelet-Transformation,
eine skalare Quantisierung der Wavelet-Koeffizienten, eine Anordnung der quantisierten
Wavelet-Koeffizienten
in zweidimensionalen Feldern, sogenannten „Codeblöcken”, eine Block-Kodierung umfassend
einen sogenannten „Koeffizientenbitmodellierprozess” und einen
arithmetischen Kodiervorgang sowie ein Anordnen der kodierten Codeblock-Daten
zu einem standardkonformen Kodierstrom. Beschrieben sind die Schritte
beispielsweise in Christopoulos et al.: The JPEG2000 Still Image
Coding System: An Overview, IEEE Transactions an Consumer Electronics,
Bd. 46, Nr. 4, S. 1103–1127,
November 2000.The
Steps of the JPEG2000 encoding process include optional splitting
of the picture in so-called tiles or tiles, d. H. rectangular image areas,
a DC signal level shift, an optional transformation
the color components, the implementation
a discrete wavelet transformation,
a scalar quantization of wavelet coefficients, an array of quantized ones
Wavelet coefficients
in two-dimensional fields, so-called "code blocks", comprising a block coding
a so-called "coefficient bit-modeling process" and a
Arithmetic coding operation and arranging the coded code block data
to a standard coding current. Described are the steps
for example in Christopoulos et al .: The JPEG2000 Still Image
Coding System: An Overview, IEEE Transactions to Consumer Electronics,
Vol. 46, No. 4, pp. 1103-1127,
November 2000.
Der
rechenintensivste Teil unter diesen Schritten ist das Koeffizientenbitmodellieren.
Bei diesem Schritt wird ein Codeblock in sogenannte Magnitude- bzw.
Betragsbitebenen zerlegt, die in der Reihenfolge von den MSBs bzw.
den signifikantesten Bits zu den LSBs bzw. den wenigst signifikanten
Bits angeordnet bzw. erzeugt werden, sowie zugehörige Vorzeichenbits, die gesondert
gehandhabt bzw. betrachtet werden. Jede Betragsbitebene wird in
einer Folge von drei Coding-Pässen
bzw. Kodierdurchläufen
moduliert, mit Ausnahme der ersten Bitebene, die nur mit einem Kodierdurchlauf
moduliert wird. Diese Kodierdurchläufe durchlaufen die Bits einer
Betragsbitebene in einer bestimmten Reihenfolge. Angefangen wird
am Bit der Position oben links, dann drei darunter liegende Bits,
bevor um eine Spalte nach rechts gesprungen wird. So entsteht ein
sogenannter Stripe bzw. Streifen der Breite des Codeblocks und der
Höhe von
vier Koeffizienten. Nachdem ein Codeblock so in horizontaler Richtung
prozessiert wurde, wird der nächste
Stripe vier Koeffizientenpositionen tiefer verarbeitet usw.Of the
The most computationally intensive part among these steps is coefficient bit modeling.
In this step, a code block in so-called magnitude or
Amount bite levels decomposed in the order of the MSBs or
the most significant bits to the least significant LSBs
Bits are arranged, as well as associated sign bits, which are separate
be handled or considered. Each amount bit level is in
a sequence of three coding passes
or coding runs
modulated, except for the first bit plane, with only one coding pass
is modulated. These coding passes pass through the bits of a
Amount bit level in a specific order. It starts
at the bit of the position top left, then three bits underneath,
before jumping one column to the right. This is how you get started
Stripe of the width of the code block and the
Height of
four coefficients. After a code block so in the horizontal direction
was processed, becomes the next
Stripe four coefficient positions processed deeper, etc.
ISO/IEC15444-1
beschreibt näher,
ob und welches Kodierschema während
eines Kodierdurchlaufes zur Anwendung kommt. Insbesondere wird diese
Entscheidung koeffizientenweise getroffen. In anderen Worten ausgedrückt werden
beim ersten Kodierdurchlauf nur bestimmte Koeffizienten moduliert.
Unter den restlichen Koeffizienten kodiert der zweite Kodierdurchlauf
ebenfalls einen Teil. Der Rest wird von dem dritten Kodierdurchlauf
modelliert. Welcher Koeffizient zu welchem Kodierdurchlauf gehört, hängt u. a.
davon ab, ob der jeweilige Koeffizient signifikant ist bzw. von
der Signifikanz seiner direkten Nachbarn. ISO/IEC15444-1, im Folgenden
kurz der Standard genannt, definiert hierzu eine binäre Statusvariable
für jeden
Koeffizienten in einem Codeblock, den sogenannten „Signifikanzstatus”. Anfänglich auf „insignifikant” initialisiert,
wechselt sie auf „signifikant” an der
Betragsbitebene, an der erstmalig ein gesetztes Bit des Koeffizienten
zu modellieren ist und bleibt so bis zum Ende der Modellierung dieses Codeblocks
gesetzt.ISO / IEC15444-1
describes closer,
whether and which coding scheme during
a coding pass is used. In particular, this will
Decision taken by coefficient. In other words
only certain coefficients are modulated during the first coding pass.
Among the remaining coefficients encodes the second coding pass
also a part. The rest is from the third coding pass
modeled. Which coefficient belongs to which coding pass depends u. a.
depending on whether the respective coefficient is significant or of
the significance of its direct neighbors. ISO / IEC15444-1, below
called the standard for short, defines a binary status variable
for each
Coefficients in a block of code, the so-called "significance status". Initially initialized to "insignificant",
she changes to "significant" at the
Amount bit level, at the first time a set bit of the coefficient
modeling is and remains so until the end of the modeling of this code block
set.
Für ein Bit
eines Koeffizienten, das während eines
Kodierdurchlaufes in einer bestimmten Bitebene durch ein Kodierschema
modelliert wird, wird ein Datenbit zusammen mit jeweils einem Kontext-Index erzeugt.
Dieser Kontext-Index ergibt sich in erster Linie aus den Signifikanzstatus-Variablen des Koeffizienten
und seiner Nachbarn. Bei bestimmten Kodierdurchläufen, nämlich dem ersten und dem dritten,
ergibt sich, dass auch das Vorzeichenbit des aktuellen Koeffizienten
zusammen mit einem Kontext-Index zu modellieren ist, der wiederum
von den Signifikanzstatus variablen und der Vorzeichen seiner Nachbarn abhängt. Ein
sogenanntes „Betragsverfeinerungs”- bzw.
MR-Kodierschema bzw. der zweite Kodierdurchlauf wertet zusätzlich aus,
ob dieses Schema bereits bei vorhergehenden Bitebenen auf den zu modellierenden
Koeffizienten angewendet wurde, oder zum ersten Mal. Der nachgeschaltete
arithmetische Kodierer erwartet die Bit-Kontext-Paare in der auf
die oben beschriebene Weise festgelegten Reihenfolge.For a bit
a coefficient that occurs during a
Encoding run in a certain bit plane by a coding scheme
is modeled, a data bit is generated together with a context index.
This context index results primarily from the significance status variables of the coefficient
and his neighbors. For certain coding runs, the first and the third,
it follows that also the sign bit of the current coefficient
modeling together with a context index, which in turn
depends on the significance status variables and the sign of its neighbors. One
so-called "amount refinement" - or
MR coding scheme or the second coding pass additionally evaluates
whether this scheme already at previous bit levels on the modeled
Coefficient was applied, or for the first time. The downstream
arithmetic coder expects the bit-context pairs in the
the order described above.
Folgt
man der Reihenfolge, in der die Bit-Kontext-Paare von dem arithmetischen
Kodierer gemäß dem Standard
zu Enkodieren sind, ergibt sich daraus eine sequentielle Folge in
Bezug auf die Kodierdurchläufe,
wie sie im Vorhergehenden beschrieben wurde, und wie sie insbesondere
auch durch Software-Implementierungen eingehalten wird. Durch Implementierungen
in Hardware lässt
sich eine höhere
Kodiergeschwindigkeit erreichen. Beispielsweise können mehrere
Codeblöcke
unabhängig
voneinander gleichzeitig kodiert werden, indem mehrere Blockkodierer
parallel instantiiert werden. Dies stellt allerdings einen enormen
Ressourcenverbrauch dar, wie z. B. im Hinblick auf die benötigten Transistoren
auf einer integrierten Schaltung oder im Hinblick auf die Gatteräquivalente
bei einem FPGA (Field Programmable Gate Array).follows
one of the order in which the bit-context pairs of the arithmetic
Encoder according to the standard
are to be encoded, this results in a sequential sequence in
Regards the coding passes,
as described above and in particular
is also complied with by software implementations. Through implementations
in hardware
a higher one
Achieve coding speed. For example, several
code blocks
independently
be encoded from one another simultaneously by using multiple block encoders
be instantiated in parallel. However, this is an enormous
Resource consumption, such. B. with regard to the required transistors
on an integrated circuit or in terms of gate equivalents
with a FPGA (Field Programmable Gate Array).
In
Lian et al.: Analysis and Architecture Design of Block-Coding Engine for
EBCOT in JPEG 2000, IEEE Transactions an Circuits and Systems for Video
Technology, Bd. 13, Nr. 3, März
2003, S. 219–230,
wird beispielsweise ein Hardwaredesign des Block-Coders in JPEG2000
beschrieben, bei der Einsparungen an erforderlichen Überprüfungen pro Koeffizient
in jedem Durchlauf, ob der jeweilige Koeffizient zu dem jeweiligen
Durchlauf gehört,
erzielt werden, indem die Zugehörigkeitsüberprüfungen parallelisiert
werden und je nach Zugehörigkeit
keines oder eines oder mehr Bits zu dem jeweiligen Durchlauf 4-er-Spalten
oder Gruppen von 4-er-Spalten
pro Durchlauf übersprungen
werden. Einen Schritt weiter geht eine in Gangadhar und Bhatia:
FPGA based EBCOT Architecture for JPEG2000, Field-Programmable Technology
(FPT), 2003, Proceedings 2003, IEE International Conference, S.
228 bis 233, vorgeschlagene Hardwarelösung für den JPEG2000-Blockkodierer,
wonach die Durchläufe
parallelisiert werden, so dass weniger Taktzyklen zur Kodierung
der Codeblöcke
notwendig sind. Neben einem Speicher zur Speicherung der Betragsbits
und Vorzeichenbits ist dabei ein Puffer zur Zwischenspeicherung
aktualisierter Signifikanzstatusvariablen zwischen einer Verarbeitungseinheit
vorgesehenen, die sich um den ersten Kodierdurchlauf kümmert, und
einer zweiten Verarbeitungseinheit, die für die Kodierdurchläufe 2 und
3 zuständig
ist.For example, in Lian et al .: Analysis and Architecture Design of Block Coding Engine for EBCOT in JPEG 2000, IEEE Transactions on Circuits and Systems for Video Technology, Vol. 13, No. 3, March 2003, pp. 219-230 a hardware design of the block coder described in JPEG2000, which saves on required checks per Coefficient in each pass, whether the respective coefficient belongs to the respective pass can be achieved by the membership checks are parallelized and, depending on the affiliation of no or one or more bits to the respective pass 4-er columns or groups of 4-er columns be skipped per pass. A hardware solution for the JPEG2000 block coder proposed in Gangadhar and Bhatia: FPGA based EBCOT Architecture for JPEG 2000, Field Programmable Technology (FPT), 2003, Proceedings 2003, IEE International Conference, pp. 228-233, goes one step further, according to which Runs are parallelized, so that fewer clock cycles for coding the code blocks are necessary. In this case, in addition to a memory for storing the magnitude bits and sign bits, a buffer is provided for buffering updated significance status variables between a processing unit which handles the first coding pass and a second processing unit which is responsible for the coding passes 2 and 3.
In
der US 2004/0228539
A1 wird ein Bitebenen-Codierungsdurchlaufgenerator
beschrieben, der ein Bildcodierungsverfahren durchführt, das
folgende Schritte umfasst: Teilen eines Eingangsbildes in Teilbänder mittels
einer Wavelet-Transformation; Teilen jedes der bei dem Schritt der
Wavelet-Transformation erzeugten Teilbänder in Codeblöcke, die
jeweils eine vorbestimmte Größe aufweisen;
Erzeugen einer Bitebene, die von einem höchstwertigen Bit bis zu einem mindestwertigen
Bit in Einheiten des Codeblocks umfasst; Verarbeiten jedes von Abtastpunkten
in der Bitebene anhand einer beliebigen einer Mehrzahl von Codierdurchläufen; und
Durchführen
einer arithmetischen Codierung gemäß Ergebnissen der Codierdurchlaufverarbeitung;
bei der Codierdurchlaufverarbeitung werden aus einer Speicherungseinrichtung Signifikanz/Nicht-Signifikanz-Informationen
ausgelesen, die angeben, ob Abtastpunkte in einem Bereich, der die
Position eines derzeit in der Verarbeitung befindlichen Abtastpunktes
umfasst und der durch eine vorbestimmte Anzahl von Abtastwerten
besetzt ist, und diejenigen, die um den Bereich herum existieren, signifikant
oder nicht- signifikant
sind, und es wird ein paralleler Vergleich zwischen den Signifikanz/Nicht-Signifikanz-Informationen
und einer Mehrzahl von voreingestellten übereinstimmenden Mustern durchgeführt, wodurch
ein nächster
zu verarbeitender Abtastpunkt erfasst wird.In the US 2004/0228539 A1 there is described a bit-plane encoding sweep generator which performs a picture coding method comprising the steps of: dividing an input picture into sub-bands by means of a wavelet transform; Dividing each of the subbands generated at the wavelet transform step into code blocks each having a predetermined size; Generating a bit-plane comprising from a most significant bit to a least significant bit in units of the code block; Processing each of sample points in the bit plane based on any one of a plurality of encoding passes; and performing arithmetic coding according to results of the encoding sweep processing; in the coding pass processing, significance / non-significance information is read from a storage means indicating whether sample points are in a range which includes the position of a currently-processed sampling point and which is occupied by a predetermined number of samples, and those which exist around the area are significant or non-significant, and a parallel comparison is made between the significance / non-significance information and a plurality of preset matching patterns, thereby detecting a next sample point to be processed.
In
der US 2002/0027516
A1 wird ein Verfahren zur Entropiecodieren von Symbolen
beschrieben, die für
einen Codeblock, der Transformationskoeffizienten eines Digitalbildes
aufweist, repräsentativ
sind. Das Verfahren umfasst einen Signifikanzfortpflanzungsdurchlauf,
einen Betragsverfeinerungsdurchlauf und einen Reinigungsdurchlauf
zum Entropiecodieren der Symbole. Das Verfahren erzeugt vor dem Signifikanzfortpflanzungsdurchlauf
der aktuellen Bitebene eine erste Liste von Positionen derjenigen
Koeffizienten in dem Codeblock, die Symbole aufweisen, die während des
Signifikanzfortpflanzungsdurchlaufs der aktuellen Bitebene entropiecodiert werden
sollen. Das Verfahren erzeugt vor dem Betragsverfeinerungsdurchlauf
der aktuellen Bitebene ferner eine zweite Liste von Positionen derjenigen Koeffizienten
in dem Codeblock, die Symbole aufweisen, die während des Betragsverfeinerungsdurchlaufs
der aktuellen Bitebene entropiecodiert werden sollen. Das Verfahren
erzeugt ferner vor dem Reinigungsdurchlauf der aktuellen Bitebene
eine dritte Liste von Positionen derjenigen Koeffizienten in dem Codeblock,
die Symbole aufweisen, die während
des Reinigungsdurchlaufs der aktuellen Bitebene entropiecodiert
werden sollen.In the US 2002/0027516 A1 For example, a method of entropy coding symbols representative of a code block having transform coefficients of a digital image is described. The method includes a significance propagation sweep, an amount refinement sweep, and a sweep sweep for entropy coding the symbols. The method generates a first list of positions of those coefficients in the code block that have symbols that are to be entropy encoded during the significant bitplane significance traversal sweep, prior to the significant bitplane significance traversal sweep. The method also generates a second list of positions of those coefficients in the code block that have symbols that are to be entropy coded during the amount refinement sweep of the current bit plane before the current bit plane amount refinement pass. The method also generates a third list of positions of those coefficients in the code block that have symbols that are to be entropy coded during the cleaning pass of the current bit plane before the current bit plane is scanned.
In
der US 2003/035476
A1 liest ein Bitebenen-Prozessor einen Codeblock, der als
Einheit zum arithmetischen Codieren dient, aus einem SRAM aus. Nach
einem Konvertieren des Codeblocks in die Form einer Bitebene liefert
der Bitebenenprozessor Bitdaten an einen Durchlaufprozessor. Der
Durchlaufprozessor umfasst einen s-Durchlauf-Prozessor, einen r-Durchlauf-Prozessor
und einen c-Durchlauf-Prozessor. Jede von s-Durchlauf-, r-Durchlauf- und
c-Durchlauf-Verarbeitungen
wird parallel in einem derartigen Zustand durchgeführt, dass
eine Startzeit derselben durch einen Betrieb zweier Verzögerungseinheiten
um eine vorbestimmte Einheitszeit verschoben wird. Beispielsweise
werden bei JPEG200 Spezialzweck-Unterteileinheiten, die Daten in
drei jeweilige Durchläufe
eines s-Durchlaufs (Signifikanzdurchlaufs), r-Durchlaufs (Verfeinerungsdurchlaufs)
und c-Durchlaufs
(Reinigungsdurchlaufs) aufteilen/einteilen, und Verarbeitungsvorgänge dieser
Spezialzweck-Unterteileinheiten
parallelisiert. In diesem Fall wird auf Ergebnisse von Durchlaufverarbeitungen
in einer Bitebene eines Bits hoher Ordnung zum Zeitpunkt einer Durchlaufverarbeitung
in einer Bitebene eines Bits niedriger Ordnung Bezug genommen. Die
Vorverarbeitungen durch die Mehrzahl von Spezialzweck-Unterteileinheiten
können
parallel ausgeführt
werden, während
eine zeitliche Verzögerung
in einem Umfang gehalten wird, dass eine Quer-Bezugnahme, die unter
den Ergebnissen der Vorverarbeitungen nötig ist, durchgeführt wird.
Beispielsweise kann diese Quer-Bezugnahme eine in einer Richtung
erfolgende Bezugnahme sein, so dass auf ein Verarbeitungsergebnis
des s-Durchlaufs bei der r-Durchlauf-Verarbeitung
Bezug genommen wird und auf ein Verarbeitungsergebnis des r-Durchlaufs bei
der c-Durchlauf-Verarbeitung
Bezug genommen wird.In the US 2003/035476 A1 For example, a bit-plane processor reads out a code block serving as an arithmetic-coding unit from an SRAM. After converting the code block to the form of a bit-plane, the bit-plane processor supplies bit data to a sweep processor. The thread processor includes an s-pass processor, an r-pass processor, and a c-pass processor. Each of s-pass, r-pass and c-pass processes is performed in parallel in such a state that a start time thereof is shifted by an operation of two delay units by a predetermined unit time. For example, in JPEG200, special purpose subdividing units which divide / divide data into three respective passes of s-pass (significance pass), r-pass (refining pass) and c-pass (cleaning pass) and parallelize processing operations of these special-purpose subdivision units. In this case, results of pass-through processing in a bit plane of a high order bit at the time of pass processing in a bit plane of a low-order bit are referred to. The preprocessing by the plurality of special purpose subdividing units may be performed in parallel while maintaining a time delay to an extent that a cross-reference necessary among the results of the preprocessing is performed. For example, this cross-reference may be a one-way reference, so that reference is made to a processing result of the s-pass in the r-pass processing and to a processing result of the r-pass in the c-pass processing becomes.
Die US 2005/0094881 A1 beschreibt
eine Codiervorrichtung und ein Codierverfahren, bei denen eingegebene
Bildinformationen durch Folgendes codiert werden: Speichern, in
einer Speicherungseinrichtung, von Zustandsquantitätsinformationen,
die eine vorbestimmte Zustandsquantität darstellen, die verwendet
werden soll, während
sie gemäß einem Verarbeitungsstatus
des Codierprozesses sequentiell aktualisiert werden, wenn ein vorbestimmter
Codierprozess an den Bildinformationen durchgeführt wird; Durchführen des
Codierprozesses an den Bildinformationen für jede der Verarbeitungseinheiten durch
Verwendung der diesen entsprechenden Zustandsquantitätsinformationen
mit einer vorbestimmten Mehrzahl von Pixeln als Verarbeitungseinheit, wobei
die Zustandsquantitätsinformationen
mit der Mehrzahl von Pixeln, die der Verarbeitungseinheit der Bildinformationen
entsprechen, als ein Wort in der Speicherungseinrichtung gespeichert
werden, und wobei die Zustandsquantitätsinformationen, die zum Durchführen des
Codierprozesses an den Bildinformationen der Verarbeitungseinheit
notwendig sind, in Einheiten der Wörter aus der Speicherungseinrichtung
ausgelesen werden.The US 2005/0094881 A1 describes an encoding device and a coding method in which input image information is encoded by: storing in a memory direction, state quantity information representing a predetermined state quantity to be used while sequentially updating according to a processing status of the encoding process when a predetermined encoding process is performed on the image information; Performing the encoding process on the image information for each of the processing units by using the state quantity information corresponding thereto with a predetermined plurality of pixels as the processing unit, wherein the state quantity information having the plurality of pixels corresponding to the processing unit of the image information is stored as a word in the storage means; and wherein the state quantity information necessary for performing the encoding process on the image information of the processing unit is read out in units of the words from the storage means.
Es
bleibt aber weiterhin wünschenswert, eine
in Hardware effektiv implementierbare Lösung für die Kodierung von Transformationskoeffizientenblöcken zu
finden, wie sie eben beispielsweise bei der JPEG2000-Kodierung vorkommt.It
but remains desirable, a
hardware-effectively implementable solution for encoding transform coefficient blocks
find, as it happens, for example, in the JPEG2000 encoding.
Die
Aufgabe der vorliegenden Erfindung besteht darin, ein Verfahren
und eine Vorrichtung zum Kodieren eines Blockes von Transformationskoeffizienten,
wie z. B. diejenigen eines Bildes, zu schaffen, die eine effektivere
Implementierung in Hardware ermöglichen.The
The object of the present invention is a method
and an apparatus for coding a block of transform coefficients,
such as B. those of a picture, to create a more effective
Enable implementation in hardware.
Diese
Aufgabe wird durch eine Vorrichtung gemäß Anspruch 1 und ein Verfahren
gemäß Anspruch
22 gelöst.These
The object is achieved by a device according to claim 1 and a method
according to claim
22 solved.
Eine
erfindungsgemäße Vorrichtung
zum Kodieren eines Blockes von Transformationskoeffizienten, wobei
die Transformationskoeffizienten jeweils mittels mehrerer Betragsbits
dargestellt sind, so dass dieselben eine Folge von Betragsbitebenen
definieren, umfasst eine Kodiereinrichtung zum Durchlaufen der Betragsbits
einer vorbestimmten der Betragsbitebenen in Tupeln von jeweils einer
Mehrzahl von benachbarten Betragsbits und Kodieren vorbestimmter
der Betragsbits der Tupel in einen kodierten Datenstrom und eine
Vorhersageeinrichtung zum Vorhersagen, ob und, wenn ja, welcher
oder welche der Betragsbits unter den benachbarten Betragsbits der
vorbestimmten Betragsbitebene eines gemäß einer Reihenfolge des Durchlaufens
frühestens
als nächstes
an der Reihe seienden Tupels zu den vorbestimmten Betragsbits gehört, wobei
die Kodiereinrichtung ausgebildet ist, um die Kodierung abhängig von
der Vorhersage vorzunehmen.A
inventive device
for coding a block of transform coefficients, wherein
the transform coefficients each by means of several magnitude bits
are shown, so that they are a sequence of amount bitplanes
includes an encoder for traversing the magnitude bits
a predetermined one of the amount bit planes in tuples of one each
A plurality of adjacent magnitude bits and predetermined ones
the magnitude bits of the tuples into a coded data stream and a
Predicting means for predicting whether and, if so, which
or which of the magnitude bits among the adjacent magnitude bits of the
predetermined amount bit plane of one according to an order of the passing
at the earliest
next
belonging to the series tuple to the predetermined magnitude bits, wherein
the encoder is adapted to the coding depending on
to make the prediction.
Ein
Kerngedanke der vorliegenden Erfindung besteht darin, dass eine
effektivere bzw. effizientere Implementierung in beispielsweise
Hardware einer Transformationskoeffizientenblockkodierung erreicht
werden kann, wenn eine Vorhersageeinrichtung vorgesehen wird, die
vorhersagt, ob und, wenn ja, welcher oder welche der Betragsbits
unter den benachbarten Betragsbits der vorbestimmten Betragsbitebene
eines gemäß einer
Reihenfolge des Durchlaufens frühestens
als nächstes
an der Reihe seienden Tupels zu dem vorbestimmten Betragsbit gehört.One
The core idea of the present invention is that a
more effective or efficient implementation in for example
Hardware of a transform coefficient block coding reached
can be if a predictor is provided, the
predicts whether and, if so, which or which of the magnitude bits
below the adjacent magnitude bits of the predetermined magnitude bit-plane
one according to one
Order of running at the earliest
next
belonging to the series tuple belonging to the predetermined amount bit.
Gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung basiert die Vorhersage auf Betragsbits
der aktuellen Betragsbitebene in Tupeln, die gemäß der Reihenfolge des Durchlaufens
dem zuletzt an der Reihe gewesenen Tupel folgen. Beispielsweise
können
diese Betragsbits dazu verwendet werden, Signifikanzinformationen
zu modifizieren bzw. zu aktualisieren, die für die Betragsbits der auf das
zuletzt an der Reihe gewesenen Tupel folgenden Tupel die Signifikanz
der durch dieselben dargestellten Transformationskoeffizienten bezüglich der
aktuellen Betragsbitebene anzeigen. Hierdurch ist es möglich, eine
virtuell geforderte sequentielle Durchführung von Durchläufen der
Betragsbits der aktuellen Betragsbitebene in Tupeln für unterschiedliche der
Betragsbits der aktuellen Betragsbitebene in einem Durchlauf abzuarbeiten
und dabei aber zu berücksichtigen,
dass gemäß der virtuellen
Reihenfolge später
an der Reihe seiende Durchläufe
andere Signifikanzen sähen,
wäre die
virtuelle Reihenfolge eingehalten worden. Eine Vorhersage, die von
diesen Signifikanzinformationen abhängt, wird somit auch ermöglicht,
wenn die Abarbeitung der virtuellen Folge von Durchläufen auf
einmal abgearbeitet wird.According to one
embodiment
In the present invention, the prediction is based on magnitude bits
the current amount bit level in tuples, which are in order of running
follow the tuple last in line. For example
can
these magnitude bits are used to provide significance information
to modify or update for the magnitude bits of the
tuples most recently ranked following the tuple of significance
the transformation coefficients represented by them with respect to
Show current amount bit level. This makes it possible to have a
virtually required sequential execution of runs of the
Amount bits of the current amount bit level in tuples for different of
To process amount bits of the current amount bit level in one run
and while taking into account
that according to the virtual
Order later
in-line runs
see other significances,
that would be
virtual order has been adhered to. A prediction by
dependent on this significance information, it is thus also possible to
when processing the virtual sequence of runs on
once processed.
Das
gilt aber nicht nur für
den Fall des parallelen Abarbeitens virtuell sequentiell durchzuführender
Durchläufe.
Ist auch unter den Betragsbits der Tupel eine virtuelle Durchlaufreihenfolge
festgelegt, in der der Durchlauf virtuell stattfinden sollen, und/oder
hängt die
Zugehörigkeit
eines speziellen Betragsbits auch von der Signifikanz seiner Nachbarn
ab, so ermöglicht
es die Verwendung der Betragsbits der aktuellen Betragsbitebene
in Tupeln, die gemäß der Reihenfolge
des Durchlaufens dem zuletzt an der Reihe gewesenen Tupel folgen,
zu berücksichtigen,
dass für
gemäß der virtuellen
Intertupelreihenfolge und/oder Innertupelreihenfolge später an der
Reihe seiende Betragsbits eine andere Zugehörigkeit gelten würde, wäre die jeweilige
virtuelle Inter- und/oder Innertupelreihenfolge eingehalten worden.The
but not only for
the case of the parallel processing virtually sequentially performed
Runs.
Also, among the magnitude bits of the tuples is a virtual sweep order
determined in which the run should take place virtually, and / or
depends on that
membership
of a special magnitude bit also of the significance of its neighbors
off, so allows
it is the use of the amount bits of the current amount bit level
in tuples, according to the order
following through the last row of tuples,
to take into account
that for
according to the virtual
Intertuple order and / or inner tuple order later at the
Would be a number belonging to another membership, would be the respective number
virtual inter and / or inner tuple order has been adhered to.
Allgemein
ermöglicht
die Vorhersage, dass die Kodiereinrichtung unmittelbar mit der Verarbeitung
der vorbestimmten Betragsbits bzw. dem vorbestimmten Betragsbit
in dem aktuellen Tupel beginnen kann bzw. die Kodiereinrichtung
nur Verarbeitungszyklen für
die Verarbeitung von Betragsbits in den Tupeln benötigt, die
auch zu den vorbestimmten Betragsbits gehören. So kann die Kodiereinrichtung ausgebildet
sein, die Kodierung der vorbestimmten Betragsbits in den jeweiligen
Tupeln sequentiell vorzunehmen, und benötigt hierfür lediglich die geringstmögliche Anzahl
an Verarbeitungszyklen. Es ist allerdings ebenfalls möglich, dass
die Kodiereinrichtung zur parallelen Verarbeitung aller Betragsbits
in einem Tupel geeignet ist, durch die Vorhersage allerdings in der
Lage ist, in ein und demselben Verarbeitungszyklus nicht nur die
Betragsbitwerte an sich zu berücksichtigen,
sondern auch ob das jeweilige Betragsbit zu dem vorbestimmten Betragsbit
gehört
oder nicht, um in dem letztgenannten Fall noch in demselben Verarbeitungszyklus
das entsprechende Betragsbit in ein Paar aus Datenwert und zugeordnetem
Kodierkontext umzuwandeln, das einen Zustand aufweist, der für nicht
zu den vorbestimmten Betragsbits gehörende Betragsbits nicht vorkommt,
wie z. B. durch Einstellen eines nicht zulässigen Kodierkontextes.In general, the prediction allows the encoder to immediately begin processing the predetermined magnitude bits in the current tuple, or the encoder requires only processing cycles for the processing of magnitude bits in the tuples, which also correspond to the predetermined values include tragsbits. Thus, the encoder may be configured to sequentially perform the encoding of the predetermined magnitude bits in the respective tuples, thereby requiring only the least possible number of processing cycles. However, it is also possible that the coding device is suitable for processing all amount bits in a tuple in parallel, but by means of the prediction is able to take into account not only the amount bit values per se in one and the same processing cycle, but also whether the respective magnitude bit belongs to the predetermined magnitude bit in the latter case in the same processing cycle to convert the corresponding magnitude bit into a pair of data value and associated coding context having a state which does not occur for magnitude bits not belonging to the predetermined magnitude bits. By setting an illegal coding context.
Folglich
wird durch die Vorhersageeinrichtung eine schnellere Implementierung
einer Kodierung ermöglicht,
die weniger Verarbeitungszyklen benötigt.consequently
The predictor makes the implementation faster
a coding allows
which requires fewer processing cycles.
Weitere
Ausführungsbeispiele
der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf
die Figuren näher
erläutert.
Es zeigen:Further
embodiments
The present invention will be described below with reference to FIG
the figures closer
explained.
Show it:
1 ein
Blockschaltbild eines Bildkomprimierers, bei dem die erfindungsgemäße Transformationskoeffizientenblockkodierung
angewendet werden kann; 1 a block diagram of an image compressor, in which the transformation coefficient block coding according to the invention can be applied;
2 eine
schematische Darstellung einer Aufteilung der Transformationskoeffizienten
in Betragsbits und Vorzeichenbits; 2 a schematic representation of a division of the transformation coefficients in magnitude bits and sign bits;
3 ein
Blockschaltbild eines Blockkodierers gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung; 3 a block diagram of a block encoder according to an embodiment of the present invention;
4 ein
Blockschaltbild der Bitmodelliereinheit des Kodierdurchlaufes 1
(Pass 1) aus 3 gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung; 4 a block diagram of the bit modeling unit of the coding pass 1 (Pass 1) 3 according to an embodiment of the present invention;
5 ein
Blockschaltbild der Bitmodelliereinheit für den Kodierdurchlauf 2 (Pass
2) aus 3 gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung; 5 a block diagram of the bit modeling unit for the coding pass 2 (Pass 2) 3 according to an embodiment of the present invention;
6 ein
Blockschaltbild der Bitmodelliereinheit für den Kodierdurchlauf 3 (Pass
3) aus 3 gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung; 6 a block diagram of the bit modeling unit for the coding pass 3 (Pass 3) 3 according to an embodiment of the present invention;
7 ein
Blockschaltbild des Durchlauf- bzw. Pass-Entscheiders von 3 gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung; 7 a block diagram of the pass or decoder of 3 according to an embodiment of the present invention;
8 eine
schematische Darstellung zur Veranschaulichung der Größe der Schieberegistereinheit
von 3 und des in derselben zu einem jeweiligen Zeitpunkt
gespeicherten Inhalts; und 8th a schematic representation for illustrating the size of the shift register unit of 3 and the content stored therein at a particular time; and
9 ein
Blockschaltbild eines Blockkodierers gemäß einem weiteren Ausführungsbeispiel
der vorliegenden Erfindung. 9 a block diagram of a block encoder according to another embodiment of the present invention.
1 zeigt
einen Bildkomprimierer 10 als Beispiel für einen
Anwendungsfall, bei dem die nachfolgend beschriebenen Ausführungsbeispiele
vorteilhaft verwendet werden können.
Der Bildkomprimierer 10 von 1 ist dazu
ausgelegt, ein Quellbild 12 bestehend aus beispielsweise
in Spalten und Zeilen angeordneten Abtastwerten bzw. Pixelwerten
in einen kodierten Datenstrom bzw. Codestrom 14 zu komprimieren.
Dazu umfasst der Komprimierer 10 von 1 beispielsweise
eine Hintereinanderschaltung von optional einem Kachelaufteiler 16,
einem Gleichanteilpegelverschieber 18, optional einem Farbtransformator 20,
einem Transformator 22 zur räumlichen spektralen Zerlegung,
einem optionalen Quantisierer 24, einem Blockkodierer bzw.
Block-Coder 26 und einem Datenanordner 28. Der
Kachelaufteiler teilt das Bild 12 in beispielsweise rechteckige Bildbereiche
auf, sogenannte Tiles bzw. Kacheln. Die weitere Verarbeitung wird
pro Tile bzw. Kachel durchgeführt,
so dass die weitere Komprimierung in den einzelnen Kacheln unabhängig voneinander
stattfindet. Der Gleichsignalpegelverschieber 18 führt innerhalb
jeder Kachel eine über
alle Pixel der entsprechenden Kachel gleichmäßige Gleichsignalverschiebung
durch, so dass beispielsweise nachher der Mittelwert der Pixelwerte,
wie z. B. der Luminanzwerte, Null ergibt. Der Farbtransformator 20 führt optional noch
eine Farbtransformation an den Pixelwerten durch, wobei die Farbtransformation
optional ist und natürlich
nur in dem Fall von Farbbildern 12 stattfindet. Daraufhin
führt der
Transformator 22 eine räumliche
spektrale Zerlegung pro Kachel durch. In dem Fall eines zu erzeugenden
JPEG2000-Codestromes 14 ist die Transformation beispielsweise
einer Wavelettransformation, genauer eine diskrete Wavelettransformation,
die auf jede Kachel einzeln angewendet wird. Auf diese Weise wird
jede Kachel in unterschiedliche Auflösungspegel bzw. Zerlegungspegel zerlegt,
die aus Subbändern
von Transformationskoeffizienten bestehen, die Frequenzcharakteristika von
lokalen Bereichen jeder Kachel beschreiben. Die Transformationskoeffizienten
können
bereits ganzzahlig sein. Der Quantisierer 24 unterzieht
die Transformationskoeffizienten optional einer skalaren Quantisierung
und fasst dieselben zu Codeblöcken zusammen,
d. h. zu beispielsweise rechteckigen Arrays von Transformationskoeffizienten.
Der Blockkodierer 26 entropiekodiert bitebenenweise die
Transformationskoeffizienten in den Codeblöcken in Datenströme, woraufhin
der Datenanordner 28 die arithmetisch kodierten Codeblock-Datenströme noch
geeignet anordnet, um den Codestrom 14 zu bilden, wie z.
B. einen JPEG2000-konformen Codestrom. 1 shows an image compressor 10 as an example of an application in which the embodiments described below can be used advantageously. The image compressor 10 from 1 is designed to be a source image 12 consisting of, for example, arranged in columns and rows samples or pixel values in a coded data stream or code stream 14 to compress. This includes the compressor 10 from 1 For example, a series connection of optionally a tile divider 16 , a DC level shifter 18 , optionally a color transformer 20 , a transformer 22 for spatial spectral decomposition, an optional quantizer 24 , a block coder or block coder 26 and a data folder 28 , The tile divider splits the picture 12 in, for example, rectangular image areas, so-called tiles or tiles. The further processing is carried out per tile or tile, so that the further compression in the individual tiles takes place independently of each other. The DC level shifter 18 Within each tile, a uniform DC signal shift takes place over all the pixels of the corresponding tile, so that, for example, the mean value of the pixel values, such as, for example, is subsequently determined. B. the luminance values, zero. The color transformer 20 optionally performs a color transformation on the pixel values, the color transformation being optional and of course only in the case of color images 12 takes place. Thereupon the transformer leads 22 a spatial spectral decomposition per tile through. In the case of a JPEG2000 code stream to be generated 14 For example, the transformation is, for example, a wavelet transform, more specifically, a discrete wavelet transform that is applied to each tile one at a time. In this way, each tile is decomposed into different resolution levels consisting of subbands of transform coefficients describing frequency characteristics of local areas of each tile. The transform coefficients can already be integers. The quantizer 24 optionally translates the transform coefficients to scalar quantization and merges them into code blocks, ie, for example, rectangular arrays of transform coefficients. The block encoder 26 The transform coefficients in the code blocks are entropy-coded bit by bit into data streams, whereupon the data arbiter 28 the arithmetically coded codeblock data streams still ge lays order to the code stream 14 to form, such. B. a JPEG2000-compliant code stream.
Der
Blockkodierer 26 weist insbesondere, wie es in 1 gezeigt
ist, einen Koeffizientenbitmodellierer 30 mit einem nachgeschalteten
arithmetischen Kodierer 31 auf. Der Koeffizientenbitmodellierer 30 ordnet
den Betragsbits der Koeffizienten Kontexte zu, die von dem arithmetischen
Kodierer 32 zur arithmetischen Kodierung verwendet werden.
Insbesondere ist der arithmetische Kodierer 32 ein kontextabhängig arbeitender
binärer
arithmetischer Kodierer, der ausgebildet ist, um ein aktuelles Intervall, das
den augenblicklichen Zustand des arithmetischen Kodierers darstellt,
abhängig
von Schätzwahrscheinlichkeiten
für das
Auftreten eines jeweiligen Bitwertes für das nächste zu enkodierende Bit in
zwei Hälften
zu unterteilen, und unter diesen Hälften eine auszuwählen, um
das aktuelle Intervall auf dieses Intervall zu beschränken, je
nachdem wie der tatsächliche
Bitwert des aktuellen zu kodierenden Bits ist, wobei die Schätzwahrscheinlichkeiten
für jeden
Kontext unterschiedlich sind, und der Kontext durch den Koeffizientenbitmodellierer 30 abhängig von
benachbarten Signifikanzen und/oder Betragsbitwerten und einer Mehrzahl
von möglichen
Kontexten ermit telt wird. Der Kodierer kann dabei zudem adaptiv
arbeiten, um die vorinitialisierten Schätzwahrscheinlichkeiten während der
Kodierung an die tatsächlichen Wahrscheinlichkeiten
pro Kontext anzupassen.The block encoder 26 In particular, as in 1 is shown a coefficient bit modeler 30 with a downstream arithmetic coder 31 on. The coefficient bit modeler 30 assigns to the magnitude bits of the coefficients contexts assigned by the arithmetic coder 32 be used for arithmetic coding. In particular, the arithmetic coder 32 a contextual binary arithmetic coder adapted to divide a current interval representing the current state of the arithmetic coder into two halves depending on estimated probabilities for occurrence of each bit value for the next bit to be encoded, and among these halves one to limit the current interval to this interval depending on how the actual bit value of the current bit to be coded is, the estimated probabilities being different for each context, and the context by the coefficient bit modeler 30 depending on adjacent significances and / or magnitude bit values and a plurality of possible contexts. The encoder may also adaptively adapt the pre-initialized estimates during encoding to the actual probabilities per context.
Die
nachfolgende Erläuterung
von Ausführungsbeispielen
der vorliegenden Erfindung konzentriert sich zunächst auf eine JPEG2000-konforme Kompression,
weshalb im Folgenden vor diesem Hintergrund die Aufgabe des Blockkodierers 26 näher veranschaulicht
werden soll. Insbesondere sind von dem Blockkodierer 26 die
einzelnen Betragsbits der Transformationskoeffizienten in einem
Block in einer vorbestimmten bzw. festgelegten Reihenfolge in den
arithmetisch kodierten Datenstrom des arithmetischen Kodierers 32 zu
kodieren, nämlich
insbesondere zunächst
bitebenenweise von der signifikantesten Bitebene zur wenigst signifikanten
Bitebene und innerhalb dieser Bitebenen durch Scannen der Koeffizientenbetragsbits
in drei Durchläufen
in einer festgelegten Scanreihenfolge, wobei in jedem Durchlauf
nur Betragsbit kodiert werden, die bestimmte Kriterien erfüllen, derart,
dass mit den drei Durchläufen aus
dem arithmetisch kodierten Datenstrom alle Betragsbits rekonstruierbar
sind. Um die Aufteilung in Bitebenen und die Scanreihenfolge innerhalb
dieser Ebenen zu veranschaulichen, zeigt 2 exemplarisch
einen Codeblock der Größe 3 × 8.The following explanation of exemplary embodiments of the present invention initially concentrates on a JPEG2000-compliant compression, for which reason the object of the block coder in the following is this background 26 will be illustrated in more detail. In particular, from the block encoder 26 the individual magnitude bits of the transform coefficients in a block in a predetermined order into the arithmetic-coded data stream of the arithmetic coder 32 in particular first bitwise from the most significant bitplane to the least significant bitplane and within those bitplanes by scanning the coefficient magnitude bits in three passes in a fixed scan order, encoding in each pass only magnitude bits that meet certain criteria such that three passes from the arithmetic coded data stream all magnitude bits are reconstructed. To illustrate the split in bit planes and the scan order within those planes, shows 2 exemplarily a code block of size 3 × 8.
Insbesondere
zeigt 2 bei 34 exemplarisch einen 3 × 8-Codeblock mit 3 × 8 Transformationskoeffizienten
a bis x. Wie es durch den Pfeil 36 angedeutet ist, wird
jeder Koeffizient a bis x durch n Betragsbits a1...n,...,
x1...xn sowie ein
jeweiliges Vorzeichenbit avz,..., xvz, dargestellt, wobei die Aufspaltung 36 in
Betragsbits und Vorzeichenbits beispielsweise inhärent aus
der Art der diskreten Wavelettransformation 22 hervorgeht
oder aus der Quantisierung 24 (1). Die
MSBs bzw. signifikantesten Betragsbits sind beispielsweise die Bits
a1...x1 und bilden
eine erste Betragsbitebene 381 .
Ebenso lassen sich die anderen Betragsbits zu entsprechenden Bitebenen 382...38n zusammen fassen.
Jede Bitebene 381...38n sowie
die Vorzeichenbits 40 bilden also jeweils ein 3 × 8 Bitarray.In particular shows 2 at 34 exemplarily a 3 × 8 code block with 3 × 8 transformation coefficients a to x. As by the arrow 36 is indicated, each coefficient a to x by n amount bits a 1 ... n, ..., x 1 ... x n and a respective sign bit a vz , ..., x vz , is shown, wherein the splitting 36 in magnitude bits and sign bits, for example inherently from the type of discrete wavelet transform 22 or from quantization 24 ( 1 ). The MSBs or significant magnitude bits are, for example, the bits a 1 ... X 1 and form a first magnitude bit level 38 1 , Likewise, the other magnitude bits can be assigned to corresponding bit planes 38 2 ... 38 n sum up. Every bit level 38 1 ... 38 n as well as the sign bits 40 So each form a 3 × 8 bit array.
Die
vorerwähnte
Scanreihenfolge sieht nun vor, dass die Bits einer Bitebene 381...38n in Viererspalten
bzw. Tupeln von je vier in Spaltenrichtung benachbarten Betragsbits
von einem Zeilenende aus bis zu dem anderen, d. h. streifenweise,
gescannt werden, woraufhin der nächste
Streifen in den nächsten
Zeilen gescannt wird, und innerhalb jedes Viererspaltenvektors bzw.
jedes Tupels die Betragsbits von oben nach unten gescannt werden.
Für die
Bitebenen 381...38n lässt sich
das Scanmuster folglich darstellen als
ai,
bi, ci, di, ii, ji,
ki, ii, qi, ri, si,
ti, ei, fi, gi, hi,
mi, ni, oi, pi, ui,
vi, wi, xi, mit i = 1...n,
wobei dieses Scanmuster
hier exemplarisch sechs Viererspalten bzw. Tupel und zwei Streifen
umfasst.The aforementioned scan order now provides that the bits of a bit plane 38 1 ... 38 n in four columns or tuples of four column bits adjacent magnitude bits from one line end to the other, ie, stripwise, whereupon the next strip is scanned in the next lines, and within each four column vector or each tuple the magnitude bits from the top be scanned down. For the bit levels 38 1 ... 38 n Thus, the scan pattern can be displayed as
a i, b i, c i, d i, i i, j i, k i, i i, q i, r i, s i, t i, e i, f i, g i, h i, m i , n i , o i , p i , u i , v i , w i , x i , where i = 1 ... n,
this scan pattern here exemplarily comprises six quadruplets or tuples and two stripes.
Ein
dreifaches Scannen der Betragsbits der einzelnen Bitebenen wird
nun gemäß dem nachfolgend
beschriebenen Ausführungsbeispiel
für einen Block-Coder 26 dadurch
vermieden, dass die den jeweiligen Durchläufen zugeordneten Betragsbits
mittels eines Scans erkannt und in Datenworte kodiert werden, aus
denen sich die Bitwerte und die zugeordneten Kontexte ergeben, woraufhin
dieselben nach Zwischenspeicherung in einem Zwischenspeicher in
geeigneter Reiheinfolge in einen arithmetisch kodierten Datenstrom
enkodiert werden. Dabei wird auch ein ständiges Nachschlagen in einem
Speicher vermieden, indem die Betragsbits und Vorzeichenbits zwischengespeichert
sind.A triple scan of the magnitude bits of the individual bit planes will now be according to the embodiment described below for a block coder 26 This is avoided by the fact that the amount bits associated with the respective passes are detected by means of a scan and encoded into data words, from which the bit values and the associated contexts result, whereupon, after being buffered in a buffer, they are encoded in an arithmetically coded data stream in a suitable sequence. In this case, a constant lookup in a memory is avoided by the magnitude bits and sign bits are cached.
3 zeigt
einen Blockkodierer 100 gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung. Er umfasst eine Speichereinheit 102,
einen Bitextraktor 104, eine Schieberegistereinheit 106,
eine Koeffizientenbitmodelliererstufe 108, einen Zwischenspeicher 110 und
eine arithmetische Kodiereinrichtung 112. Die Speichereinheit 102 ist
beispiels weise ein Direktzugriffsspeicher, wie z. B. ein RAM, und
fungiert als Schnittstelle zum Erhalt der quantisierten vorzeichenbehafteten
Transformationskoeffizienten der zu kodierenden Codeblöcke, wie
z. B. des Codeblocks 34 von 2. Der Bitextraktor 104 ist
mit dem Speicher 102 gekoppelt, um auf den Speicherinhalt
der Speichereinheit 102 Zugriffe 114 durchführen zu
können,
um von der Speichereinheit 102 Betragsbits und Vorzeichenbits
zu lesen. Wann und auf welche Betragsbits und/oder Vorzeichenbits der
Bitextraktor 104 zugreift, wird im Folgenden näher beschrieben.
Jedenfalls ist der Bitextraktor 104 zuständig dafür, die Schieberegistereinheit 106 basierend
auf den ausgelesenen Informationen von der Speichereinheit 102 mit
Bits zu befüllen,
die von der Koeffizientenbitmodellierstufe 108 benötigt werden, um
die notwendigen Kontexterstellungen bzw. die notwendige Vorkodierung
vorzunehmen. Etwas konkreter ausgedrückt, scannt der Bitextraktor 104 auf eine
im Folgenden noch etwas detaillierter dargestellte Art und Weise
Betragsbitebene für
Betragsbitebene die Betragsbits der aktuellen Betragsbitebene entlang
der vorgeschriebenen Streifen und befüllt die Schieberegistereinheit 106 während des
Scannens fortwährend
mit Informationen, so dass die Schieberegistereinheit 106 aufgrund
ihrer Schieberegisterlänge,
Informationsbits bezüglich
eines aktuellen Ausschnitts der aktuellen Betragsbitebene entlang der
Streifen umfasst, die die Koeffizientenbitmodellierstufe 108 aktuell
für ihre
Kontexterstellung bzw. Vorkodierung benötigt. Im Vorgriff auf die spätere detailliertere
Beschreibung bildet der Bitextraktor 104 beispielsweise
aus den Koeffizientenbetragsbits und den Vorzeichenbits durch bloße Übernahme
die neu aufzunehmenden Betragsbits 108 der aktuellen Bitebene,
durch bloße Übernahme
die neu aufzunehmenden Vorzeichenbits 118 und durch geeignetes Kombinieren
zugehörige
Statusbits 120 und führt
diese der Schieberegistereinheit 106 zu, die so dimensioniert
ist, dass sie die einzelnen Bits 108, 110, 112 in einer
Tiefe einer jeweiligen geeigneten Anzahl von Schiebestufen bzw.
-rängen
halten kann, wie es im Folgenden noch näher beschrieben wird. Am Rand des
Codeblocks befind liche Nachbarbits werden entsprechend mit Nullen
aufgefüllt,
wie es in 3 exemplarisch für die oberen
Nachbarbits dargestellt ist. 3 shows a block encoder 100 according to an embodiment of the present invention. It comprises a storage unit 102 , a bitextractor 104 , a shift register unit 106 , a coefficient bit modeler stage 108 , a cache 110 and an arithmetic coding device 112 , The storage unit 102 example is a random access memory such. As a RAM, and acts as an interface for obtaining the quantized signed transformation coefficients of the code blocks to be coded, such. B. the code block 34 from 2 , The Bitextraktor 104 is with the store 102 coupled to the memory contents of the memory unit 102 Views 114 to be able to perform from the storage unit 102 To read magnitude bits and sign bits. When and on what amount bits and / or sign bits the bitextractor 104 will be described in more detail below. Anyway, the Bitextraktor 104 responsible for this, the shift register unit 106 based on the information read from the storage unit 102 to fill with bits from the coefficient bit modeling stage 108 needed to make the necessary contexts or the necessary precoding. More specifically, the Bitextraktor scans 104 In a manner which will be described in more detail below, the amount bit-plane for the amount-bit-plane is the amount bits of the current amount bit-plane along the prescribed strips and fills the shift register unit 106 during the scanning process with information continuously, so that the shift register unit 106 due to its shift register length, comprises information bits relating to a current portion of the current magnitude bit plane along the stripes comprising the coefficient bit modeling stage 108 currently needed for their context creation or precoding. In anticipation of the later more detailed description forms the Bitextraktor 104 for example, from the coefficient magnitude bits and the sign bits by mere assumption the magnitude bits to be newly recorded 108 the current bit-plane, by mere assumption the new sign bits to be recorded 118 and by appropriate combining associated status bits 120 and feeds it to the shift register unit 106 too, which is sized to fit the individual bits 108 . 110 . 112 at a depth of a respective suitable number of shift stages, as will be described in more detail below. Neighbor bits located at the edge of the code block are respectively padded with zeros, as shown in FIG 3 is shown as an example for the upper neighbor bits.
Vereinfachend
ist in 3 dargestellt, das Schieberegister 106 sähe jeweils
vier Register (schattiert dargestellt) zusammen mit je 14 Nachbarregistern
vor, und zwar jeweils für
die Koeffizientenbits 108, Vorzeichenbits 118 und
Statusbits 120. Die Schieberegistereinheit 106 kann
somit als mehrere Schieberegister 1061,2,3,4 aufweisend
angesehen werden, jeweils eine für
die Betragsbits, Vorzeichenbits und zwei unterschiedliche Statusbits,
die im Folgenden noch näher
beschrieben werden, wobei diese einzelnen Schieberegister 1061...4 miteinander synchronisiert sind,
so dass pro Schiebeimpuls sämtliche
Registerinhalte gleichzeitig um eine Position horizontal bzw. um
einen Schieberegisterrang, d. h. um einen 6-er-Vektor in 3,
weitergeschoben werden.Simplifying is in 3 shown, the shift register 106 see four registers each (shaded) together with each 14 neighbor registers, each for the coefficient bits 108 , Sign bits 118 and status bits 120 , The shift register unit 106 can thus be used as multiple shift registers 106 1,2,3,4 each one for the magnitude bits, sign bits and two different status bits which will be described in more detail below, these individual shift registers 106 1 ... 4 synchronized with each other, so that each shift pulse at the same time by one horizontal position or by a shift register rank, ie by a 6-he vector in 3 to be pushed further.
Intern
zergliedert sich die Koeffizientenbitmodellierstufe 108 in
mehrere Bitmodelliereinheiten 1081 , 1082 und 1083 ,
von denen die erste für
den Pass 1 bzw. Durchlauf 1, die zweite für den Durchlauf 2 bzw. Pass
2 und die dritte für
den Pass 3 bzw. Durchlauf 3 zuständig
ist, und die im Folgenden noch näher
beschrieben werden. Die einzelnen Einheiten 1081 –1083 sind jeweils mit jeweiligen Bitregistern
der Schieberegister 1061 –1064 gekoppelt, um die entsprechenden Registerinhalte
zu analysieren und für jedes
zu modellierende Bit aus einem aktuellen Tupel von Betragsbits,
das in 3 den schraffierten Registern entspricht, festzustellen,
ob es gemäß dem jeweiligen
Durchlauf bzw. Pass zu modellieren ist oder nicht, und, wenn ja,
mit welchem Resultat. Die Bitmodelliereinheiten 1081 –1083 sind insbesondere dazu ausgebildet,
pro Tupel oder pro zu dem jeweiligen Pass gehörigen Betragsbit ein entsprechend
vorkodiertes Datenwort inklusive im Folgenden noch näher erläuterter
Steuerbits zu erzeugen und in jeweiligen Zwischenspeichern 1101 , 1102 und 1103 der Zwischenspeicherstufe 110 abzulegen.
Da tenworte, die zu Tupeln gehören,
in denen sich kein zu dem jeweiligen Durchlauf gehöriges Betragsbit
befindet, können
verworfen werden, wie es im Folgenden beschrieben werden wird, ebenso
wie Datenworte für nicht
zu dem jeweiligen Durchlauf gehörige
Betragsbits.Internally, the coefficient bit modeling stage decomposes 108 into several bit-modeling units 108 1 . 108 2 and 3 of which the first is responsible for pass 1 or pass 1, the second pass 2 or pass 2 and the third pass 3 or pass 3, and which will be described in more detail below. The individual units 108 1 - 3 are each shift registers with respective bit registers 106 1 - 106 4 coupled to analyze the corresponding register contents and for each bit to be modeled from a current tuple of magnitude bits stored in 3 the hatched registers correspond to determine whether or not to model according to the respective pass or pass, and if so, with what result. The bit modeling units 108 1 - 3 are in particular designed to generate, per tuple or per amount bit belonging to the respective pass, a correspondingly precoded data word including control bits explained in more detail below and in respective latches 110 1 . 110 2 and 110 3 the cache stage 110 store. Data words belonging to tuples in which there is no magnitude bit associated with the respective run can be discarded, as will be described below, as well as data words for magnitude bits not associated with the respective run.
Die
Bitmodelliereinheiten 1081 –1083 können insbesondere
ausgelegt sein, um in den Datenworten Steuerbits einzustellen, die
durch die anschließende arithmetische
Kodiereinrichtung 112 verwendet werden können, um
die in die Zwischenspeicher 1101 –1103 abgelegten Datenworte bzw. die in
dieselben kodierten Betragsbits in der geeigneten Reihenfolge und
unter Verwendung des richtigen Kontexts oder unter Aussetzung der
arithmetischen Kodierung in einem anderen Modus, wie z. B. einem
Klartextmodus, in den Datenstrom einzufügen, wie es im Folgenden noch
näher erörtert werden
wird. Hierzu weist die arithmetische Kodiereinrichtung 112 insbesondere
einen Durchlaufentscheider 122 auf, dem ein arithmetischer
Kodierer 124 nachgeschaltet ist. Der Durchlaufentscheider 122 fungiert
als Kodierer der vorkodierten Datenworte in den Zwischenspeichern 1101 –1103 und ist hierzu mit letztgenannten
gekoppelt. Aus diesen Datenworten rekonstruiert der Durchlaufentscheider 122 die
in den einzelnen Durchläufen
1, 2 und 3 bzw. Pass 1, Pass 2 und Pass 3 kontextmodellierten Bits
mit zugehörigem
Kontext und leitet diese Paare in der geeigneten Reihenfolge, d.
h. Pass 1 gefolgt von Pass 2 gefolgt von Pass 3, an den arithmetischen
Kodierer 124 weiter, wobei die weitergeleiteten Informationen
neben den Bitwerten und den zugehörigen Kontextindizes auch Informationen über durch
den arithmetischen Kodierer 124 zu verwendende Kodiermodi
beinhalten können
oder dgl., wobei die Steuersignale von dem Entscheider 122 zu
dem arithmetischen Kodierer 124 in 3 allgemein
mit 126 angezeigt sind. In anderen Worten ausgedrückt kodiert
der Pass-Entscheider 122 die ausgelesenen Datenwörter in
den Zwischenspeichern 110 zurück in Bit-Kontext-Paare 126 und
führt diese
dem nachgeschalteten arithmetischen Kodierer 124 in vorgeschriebener
Weise und geeigneter Repräsentierung
zu.The bit modeling units 108 1 - 3 In particular, they can be designed to set control bits in the data words that are generated by the subsequent arithmetic coding device 112 can be used to put in the cache 110 1 - 110 3 stored data words or the magnitude bits encoded therein in the appropriate order and using the proper context or subjecting the arithmetic coding in another mode, such. As a plain text mode to insert into the data stream, as will be discussed in more detail below. For this purpose, the arithmetic coding device 112 in particular a continuous decision maker 122 on which an arithmetic coder 124 is downstream. The pass decision maker 122 acts as encoder of the precoded data words in the latches 110 1 - 110 3 and is coupled with the latter. The pass decision maker reconstructs from these data words 122 contextualized bits with context associated with each of runs 1, 2 and 3 and pass 1, pass 2 and pass 3, respectively, and passes these pairs to the arithmetic coder in the appropriate order, ie pass 1 followed by pass 2 followed by pass 3 124 in addition to the bit values and the associated context indices, the forwarded information also contains information about the arithmetic coder 124 may include coding modes to be used or the like, wherein the control signals from the decision maker 122 to the arithmetic coder 124 in 3 generally with 126 are displayed. In other words, the passport decoder encodes 122 the read data words in the buffers 110 back to bit-context pairs 126 and leads this to the downstream arithmetic coder 124 in a prescribed manner and appropriate representation.
Im
Vorhergehenden wurde grob der Aufbau des Blockkodierers 100 von 3 beschrieben
sowie die Aufgaben und Funktionalitäten der einzelnen Einheiten
grob skizziert. Bevor im Folgenden mit der detaillierten Beschreibung
der Bitmodelliereinheiten 1081 –1083 und des Pass-Entscheiders 122 und
basierend darauf einer detaillieren Beschreibung der Funktionsweise
des Blockkodierers 100 fortgefahren wird, soll im Folgenden
noch einmal kurz grob das allgemeine Ziel des Zusammenspiels der
Einheiten von 3 beschrieben werden, um auf
diese Weise einen Überblick
zu geben, der für
das Verständnis
der nachfolgenden detaillierten Beschreibung hilfreich sein kann.
Wie bereits erwähnt,
sorgt der Bitextraktor 104 für die Befüllung der Schieberegistereinheit 106. Der
Bitextraktor 104 scannt dabei streifenweise die aktuelle
Betragsbitebene. In erster Näherung
kann man sich deshalb die Schieberegistereinheit 106 als ein
Fenster vorstellen, das sich über
die aktuelle Betragsbitebene entlang der Scanreihenfolge bewegt, mit
dazu synchroner Bewegung eines entsprechenden Fensters in der Vorzeichenbitebene 40 (2) und
unter Zwischenspeicherung dazugehöriger Statusbits für diese
Fensterinhalte. Die Bitmodelliereinheiten 1081 –1083 benötigen für ihre Arbeit keine weiteren
Informationen als diejenigen in der Schieberegistereinheit 106,
weshalb langwierige Speicherzugriffe 114 auf die Speichereinheit 102 nicht
notwendig sind. Zudem ist nur ein Durchlauf durch die aktuelle Betragsbitebene
notwendig, obwohl von dem Standard wie im Vorhergehenden erörtert drei
Durchläufe zur
Festlegung der Reihenfolge festgelegt sind, in der die Betragbits
in den Datenstrom kodiert werden sollen. Um Letzteres zu erzielen,
kümmert
sich jede der Bitmodelliereinheiten 1081 –1083 nur um diejenigen Betragsbits in den
Vierertupeln, die zu dem jeweiligen eigenen Pass gehören. Allgemein
kann man sagen, dass sich der Pass 1 um Betragsbits von Transformationskoeffizienten
kümmert,
die noch nicht signifikant sind, d. h. deren Betragsbits in den signifikanteren
Betragsbitebenen Null bzw. nicht-signifikant sind,
aber zu Transformationskoeffizienten benachbart sind, die signifikant
sind. Um Verwirrungen auszuschließen, wird darauf hingewiesen,
dass ein Transformationskoeffizient in einer bestimmten Betragsbitebene
als signifikant bezeichnet wird, wenn zumindest einer der Betragsbits
in den signifikanteren Betragsbitebenen 1 ist, und derselbe in einer
bestimmten Betragsbitebene „signifikant
wird”,
wenn keiner der Betragsbits in den signifikanteren Betragsbitebenen
1 ist aber er während
der Kodierung der aktuellen Bitebene noch in dieser Ebene durch
ein Betragsbit von 1 signifikant wird. Ein Betragsbit wird als signifikant
bezeichnet, wenn er 1 ist. Der Pass 2 kümmert sich um Transformationskoeffizienten,
die in der aktuellen Betragsbitebene bereits signifikant sind. Der
Pass 3 schließlich
adressiert die restlichen Betragsbits, d. h. die Betragsbits von
Transformationskoeffizienten, die nicht-signifikant sind und nicht in den Pass
1 fielen.The above has been roughly the structure of the block coder 100 from 3 described and the tasks and functionalities of the individual units roughly sketched. Before proceeding with the detailed description of the bit modeling units 108 1 - 3 and the passport-decision maker 122 and based thereon a detailed description of the operation of the block encoder 100 In the following, the general aim of the interaction of the units of 3 to give an overview which may be helpful in understanding the following detailed description. As already mentioned, the bitextractor ensures 104 for filling the shift register unit 106 , The Bitextraktor 104 scans the current amount bitmap in strips. As a first approximation one can therefore use the shift register unit 106 as a window moving across the current amount bit plane along the scan order, with synchronous movement of a corresponding window in the sign bit plane 40 ( 2 ) and caching associated status bits for these window contents. The bit modeling units 108 1 - 3 require no further information than those in the shift register unit for their work 106 That's why lengthy memory accesses 114 on the storage unit 102 are not necessary. In addition, only one pass through the current amount bit plane is necessary, although the standard, as discussed above, defines three passes for determining the order in which the magnitude bits are to be encoded into the data stream. To achieve the latter, each of the bit-modeling units takes care of it 108 1 - 3 only those amount bits in the quadruples that belong to the respective own pass. Generally speaking, passport 1 takes care of magnitude bits of transform coefficients that are not yet significant, ie whose magnitude bits in the more significant magnitude bit-planes are zero or non-significant, but adjacent to transform coefficients that are significant. To eliminate confusion, it is noted that a transform coefficient in a particular magnitude bit-plane is said to be significant if at least one of the magnitude bits in the more significant magnitude bit-planes is 1 and becomes "significant" in a particular magnitude bit-plane if none of the magnitude bits are in the more significant However, during the coding of the current bit level, it is still significant in this level by means of an amount bit of 1. An amount bit is said to be significant if it is 1. Pass 2 takes care of transformation coefficients, which are already significant in the current amount bitmap. The pass 3 finally addresses the remaining magnitude bits, ie the magnitude bits of transform coefficients which are non-significant and did not fall into pass 1.
Die
Signifikanzen der Transformationskoeffizienten in der aktuell zu
kodierenden Betragsbitebene spielen bei der Modell- bzw. Kontextbildung,
die durch die Bitmodelliereinheiten 1081 –1083 durchgeführt wird, eine große Rolle,
da hieraus die Kontexte bestimmt werden und diese Information bei
Dekodierung bereits auch dem Dekodierer vorliegt und er somit die
Kontextmodellierung nachbilden kann. Bereits jetzt sei darauf hingewiesen,
dass die Entscheidung, ob ein bestimmtes Betragbit zu dem Pass 3
gehört mitunter
davon abhängt,
ob eines der Nachbarbetragsbits zwar in logischer Abfolge vor Pass
1 zu einem nicht-signifikanten Transformaztionskoeffizienten gehört, aber
zu dem Pass 1 gehört
und somit gegebenenfalls virtuell bzw. gemäß der im Standard festgelegten
Reihenfolge, wonach die Durchläufe nacheinander
durchgeführt
werden, noch vor dem Ende des Pass 1 signifikant wird, in welchem
Fall nämlich
das entsprechende Betragsbit gegebenenfalls doch nicht dem Pass
3 angehört,
sondern dem Pass 1. Das Problem des Signifikantwerdens von Nachbarbetragsbits
betrifft aber natürlich
nur diejenigen Nachbarbetragsbits, die gemäß der Betragsbitscanreihenfolge
vor dem aktuell betrachteten Betragsbit liegen.The significances of the transform coefficients in the magnitude bit-plane currently to be coded play in the modeling of the bit-modeling units 108 1 - 3 is carried out, a major role, since the contexts are determined from this and this information is already present at the decoder during decoding and thus he can emulate the context modeling. It should already be pointed out that the decision as to whether a certain amount bit belongs to the pass 3 sometimes depends on whether one of the neighboring amount bits, although in logical sequence before pass 1, belongs to a non-significant transform coefficient but belongs to the pass 1 and thus If necessary, virtually or according to the order defined in the standard, according to which the runs are carried out in succession, becomes significant before the end of the pass 1, in which case the corresponding amount bit may not belong to the pass 3 but to the passport 1. The problem of course, the significance of neighboring magnitude bits is, of course, only those neighborhood amount bits that are ahead of the currently considered magnitude bit according to the magnitude bit scanning order.
Die
Bitmodelliereinheiten 1081 –1083 füllen ihre
jeweiligen Zwischenspeicher 1101 –1103 mit aufeinander folgenden Datenworten,
die der Reihe nach von dem Pass-Entscheider 122 ausgelesen
werden, und zwar betragsbitebenenweise, also mit dem Zwischenspeicher 1101 beginnend so lange bis das letzte
Datenwort der aktuellen Betragsbitebene ausgelesen worden ist, daraufhin
fortfahrend mit dem Zwischenspeicher 1102 ,
so lange bis das letzte Datenwort aus der aktuellen Betragsbitebene
ausgelesen worden ist, wiederum gefolgt von dem Zwischenspeicher 1103 , so lange bis dort das letzte Datenwort
ausgelesen worden ist, wobei ausnahmsweise in der ersten bzw. signifikantesten
Betragsbitebene gleich mit dem Zwischenspeicher 1103 begonnen
wird, da dort noch kein Transformationskoeffizient signifikant ist, und
somit auch kein Betragsbit dieser Ebene einem anderen Paß angehören kann
als Pass 3. Die Datenwörter
werden in dem Pass-Entscheider 122 auch dekodiert
und in entsprechende Steuersignale für den arithmetischen Kodierer 124 umgewandelt,
der daraus einen kodierten Datenstrom für den Codeblock bildet.The bit modeling units 108 1 - 3 fill their respective cache 110 1 - 110 3 with consecutive data words, in turn, from the passport decision maker 122 be read out, namely amount bitwise way, so with the cache 110 1 beginning until the last data word of the current amount bit plane has been read, then proceeding with the buffer 110 2 until the last data word has been read from the current amount bit level, again followed by the buffer 110 3 until the last data word has been read there, exceptionally in the first or most significant amount bit level equal to the buffer 110 3 is started because there is no transformation coefficient is significant, and thus no amount bit of this level can belong to another passport than pass 3. The data words are in the pass decision maker 122 also decoded and into corresponding control signals for the arithmetic coder 124 converted, which forms a coded data stream for the code block.
Im
Folgenden wird nun vorab der interne Aufbau der Bitmodelliereinheiten
sowie des Pass-Entscheiders von 3 näher beschrieben. 4 zeigt den
Aufbau der Bitmodelliereinheit 1081 .
Sie ist für den
Pass 1 zuständig,
d. h. für
den ersten Kodierdurchlauf, der auch als „Signifikanzfortpflanzungsdurchlauf” bzw. „significance
propagation pass”,
bezeichnet wird, weil er Betragsbits von Transformationskoeffizienten
betrifft, die sich in der Nähe
von bereits signifikanten Transformationskoeffizienten befinden
und somit wahrscheinlicher signifikant werden als solche Transformationskoeffizienten,
die sich weiter entfernt von bereits signifikanten befinden. Wie
im Vorhergehenden erwähnt,
basiert die Entscheidung, ob ein entsprechendes Betragsbit in dem
Kodierdurchlauf Pass 1 zu modellieren ist, darauf, ob der entsprechende
Koeffizient für
die aktuelle Bitebene noch insignifikant ist und mindestens einer
seiner direkten Nachbarkoeffizienten signifikant ist oder im Verlaufe
des ersten Durchlaufs signifikant wird.In the following, the internal structure of the bit-modeling units and the pass-decision maker of 3 described in more detail. 4 shows the structure of the bit modeling unit 108 1 , It is responsible for Pass 1, ie for the first coding pass, also referred to as "significance propagation pass", because it relates to magnitude bits of transform coefficients which are close to already significant transform coefficients and thus more likely to become significant than those transformation coefficients farther from already significant ones. As mentioned above, the decision as to whether to model a corresponding magnitude bit in the pass 1 pass is based on whether the corresponding coefficient for the current bit-plane is still insignificant and at least one of its direct neighbor coefficients is significant or significant in the course of the first pass becomes.
Die
Bitmodelliereinheit 1081 weist
eine Analysevorhersageeinheit 200, eine Betragsbitvorkodiereinheit 202,
letzterer eingangsseitig vorgeschaltete Multiplexer 204, 206,
eine Vorzeichenbitvorkodiereinheit 208, letzterer eingangsseitig
vorgeschaltete Multiplexer 210, 212, einen Aktualisierungsdemultiplexer 214,
einen Gültigkeitsbitmultiplexer 216,
ein Vierbitregister 218, einen Taktzähler 220, einen Koeffizientenwähler 222 sowie
eine Steuerbitsteuerung 224 auf, wobei in 4 zum
leichteren Verständnis
noch der Zwischenspeicher 1101 sowie
die Schieberegistereinheit 106 dargestellt sind.The bit modeling unit 108 1 has an analysis prediction unit 200 a magnitude bit pre-encoding unit 202 , the latter input side upstream multiplexer 204 . 206 , a sign bit precoding unit 208 , the latter input side upstream multiplexer 210 . 212 , an update demultiplexer 214 , a valid bit multiplexer 216 , a four-bit register 218 , a clock counter 220 , a coefficient selector 222 and a control bit control 224 on, in 4 for easier understanding even the cache 110 1 and the shift register unit 106 are shown.
Die
Analysevorhersageeinheit 200 ist dazu vorgesehen, vorab,
d. h. im Vorgriff auf das Schieben des nächsten zu bearbeitenden Tupels
in den Teil des Schieberegisters 106, an dem die Bitmodelliereinheit 1081 das zu bearbeitende Tupel erwartet,
welche Stelle in 4 mit Schraffur dargestellt
sind, festzustellen, welche dieser Betragsbits dem Pass 1 angehören. Die
Analyse/Vorhersageeinheit 200 trifft diese Entscheidung
beispielsweise immer dann, wenn die Schieberegistereinheit 106 durch
den Bitextraktor 104 (3) neu befüllt wird,
d. h. bei jedem Schiebeimpuls. In 4 trifft
die Analysevorhersageeinheit 200 beispielsweise die Entscheidung über Zugehörigkeit
oder Nicht-Zugehörigkeit
der Betragsbits des 4-er-Vektors qm, rm, sm, tm, die beim
nächsten Schiebevorgang
in der Registereinheit 106 zu dem aktuellen Tupel werden
bzw. in den schraffierten Registerbereich verschoben werden, wo
momentan die Betragsbits im, jm,
km und lm befindlich
sind. Um die Vorhersage treffen zu können, ist die Analysevorhersageeinheit 200 mit
Registerzellen der Registereinheit 106 gekoppelt, und zwar
mit dem Teil 1062 , der die Betragsbits
betrifft, wie es mit einem Pfeil 226 angedeutet ist, und
dem Teil 1063 , der die ersten Statusbits
betrifft, wie es mit einem Pfeil 228 angedeutet ist, wobei
die ersten Statusbits die Signifikanz entsprechender Koeffizienten
bezüglich
der aktuellen Bitebene anzeigen, wie es im Folgenden noch detailliert erörtert wird.The analysis predictor 200 is intended to advance, ie in anticipation of pushing the next tuple to be processed into the part of the shift register 106 at which the bit modeling unit 108 1 the tuple to be processed expects which spot in 4 are shown with hatching to determine which of these magnitude bits belong to pass 1. The analysis / prediction unit 200 For example, this decision is made whenever the shift register unit 106 through the Bitextraktor 104 ( 3 ) is refilled, ie at each shift pulse. In 4 meets the analysis prediction unit 200 For example, the decision on membership or non-membership of the magnitude bits of the 4-er vector q m , r m , sm, t m , in the next shift operation in the register unit 106 to the current tuple or to the hatched register area, where currently the magnitude bits i m , j m , k m and l m are located. To make the prediction, the analysis prediction unit is 200 with register cells of the register unit 106 coupled, with the part 106 2 that affects the magnitude bits, as with an arrow 226 is implied, and the part 106 3 that affects the first status bits, as with an arrow 228 is indicated, wherein the first status bits indicate the significance of corresponding coefficients with respect to the current bit plane, as will be discussed in more detail below.
An
einen Ausgang der Analyse/Vorhersageeinheit 200 schließt sich
das Register 218 an, um von der Analyse/Vorhersageeinheit 200 das
Ergebnis der Vorhersage in Form eines 4-Bit-Vektors zu erhalten, der
pro Betragsbit des als nächstes
aktuellen Tupels durch ein entsprechendes Bit iae,
jae, kae und lae aufweist, das angibt, ob das jeweilige
Betragsbit qm, rm, sm bzw. tm im Nachfolgenden
Schiebezyklus durch die Bitmodelliereinheit 1081 zu
verarbeiten ist oder nicht.To an output of the analysis / prediction unit 200 closes the register 218 to from the analysis / prediction unit 200 to obtain the result of the prediction in the form of a 4-bit vector having per magnitude bit of the next current tuple by a corresponding bit i ae , j ae , k ae and l ae indicating whether the respective magnitude bit q m , r m , s m and t m in the following shift cycle through the bit modeling unit 108 1 to process or not.
Sowohl
ein Eingang des Multiplexers 216 als auch ein Eingang des
Koeffizientenwählers 222 sind mit
dem Register 218 gekoppelt. Der Koeffizientenwähler 222 ist
ausgebildet, um auf Basis des Registerinhaltes des Registers 218 die
zu modellierenden bzw. vorzukodierenden Betragsbits des Passes 1 auszuwählen und
diese Auswahl in Form eines Multiplexersteuersignals an den Multiplexer 210, 212, 204, 206 und 216 bzw.
den Demultiplexer 214 mitzuteilen. Die Analyse/Vorhersageeinheit 200 gibt
ferner eine Vorhersage über
die Anzahl der zum Pass 1 gehörigen
Betragsbits in dem als nächstes
an der Reihe seienden Tupels aus, und zwar an den Taktzähler 220,
der auf diese Weise an dem Beginn jedes Schiebezyklus bzw. nach
einem Schiebevorgang in dem Schieberegister 106 auf einen
Wert vorinitialisiert ist, der der Anzahl der zu dem Pass 1 gehörigen Betragsbits
in dem aktuellen Betragsbittupel entspricht. Der Taktzähler 220 dekrementiert
dann beispielsweise seinen Zählerinhalt
basierend auf einen Verarbeitungstakt, den derselbe von dem Koeffizientenwähler 222 erhält, der
in dem Verarbeitungstakt das Multiplexersignal nacheinander auf
die zu dem Pass 1 gehörigen
Betragsbits einstellt, wie sie in dem Register 218 angezeigt
sind.Both an input of the multiplexer 216 as well as an input of the coefficient selector 222 are with the register 218 coupled. The coefficient selector 222 is designed to be based on the register contents of the register 218 to select the amount bits of the pass 1 to be modeled or prescoded and this selection in the form of a multiplexer control signal to the multiplexer 210 . 212 . 204 . 206 and 216 or the demultiplexer 214 tell. The analysis / prediction unit 200 Further, there is a prediction about the number of magnitude bits associated with pass 1 in the next in-line tuple, to the clock counter 220 in this way at the beginning of each shift cycle or after a shift operation in the shift register 106 is pre-initialized to a value corresponding to the number of magnitude bits associated with pass 1 in the current magnitude bit tuple. The clock counter 220 For example, then it decrements its counter content based on a processing clock the same from the coefficient selector 222 receives, in the processing clock, the multiplexer signal sequentially to the amount associated with the pass 1 magnitude bits, as in the register 218 are displayed.
Der
Multiplexer 216 ist ausgebildet, um abhängig von dem Multiplexersignal
von dem Koeffizientenwähler 222 das
durch das Multiplexersignal angezeigte Bit aus dem Register 218 als
Gültigkeitsbit bzw.
Valid-Bit an seinen Zwischenspeicher 1101 auszugeben.
Der Multiplexer 204 ist eingangsseitig mit speziellen Registerzellen
bzw. Registerplätzen
der Schieberegistereinheit aus dem Teil 1062 für die Betragsbits
gekoppelt, und ist ausgebildet, um abhängig von dem Multiplexersteuersignal
von dem Koeffizientenwähler 222 eine
das durch das Multiplexersignal angezeigte Bit speichernde der Betragsbitregisterzellen
mit einem Eingang der Betragsbitvorkodiereinheit 202 und
optional einem Eingang der Vorzeichenbitvorkodiereinheit 208 zu
koppeln, indem ein entsprechender der Eingänge des Multiplexers 204 auf
einen entsprechenden Ausgang des Multiplexers 204 geführt wird.
Entsprechendes gilt auch für
die Multiplexer 210, 212 und 206. Der
Multiplexer 210 beispielsweise ist eingangsseitig mit speziellen
Vorzeichenbitzellen aus dem Teil 1061 der
Schieberegistereinheit 106 gekoppelt und ausgebildet, um
abhängig
von dem Multiplexersignal einen entsprechenden Teilsatz dieser Registerinhalte
bzw. Vorzeichenbits über
den Ausgang des Multiplexers 210 an einen weiteren Eingang
der Vorzeichenbitvorkodiereinheit 208 auszugeben. In entsprechender
Weise ist der Multiplexer 212 zwischen spezielle Registerzellen
aus dem Teil 1063 für die ersten
Statusbits der Schieberegistereinheit 106 und einen weiteren
Eingang der Vorzeichenbitvorkodiereinheit 208 und der Multiplexer 206 zwischen
spezielle Registerzellen in dem Teil 1063 der Schieberegistereinheit 106 und
einen weiteren Eingang der Betragsbitvorkodiereinheit 202 geschaltet, um
abhängig
von dem Multiplexersignal einen Teil der ersten Statusbits dieser
speziellen Registerzellen an die jeweilige Einheit auszugeben.The multiplexer 216 is configured to be dependent on the multiplexer signal from the coefficient selector 222 the bit indicated by the multiplexer signal from the register 218 as a valid bit or valid bit to its cache 110 1 issue. The multiplexer 204 is the input side with special register cells or register locations of the shift register unit from the part 106 2 for the magnitude bits, and is configured to be dependent on the multiplexer control signal from the coefficient selector 222 a bit bit register cell storing the bit indicated by the multiplexer signal, having an input of the magnitude bit precoding unit 202 and optionally an input of the sign bit precoding unit 208 to couple by a corresponding one of the inputs of the multiplexer 204 to a corresponding output of the multiplexer 204 to be led. The same applies to the multiplexer 210 . 212 and 206 , The multiplexer 210 For example, the input side with special sign bit cells from the part 106 1 the shift register unit 106 coupled and configured to, depending on the multiplexer signal, a corresponding subset of these register contents or sign bits via the output of the multiplexer 210 to another input of the sign bit precoding unit 208 issue. Similarly, the multiplexer 212 between special register cells from the part 106 3 for the first status bits of the shift register unit 106 and another input of the sign bitvorkodiereinheit 208 and the multiplexer 206 between special register cells in the part 106 3 the shift register unit 106 and another input of the magnitude bit pre-encoding unit 202 connected to output a part of the first status bits of these special register cells to the respective unit depending on the multiplexer signal.
Die
so eingehenden Signale werden von den Vorkodiereinheiten 208 und 202 verwendet,
um jeweils ein Paar aus Datenbit 230 bzw. 232 und
Kontext-Index bestehend aus 2 Bits 234 bzw. 236 auszugeben,
wobei das Datenbit den Bitwert des Vorzeichenbits bzw. des Betragsbits
des durch das Multiplexersignal angezeigten aktuell zu verarbeitenden Transformationskoeffizienten
angibt, während
der Kontextindex jeweils dazu auf den zugehörigen zu verwendenden Kontext
zeigt.The incoming signals are from the precoding units 208 and 202 used to each a pair of data bits 230 respectively. 232 and context index consisting of 2 bits 234 respectively. 236 where the data bit indicates the bit value of the sign bit or the magnitude bit of the transform coefficient currently being processed by the multiplexer signal, while the context index points to the associated context to be used respectively.
Wie
es in 4 durch einen Pfeil 238 angezeigt ist,
kann es vorgesehen sein, dass die Vorzeichenbitvorkodiereinheit 208 zusätzlich bei
Ihrer Kodierung bzw. Kontextbildung ein Bypass-Modus-Bit 240 verwendet,
das von der Steuerbitsteuerung 224 neben einem Pass-Ende-Bit 242 ausgegeben
wird. Die Bedeutung dieser Steuerbits 240 und 242 wird
im Folgenden noch näher
erörtert.
Die Bits 230, 242 bilden zusammen ein 12-Bit-Wort 244,
das in den Zwischenspeicher 2101 eingegeben
wird. Der Zwischenspeicher 1101 kann
ausgebildet sein, um lediglich Datenwörter 244 zwischenzuspeichern,
bei denen das gleichzeitig eintreffende Gültigkeitsbit 246,
das von dem Multiplexer 216 ausgegeben wird, anzeigt, dass das
aktuelle Multiplexersignal auf einen zu dem Pass 1 gehöriges Betragsbit
zeigte.As it is in 4 through an arrow 238 is displayed, it may be provided that the sign bit precoding 208 additionally with your coding or context formation a bypass mode bit 240 used by the control bit control 224 next to a pass-end bit 242 is issued. The meaning of these control bits 240 and 242 will be discussed in more detail below. The bits 230 . 242 together form a 12-bit word 244 that in the cache 210 1 is entered. The cache 110 1 can be designed to only data words 244 to cache in which the simultaneously arriving validity bit 246 that from the multiplexer 216 indicating that the current multiplexer signal pointed to an amount bit associated with pass 1.
Wie
es in 4 ferner zu sehen ist, wird das von der Betragsbitvorkodiereinheit 202 ausgegebene Datenbit 232 auf
einen Eingang des Demultiplexers 214 rückgekoppelt. Letztere ist ausgangsseitig
mit Registerzellen aus dem Bereich 1063 gekoppelt, nämlich denjenigen,
die die ersten Statusbits für
die aktuellen Betragsbits (schraffiert dargestellt) enthält, um abhängig von
dem Multiplexersignal das Datenbit 232 zur Aktualisierung
des ersten Statusbits zu verwenden, das dem Betragsbit zugeordnet
ist, das gerade durch die Betragsbitvorkodiereinheit 202 modelliert
worden ist. Auf diese Weise wird nämlich die Signifikanz des entsprechenden
Koeffizienten aktualisiert.As it is in 4 It will also be seen that this is done by the magnitude bit pre-encoding unit 202 output data bit 232 to an input of the demultiplexer 214 fed back. The latter is the output side with register cells from the area 106 3 coupled, namely the one containing the first status bits for the current magnitude bits (shown hatched), depending on the multiplexer signal, the data bit 232 to use for updating the first status bit associated with the magnitude bit currently being generated by the magnitude bit precoding unit 202 has been modeled. In this way, namely, the significance of the corresponding coefficient is updated.
Die
vorhergehende Beschreibung ging lediglich grob auf den Aufbau und
die Einzelfunktionsweise der Komponenten der Bitmodelliereinheit 1081 ein. Im Folgenden soll deshalb das
Zusammenspiel der einzelnen Komponenten der Bitmodelliereinheit 1081 im Zusammenspiel mit der Schieberegisterein heit 106,
dem Zwischenspeicher 1101 sowie
dem Bitextraktor 104 unter gleichzeitiger Bezugnahme auf 8 und 3 näher erläutert werden. 8 versinnbildlicht
einen Ausschnitt aus der Speichereinheit 102 (3)
nämlich
einen Ausschnitt aus den Betragsbits und Vorzeichenbits der Transformationskoeffizienten
eines aktuell zu kodierenden Codeblocks. Insbesondere sind die einzelnen
Vorzeichenbits und Betragsbits durch Würfel 250 bzw. 252 versinnbildlicht.
Insbesondere sind die Vorzeichenbits 250 in Zeilen und
Spalten nebeneinander liegend angeordnet dargestellt, in Entsprechung
der entsprechenden Transformationskoeffizienten in dem zu kodierenden Codeblock.
Nur ein Ausschnitt der Vorzeichenbits 250 ist gezeigt,
und zwar ein Ausschnitt aus Vorzeichenbits 250 in einem
aktuellen Streifen 254 plus der angrenzenden Zeilen 256 bzw. 258 des
darüber
und darunter befindlichen Streifens. Auch die Betragsbits 252 der
aktuellen Bitebene sind als in Zeilen und Spalten nebeneinander
liegend dargestellt, wobei ebenfalls lediglich ein Teil bzw. Ausschnitt
aus der aktuellen Bitebene dargestellt ist, der dem Teil aus der Vorzeichenbitebene
entspricht, d. h. einem Teil eines entsprechenden Streifens 260 mit
den Betragsbits 252 der darüber und darunter befindlichen
Zeile 262 und 264. Lediglich der Vollständigkeit
halber wird darauf hingewiesen, dass in vertikaler Richtung zueinander
ausgerichtete Betrags- und Vorzeichenbits in einander entsprechenden
Zeilen unter den Zeilen 254-264 in 8 zu gleichen
Transformationskoeffizienten gehören
sollen.The preceding description was only roughly related to the construction and single-function manner of the components of the bit-modeling unit 108 1 one. In the following, therefore, the interaction of the individual components of the Bitmodelliereinheit 108 1 in interaction with the shift register unit 106 the cache 110 1 as well as the Bitextraktor 104 with simultaneous reference to 8th and 3 be explained in more detail. 8th symbolizes a section of the storage unit 102 ( 3 ) namely a section of the magnitude bits and sign bits of the transformation coefficients of a code block currently to be coded. In particular, the individual sign bits and magnitude bits are cubes 250 respectively. 252 symbolizes. In particular, the sign bits 250 shown juxtaposed in rows and columns, corresponding to the corresponding transform coefficients in the code block to be coded. Only a section of the sign bits 250 is shown, a section of sign bits 250 in a current strip 254 plus the adjacent lines 256 respectively. 258 the strip above and below it. Also the amount bits 252 the current bit plane are shown as juxtaposed in rows and columns, wherein also only a part or section of the current bit plane is shown, which corresponds to the part of the sign bit plane, ie a part of a corresponding strip 260 with the amount bits 252 the line above and below 262 and 264 , For the sake of completeness, it is pointed out that magnitude and sign bits aligned in the vertical direction are arranged in lines corresponding to one another among the lines 254-264 in 8th should belong to the same transformation coefficients.
Die
Betragsbits von weniger signifikanten Bitebenen als der aktuellen
Bitebene sind in 8 nicht dargestellt. Signifikantere
und somit bereits kodierte Betragsbits der signifikanteren Bitebenen
sind allerdings in 8 erkennbar und liegen der Reihe nach
hinter der aktuellen Bitebene.The magnitude bits of less significant bit-planes than the current bit-plane are in 8th not shown. Significant and thus already encoded magnitude bits of the more significant bit planes are, however, in 8th recognizable and are behind the current bit level in turn.
Wie
nun bereits im Vorhergehenden beschrieben wurde, füllt der
Bitextraktor 104 bei jedem Schiebevorgang der Schieberegistereinheit 106 mittels
Speicherzugriffen 114 (2) letztere
wieder mit Vorzeichenbits 250 bzw. Betragsbits 252 aus
der Speichereinheit 102, 3, so dass
sich in dem Schieberegister 106 zu jedem Zeitpunkt immer
ein Ausschnitt aus der Vorzeichenbitebene bzw. der aktuellen Betragsbitebene
befindet. Diese Ausschnitte sind in 8 bei 266 und 268 hervorgehoben
dargestellt. Wie zu erkennen ist, befindet sich zu einem betrachteten
Zeitpunkt in dem Teil 1061 der
Schieberegistereinheit ein Ausschnitt aus dem Vorzeichenbitarray
von fünf
aufeinander folgenden Spalten und sechs übereinander liegenden Zeilen,
nämlich
den vier Zeilen des aktuellen Streifens 254 und der Nachbarzeilen 256 und 258.
Auf entsprechende Weise befindet sich in dem Teil 1062 der Schieberegister 106 zu
jedem Zeitpunkt ein Ausschnitt aus der aktuellen Betragsbitebene
von vier Spalten Länge
zu je sechs Zeilen 260–264.As already described above, the bitextractor fills 104 every time the shift register unit slides 106 by means of memory accesses 114 ( 2 ) the latter again with sign bits 250 or amount bits 252 from the storage unit 102 . 3 , so in the shift register 106 always a section of the sign bit plane or the current amount bit plane is always located. These cutouts are in 8th at 266 and 268 highlighted. As can be seen, is located at a given time in the part 106 1 the shift register unit is a section of the sign bit array of five consecutive columns and six superimposed lines, namely the four lines of the current strip 254 and the neighboring lines 256 and 258 , In a similar way is located in the part 106 2 the shift register 106 at any time a section of the current magnitude bit-plane of four columns length of six lines each 260 - 264 ,
Wie
es in 8 zu erkennen ist, sind die Ausschnitte 266 und 268 der
in den Zeilen 1061 und 1062 der Schieberegistereinheit 106 gespeicherten Vorzeichenbits 250 bzw.
Betragsbits 252 derart zueinander ausgerichtet, dass zu
einem Transformationskoeffizienten, für die augenblickliche Betragsbits 252 in
dem Teil 1062 zwischengespeichert
ist, auch das entsprechende Vorzeichenbit 250 des jeweiligen Transformationskoeffizienten
in dem Teil 1061 zwischengespeichert
ist. Insbesondere ist in der Schieberegistereinheit für jedes
zu speichernde Bit eine Registerzelle vorgesehen, die in 8 ebenfalls
als durch die Würfel
in den entsprechenden Abschnitten 266 und 268 versinnbildlicht
angesehen werden können.
Die Registerzellen der Teile 1061 und 1062 sind dabei derart miteinander verschaltet,
dass die Registerinhalte in 8 von rechts
nach links verschoben werden, so dass bei jedem Schiebevorgang eine Spalte
von Vorzeichenbits 250 bzw. Betragsbits 252 die
Schieberegistereinheit 106 auf der einen Seite, in 8 nämlich links,
verlässt,
und an dem anderen Ende des Schieberegisters die entsprechenden
Teile 1061 und 1062 mit
einer nächsten
Spalte 270 bzw. 272 von Vorzeichenbits 250 bzw.
Betragsbits 252 aufgefüllt
werden. In 8 entspricht dies einer Verschiebung
des zwischengespeicherten Abschnit tes 266 bzw. 268 in
der Vorzeichenbitebene bzw. Betragsbitebene pro Schiebevorgang virtuell
um eine Spalte nach rechts. Der Bitextraktor 104 ist nun
derart ausgebildet, dass er die Befüllung des Teiles 1061 und 1062 mit
Vorzeichenbits 250 bzw. Betragsbits 252 durchführt, die
eine aneinander zugeordnete Spalte von Transformationskoeffizienten
betreffen, so dass sich der Versatz zwischen dem Inhalt des Vorzeichenbitteiles 1061 und dem augenblicklichen Inhalt des
Betragsbitinhaltes 1062 der Schieberegistereinheit 106 am
hinteren Schieberegisterende ergibt, wo Vorzeichenbits in dem Teil 1061 zwischengespeichert sind, die diesen
Teil beim nächsten
Schiebevorgang verlassen, und für
die keine Betragsbits mehr in dem Teil 1062 zwischengespeichert
sind.As it is in 8th it can be seen, are the cutouts 266 and 268 the one in the lines 106 1 and 106 2 the shift register unit 106 stored sign bits 250 or amount bits 252 aligned such that to a transformation coefficient, for the momentary magnitude bits 252 in the part 106 2 is cached, including the corresponding sign bit 250 the respective transformation coefficient in the part 106 1 is cached. In particular, a register cell is provided in the shift register unit for each bit to be stored, which in 8th also as through the cubes in the corresponding sections 266 and 268 can be regarded as symbolized. The register cells of the parts 106 1 and 106 2 are interconnected in such a way that the register contents in 8th be shifted from right to left, so that with each shift a column of sign bits 250 or amount bits 252 the shift register unit 106 on the one hand, in 8th namely left, leaves, and at the other end of the shift register the corresponding parts 106 1 and 106 2 with a next column 270 respectively. 272 of sign bits 250 or amount bits 252 be filled. In 8th this corresponds to a shift of the cached portion 266 respectively. 268 in the sign bit plane or amount bit plane per shift virtually by one column to the right. The Bitextraktor 104 is now designed such that it is the filling of the part 106 1 and 106 2 with sign bits 250 or amount bits 252 which relates to a column of transform coefficients associated with each other, so that the offset between the contents of the sign bit part 106 1 and the current contents of the amount bit content 106 2 the shift register unit 106 at the rear shift register end, where sign bits in the part 106 1 are cached that leave this part at the next shift, and no more magnitude bits in the part 106 2 are cached.
Wie
bereits im Vorhergehenden erwähnt,
benötigen
die Bitmodelliereinheiten 1081 und 1082 für ihre
Verarbeitung auch Statusbits, nämlich
erste und zweite Statusbits. Die ersten Statusbits geben jeweils für einen
Transformationskoeffizienten an, ob derselbe bezüglich der aktuellen Betragsbitebene
signifikant ist oder nicht. Erneut sei darauf hingewiesen, dass
sich der Zustand der Signifikanz der aktuellen Betragsbitebene für einen
Transformationskoeffizienten nach dem – bzw. währenddessen – virtuellen
ersten Durchlauf bzw. Pass 1 ändern
kann. Der Teil 1063 der Schieberegistereinheit 106 ist
nun derart dimensioniert, dass er für sechs aufeinander folgende
Spalten von Transformationskoeffizienten in den Zeilen 260–264 entsprechenden
Zeilen jeweils ein Statusbit 274 speichert, die in 8 ebenfalls
als Würfel
dargestellt sind. Insbesondere speichert die Schieberegistereinheit 106 in
dem Teil 1063 zu jedem Zeitpunkt erste
Statusbits 274 für
Transformationskoeffizienten von sechs benachbarten Spalten zu je
sechs Zeilen, von denen fünf
Spalten die ersten Statusbits zu Transformationskoeffizienten enthalten,
zu denen die Vorzeichenbits 250 in dem Ausschnitt 266 des
Teils 1061 enthalten sind. Zusätzlich sind
erste Statusbits für
Transformationskoeffizienten in einer 6-er Spalte von Transformationskoeffizienten
enthalten, mit deren Vorzeichenbits 250 bzw. Betragsbits
der aktuellen Bitebene die Teile 1061 und 1062 der Schieberegistereinheit 106 erst
beim nächsten
Schiebevorgang befüllt
werden.As already mentioned above, the bit modeling units require 108 1 and 108 2 for their processing also status bits, namely first and second status bits. The first status bits each indicate, for a transform coefficient, whether or not it is significant with respect to the current magnitude bit-plane. Again, it should be noted that the state of significance of the current magnitude bit-plane for a transform coefficient may change after-or during-virtual-first pass. The part 106 3 the shift register unit 106 is now dimensioned to be for six consecutive columns of transform coefficients in the rows 260 - 264 corresponding lines each have a status bit 274 stores in 8th are also shown as cubes. In particular, the shift register unit stores 106 in the part 106 3 first status bits at any time 274 for transform coefficients of six adjacent six-row columns, five of which contain the first status bits of transform coefficients, including the sign bits 250 in the clipping 266 of the part 106 1 are included. In addition, first status bits for transform coefficients are contained in a 6-column of transform coefficients, with their sign bits 250 or amount bits of the current bit plane the parts 106 1 and 106 2 the shift register unit 106 be filled only at the next shift.
In
der Darstellung von 8 können ebenfalls die Würfel 274 gleichzeitig
auch als die entsprechenden Registerzellen angesehen werden, die
derart verschaltet sind, dass sie ihre Inhalte spaltenweise verschieben,
und zwar in 8 ebenfalls von rechts nach
links im gleichen Takt wie die anderen Teile 1061 und 1062 . Die Befüllung übernimmt ebenfalls der Bitextraktor 104 und
zwar durch Bitkombination, wie z. B. ein logisches ODER zwischen
in Signifikanzrichtung in einer Linie angeordneten Bits, auf der
Basis der durch Schraffur hervorgehobenen Betragsbits 276 in
den signifikanteren Betragsbitebenen als der aktuellen Betragsbitebene
für Transformationskoeffizienten,
die an den Positionen der Spalte 272 befindlich sind, mit
deren Betragsbits der aktuellen Bitebene die Registerzellen am vorderen
Ende des Teils 1062 der Schieberegistereinheit 106 erst beim
nächsten
Schiebeimpuls befüllt
werden. Der Befüllvorgang,
der zu den jüngsten
Einträgen
in dem ersten-Statusbit-Teil 1063 geführt hat,
ist in 8 mit dem Pfeil 278 angedeutet.In the presentation of 8th can also do the dice 274 at the same time be regarded as the corresponding register cells interconnected to shift their contents column by column, in 8th also from right to left in the same bar as the other parts 106 1 and 106 2 , The filling also takes over the Bitextraktor 104 by bit combination, such. A logical OR between bits arranged in a significant direction on the basis of the magnitude bits emphasized by hatching 276 in the more significant amount bit-planes than the current magnitude-bit-plane for transform coefficients that appear at the positions of the column 272 with their magnitude bits of the current bit plane, the register cells at the front end of the part 106 2 the shift register unit 106 be filled only at the next shift pulse. The filling process, which is among the most recent entries in the first status bit part 106 3 has been in is 8th with the arrow 278 indicated.
Schließlich ist
auch in dem Schieberegister 106 ein Teil 1064 vorgesehen, in dem zweite Statusbits
gespeichert sind, deren Bedeutung und Relevanz noch aus der folgenden
Beschreibung deutlich wird. Jedenfalls speichert der Teil 1064 die zweiten Statusbits für Transformationskoeffizienten
lediglich einer Spalte und zwar in lediglich vier Zeilen, die den Zeilen
des Streifens 260 bzw. 254 entsprechen, wobei
die zweiten Statusbits ebenfalls als Würfel versinnbildlicht sind,
die mit dem Bezugszeichen 280 angezeigt sind. Bei jedem
Schiebevorgang in der Schieberegistereinheit 106 werden
die zweiten Statusbits 280 aktualisiert, derart, dass sie
immer für
die Transformationskoeffizienten definiert sind, deren Betragsbit
in der ausgangsseitigen Spalte in dem Streifen 260 zwischengespeichert
sind, um beim nächsten Schiebevorgang
aus dem Teil 1062 der Schiebe registereinheit 106 verdrängt zu werden.
Der Bit-Extraktor 104 aktualisiert die zweiten Statusbits 280 bei
jedem Schiebevorgang der Schieberegister 106 aus schraffiert
hervorgehobenen Betragsbits 282 in signifikanteren Betragsbitebenen
als der aktuellen Betragsbitebene für die soeben erwähnten Transformationskoeffizienten
in dem Streifen 260, indem der Bitextraktor 104 für jeden
Transformationskoeffizienten die entsprechenden Betragsbits daraufhin überprüft, ob zumindest
zwei dieser Betragsbits Eins bzw. signifikant sind.Finally, also in the shift register 106 a part 106 4 provided in the second status bits are stored, whose meaning and relevance will become apparent from the following description. Anyhow, the part saves 106 4 the second status bits for transform coefficients of only one column in only four lines corresponding to the lines of the strip 260 respectively. 254 correspond, wherein the second status bits are also symbolized as cubes, denoted by the reference numeral 280 are displayed. Every time you shift in the shift register unit 106 become the second status bits 280 updated such that they are always defined for the transform coefficients, their magnitude bits in the output-side column in the stripe 260 are cached to the next shift from the part 106 2 the sliding register unit 106 to be displaced. The bit extractor 104 updates the second status bits 280 with each shift of the shift registers 106 hatched bits of magnitude highlighted 282 in more significant magnitude bit-planes than the current magnitude bit-plane for the just-mentioned transform coefficients in the strip 260 by the bitextractor 104 For each transform coefficient, the corresponding magnitude bits are checked to see if at least two of these magnitude bits are one or signifi are able.
Zurückkehrend
zur 4 ist nun die Analyse/Vorhersageeinheit 200 derart
mit den Teilen 1062 und 1063 der Schieberegistereinheit 106 gekoppelt, dass
sie zur Vorhersage der Betragsbitzugehörigkeit des nächsten zu
modellierenden Betragsbittupels den Inhalt der Registerzellen aus
dem Teil 1062 sowie die ersten
Statusbits in denjenigen Registerzellen des Teils 1063 der Schieberegistereinheit 106 erhält, die
mit gestrichelten Linien angezeigt und mit dem Bezugszeichen 282 bzw. 284 versehen
sind. Um dies ein weniger näher
zu veranschaulichen, werden im Folgenden speziell angesprochene
Registerzellen bzw. Bits in den Teilen 1061 –1064 jeweils mit einem Indexpaar #,# versehen,
das kodiert in Spaltennummer und Zeilennummer von der linken oberen
Ecke ausgehend die Registerzellen- bzw. Bitposition angibt. So spannt
der Bereich 282 beispielsweise den Bereich der Bereich
der Betragsbits 2523,2 bis 2524,5 auf und der Bereich 284 den
Bereich der Bits 2744,1 bis 2746,6 . Die Analyse/Vorhersageeinheit 200 verwendet
nun die ihr zugeführten
Informationen, um die Zugehörigkeit
der Betragsbits an den Positionen 2524,2 bis 2524,5 zu dem ersten Pass vorherzusagen, welche
Betragsbits das als nächstes
an der Reihe seiende Tupel bilden, das zumindest in dem Fall, dass
sich unter den Betragsbits ein zu dem Pass 1 Gehöriges befindet, von den Vorkodiereinheiten 202, 208 verarbeitet
wird.Returning to 4 is now the analysis / prediction unit 200 so with the parts 106 2 and 106 3 the shift register unit 106 coupled to predict the magnitude membership of the next magnitude bit tuple to be modeled, the contents of the register cells of the part 106 2 and the first status bits in those register cells of the part 106 3 the shift register unit 106 receives, indicated by dashed lines and by the reference numeral 282 respectively. 284 are provided. To illustrate this a little closer, in the following specifically addressed register cells or bits in the parts 106 1 - 106 4 each with an index pair #, # coded in the column number and line number starting from the top left corner indicates the register cell or bit position. That's how the area spans 282 for example, the range of the range of magnitude bits 252 3.2 to 252 4.5 on and the area 284 the range of bits 274 4.1 to 274 6.6 , The analysis / prediction unit 200 now uses the information supplied to it to determine the affiliation of the magnitude bits at the positions 252 4.2 to 252 4.5 to predict to the first pass which magnitude bits form the next-ranked tuple that, at least in the case that among the magnitude bits is one associated with pass 1, from the precode units 202 . 208 is processed.
Die
Betragsbits in dem Bereich 282 verwendet die Analyse/Vorhersageeinheit 200,
um berücksichtigen
zu können,
dass nicht alle Statusbits in dem zweiten Bereich 284 so
aktualisiert sind, wie sie es in dem Fall der Dekodierung in dem
Dekodierer an der gleichen Stelle bei der Dekodierung des Pass 1
sein werden. Zusätzlich
verwendet die Analyse/Vorhersageeinheit 200 zu ihrer Vorhersage
das letzte Vorhersageergebnis, das sie an die Register 218 ausgab, und
in dem Schieberegisterspeicherzustand von 8 die Transformationskoeffizientenpositionen betrifft,
die in dem Teil 1063 mit der Strich-Punkt-Punkt-Linie 286 markiert
sind, die auch gleichzeitig die Transformationskoeffizientenpositionen
markieren, die dem aktuell zu modellierenden Tupel entsprechen.
Zum Beispiel kann die Analyse/Vorhersageeinheit 200 eine
Noch-Nicht-Aktualisiertheit des ersten Statusbits 2744,2 abhängig von einer UND-Verknüpfung des
Bits iae des letzten Vorhersageergebnisses
mit dem Betragsbit 2523,2 berücksichtigen,
indem sie das Ergebnis dieser UND-Verknüpfung mit dem ersten Statusbit 2744,2 ODER-verknüpft.The amount bits in the range 282 uses the analysis / prediction unit 200 to take into account that not all status bits in the second area 284 are updated as they will be in the case of decoding in the decoder at the same location in the decoding of the passport 1. In addition, the analysis / prediction unit uses 200 to their prediction the last forecast result that they sent to the registers 218 and in the shift register storage state of 8th the transform coefficient positions that are in the part 106 3 with the dash-dot-dot line 286 are marked, which also simultaneously mark the transformation coefficient positions which correspond to the tuple currently to be modeled. For example, the analysis / prediction unit 200 a not-yet-updated first status bit 274 4.2 dependent on ANDing the bit i ae of the last prediction result with the magnitude bit 252 3.2 take into account the result of this AND operation with the first status bit 274 4.2 ORed.
Für das erste
Statusbit 2745,2 kann die Analyse/Vorhersageeinheit 200 die
Noch-Nicht-Aktualisiertheit dadurch adressieren, dass sie das Ergebnis einer
ODER-Verknüpfung der
acht direkten Nachbarbits 274 mit vorbeschriebener Aktualisierungskompensation
für die
Statusbits 2744,2 und 2744,3 mit dem Betragsbit 2524,2 UND-verknüpft. Mit solchermaßen virtuell
aktualisierten ersten Steuerbits kann die Analyse/Vorhersageeinheit 200 die
Zugehörigkeit
von beispielsweise dem Betragsbit 2524,3 durch
eine ODER-Verknüpfung der
acht ersten Steuerbits der acht unmittelbaren Nachbar-Koeffizienten
unter anschließender
UND-Verknüpfung mit
dem Inversen bzw. der Negation des Statusbits 2745,3 ermitteln.
Auf diese Weise überprüft folglich
die Analyse/Vorhersageeinheit 202 für jeden der zu modellierenden
Betragsbits 2524,2 bis 2524,5 , ob die entsprechenden Transformationskoeffizienten,
die sie darstellen, noch insignifikant sind, sowie ob die direkten
Nachbar- Koeffizienten
schon signifikant sind bzw. zumindest einer derselben schon signifikant
ist, und zwar bereits eine Spalte vor der aktuell zu modellierenden Spalte 2523,2 bis 2523,5 und
unter Berücksichtigung der
Signifikanzen, wie sie sich bei ordentlichem Durchlauf des Pass
1 bis zu dem jeweiligen Betragsbit in 2523,2 bis 2523,5 ergeben hätten.For the first status bit 274 5.2 can be the analysis / prediction unit 200 address the not-yet-updated by being the result of ORing the eight immediate neighbor bits 274 with the above-described update compensation for the status bits 274 4.2 and 274 4.3 with the amount bit 252 4.2 ANDed. With such virtually updated first control bits, the analysis / prediction unit 200 the affiliation of, for example, the amount bit 252 4.3 by ORing the eight first control bits of the eight immediate neighboring coefficients, followed by ANDing with the inverse or the negation of the status bit 274 5.3 determine. Thus, the analysis / prediction unit checks in this way 202 for each of the magnitude bits to be modeled 252 4.2 to 252 4.5 whether the corresponding transformation coefficients that they represent are still insignificant, as well as whether the direct neighbor coefficients are already significant or at least one of them is already significant, already a column in front of the column currently to be modeled 252 3.2 to 252 3.5 and taking into account the significances, such as they are in proper passage of the passport 1 to the respective amount bit in 252 3.2 to 252 3.5 would have resulted.
Das
Analyseergebnis wird dann von der Einheit 200, wie bereits
beschrieben, als 4-Bit-Vektor an das Register 218 ausgegeben,
um nach dem nächsten
Schiebevorgang der Schieberegistereinheit 106 am Eingang
des Multiplexers 216 bzw. des Koeffizientenwählers 222 anzuliegen.
Mit nur einer zusätzlichen
arithmetischen Addieroperation unter den Bitwerten, die dieselbe
an die Register 218 ausgibt, kann die Analyse/Vorhersageeinheit 200 auch
das Vorhersageergebnis liefern und an den Bitzähler 220 vor Beginn
des nächsten
Schiebevorganges in das Schieberegistereinheit 106 ausgeben,
das angibt, wie viele der Betragsbits in dem nächsten zu modellierenden Tupel
dem Pass 1 angehören.
Zeigt das Register 218 an, dass keines der Betragsbits
des aktuellen Tupels 2523,2 bis 2523,5 zu dem Pass 1 gehört, so stellt
der Koeffizientenwähler 222 das
Multiplexersignal beliebig ein, wie z. B. auf einen vorbestimmten Wert,
der nicht von dem Registerinhalt des Registers 218 abhängt, wodurch
der Multiplexer 216 eines der nicht-gesetzten Bits in dem
Register 218 als Gültigkeitsbit 246 an
den Zwischenspeicher 2101 ausgibt. Selbst
wenn also die Vorkodiereinheiten 202, 208 und
die Steuerbitsteuerung 224 zusammen ein 12-Bit-Wort 244 bilden
und an den Zwischenspeicher 1101 ausgeben,
so nimmt der Zwischenspeicher 1101 beispielsweise
die Zwischenspeicherung dieses Datenwortes 244 nicht vor,
weil das Gültigkeitsbit
nicht gesetzt ist. Zur Stromersparnis kann es jedoch vorgesehen
sein, dass beispielsweise der Betrieb der Vorkodiereinheiten 202, 208 in
einem solchen Fall unterbunden wird, wie es exemplarisch durch einen
Pfeil 288 in 4 angedeutet ist. Natürlich wäre es ferner möglich, dass
der Zwischenspeicher 1101 die Speicherung
der Datenworte 244 unabhängig davon vornimmt, ob das
Gültigkeitsbit
ge setzt ist oder nicht, in welchem Fall der Zwischenspeicher 1101 das Gültigkeitsbit einfach zusammen
mit dem 12 Bit-Wort
zwischenspeichert, wobei diese Vorgehensweise allerdings einen größeren Speicherplatz
in dem Zwischenspeicher 1101 erforderlich
macht.The analysis result is then from the unit 200 as previously described, as a 4-bit vector to the register 218 is issued after the next shift operation of the shift register unit 106 at the input of the multiplexer 216 or the coefficient selector 222 to rest. With just one additional arithmetic adding operation among the bit values, the same to the registers 218 can output the analysis / prediction unit 200 also deliver the prediction result and to the bit counter 220 before starting the next shift into the shift register unit 106 which indicates how many of the magnitude bits in the next tuple to be modeled belong to pass 1. Shows the register 218 that none of the magnitude bits of the current tuple 252 3.2 to 252 3.5 belongs to the passport 1, so sets the coefficient selector 222 the multiplexer signal as desired, such. To a predetermined value that is not from the register contents of the register 218 depends, causing the multiplexer 216 one of the unset bits in the register 218 as valid bit 246 to the cache 210 1 outputs. So even if the precoding units 202 . 208 and the control bit control 224 together a 12-bit word 244 form and to the cache 110 1 spend, so takes the cache 110 1 For example, the caching of this data word 244 not available because the validity bit is not set. However, to save power, it may be provided that, for example, the operation of the precoding units 202 . 208 is prevented in such a case, as exemplified by an arrow 288 in 4 is indicated. Of course, it would also be possible for the cache to work 110 1 the storage of data words 244 regardless of whether the validity bit is set or not, in which case the cache 110 1 the validity bit simply together with the 12-bit word zwi stores, but this approach, a larger space in the cache 110 1 required.
Anderenfalls
jedoch, d. h. in dem Fall zumindest eines gesetzten Bits in dem
Register 218, das anzeigt, dass das entsprechende Betragsbit
unter den aktuell zu modellierenden Betragsbits 2523,2 bis 2523,5 dem Pass 1 angehört, stellt in aufeinander folgenden
Arbeitszyklen der Koeffizientenwähler 222 das
Multiplexersignal sequentiell unten entsprechend den gesetzten Bits
in dem Register 218 auf die dem Pass 1 angehörigen Koeffizienten
ein. In dem Verarbeitungstakt generieren dann die Steuerbitsteuerung 224 und
die Vorkodiereinheiten 202 und 208 zu jedem dieser
dem Pass 1 angehörigen
Betragsbits ein 12 Bit-Datenwort 244, das zusammen mit
einem gesetzten Gültigkeitsbit 246 an
den Zwischenspeicher 1101 ausgegeben
wird, der aufgrund des gesetzten Gültigkeitsbits diese Datenwörter in
der eintreffenden Reihenfolge speichert. Insbesondere geht der Koeffizientenwähler 222 die
zu dem Pass 1 gehörigen
Betragsbits innerhalb der Spalte 2523,2 bis 2523,5 von oben nach unten durch, wie es
gemäß der Scanreihenfolge
der Decoder auch erwartet.Otherwise, however, ie in the case of at least one set bit in the register 218 indicating that the corresponding magnitude bit is below the magnitude bits currently to be modeled 252 3.2 to 252 3.5 belongs to Pass 1, sets the coefficient selector in successive cycles 222 the multiplexer signal sequentially down corresponding to the set bits in the register 218 to the coefficients belonging to Pass 1. In the processing clock then generate the control bit control 224 and the precoding units 202 and 208 for each of these pass bits belonging to the 1 a 12-bit data word 244 , which together with a set validity bit 246 to the cache 110 1 is output, which stores these data words in the incoming order due to the valid bit set. In particular, the coefficient selector goes 222 the amount bits associated with pass 1 within the column 252 3.2 to 252 3.5 from top to bottom as it also expects according to the scanning order of the decoder.
In
jedem Verarbeitungszyklus verarbeiten die Vorkodiereinheiten 202 und 208 die
ihnen zu Verfügung
stehenden Informationen gemäß einem
jeweiligen Kodierungsschema, um die Datenbits 230 bzw. 232 und
die zugehörigen
Kontext-Indizes 234 und 236 zu bestimmen. Die
Vorkodiereinheit 202 führt
ein sogenanntes Signifikanzfortpflanzungs- bzw. SP-Kodierschema aus.
Danach wird der Kontext-Index 236 mittels logischer Verknüpfung der
Signifikanzen der Nachbar-Koeffizienten
gebildet. Zeigt also beispielsweise das aktuelle Multiplexersignal
auf das Betragsbit 2523,3 , so leitet
der Multiplexer 206 die ersten Statusbits 2743,2 bis 2745,2 , 2743,4 bis 2745,4 , 2743,3 und 2745,3 weiter.
Insgesamt ist folglich eingangsseitig der Multiplexer 206 mit
den Registerzellen gekoppelt, die von der gestrichelten Linie 290 in 8 umgeben
sind. Der Multiplexer 204 ist eingangsseitig mit den Registerpositionen
in dem Bereich 1062 gekoppelt,
der dem aktuell zu modellierenden Tupel entspricht und mit einer
gestrichelten Linie 292 gekennzeichnet ist. Der Multiplexer 204 gibt
den durch das Multiplexersignal angezeigten Betragsbitwert an die
Vorkodiereinheit 202 aus, damit diese das Datenbit 232 entsprechend
einstellen kann.In each processing cycle, the precoding units process 202 and 208 the information available to them according to a respective coding scheme, the data bits 230 respectively. 232 and the associated context indexes 234 and 236 to determine. The precoding unit 202 implements a so-called significance propagation (SP) coding scheme. After that, the context index 236 formed by logically linking the significances of the neighbor coefficients. Thus, for example, shows the current multiplexer signal on the amount bit 252 3.3 so does the multiplexer 206 the first status bits 274 3.2 to 274 5.2 . 274 3.4 to 274 5.4 . 274 3.3 and 274 5.3 further. Overall, therefore, the input side of the multiplexer 206 coupled to the register cells by the dashed line 290 in 8th are surrounded. The multiplexer 204 is input side with the register positions in the area 106 2 coupled, which corresponds to the currently modeled tuple and with a dashed line 292 is marked. The multiplexer 204 indicates the magnitude bit value indicated by the multiplexer signal to the precode unit 202 off, so that this is the data bit 232 can adjust accordingly.
Die
Vorzeichenbitvorkodiereinheit 208 kann, wie es in 4 durch
die gestrichelte Verbindungslinie 294 angezeigt ist, ebenfalls
den Betragsbitwert des durch das Multiplexersignal angezeigten Betragsbits
erhalten, um abhängig
davon eine Verarbeitung zu unterbinden oder durchzuführen. Denn
decoderseitig erwartet der Dekodierer eine Kodierung des Vorzeichenbits
eines Transformationskoeffizienten ohnehin nur dann, wenn er das
erste Mal signifikant wird, nämlich
unmittelbar nach Erhalt des entsprechenden Datenbits dieses Betragskoeffizienten,
so dass in diesem Fall in dem Datenwort 244 die entsprechenden
Bits 230 und 234 unbeachtlich sind. Die durch
die Einheit 208 ausgegeben Datenbits und Kontext-Indizes 230, 234 sind
anders ausgedrückt nur
dann relevant, wenn das Datenbit 232, das durch die Betragsvorkodiereinheit 202 ausgegeben
wird, signifikant bzw. gesetzt ist. Die Verbindung 294 zwischen
dem Ausgang des Multiplexers 204 und der Vorkodiereinheit 208 kann
allerdings auch fehlen, in welchem Fall die Werte, die das Datenbit 230 bzw. der
Kontext-Index 234 annehmen, für die nachfolgende Überarbeitung
allerdings unbeachtlich ist.The sign bit precoding unit 208 can, as it is in 4 through the dashed connecting line 294 is also displayed, the amount bit value of the magnitude bits indicated by the multiplexer signal is received to inhibit or perform processing depending thereon. On the decoder side, the decoder expects an encoding of the sign bit of a transformation coefficient anyway only if it becomes significant the first time, namely immediately after receipt of the corresponding data bit of this magnitude coefficient, so that in this case in the data word 244 the corresponding bits 230 and 234 are irrelevant. The by the unit 208 output data bits and context indices 230 . 234 in other words, they are only relevant if the data bit 232 by the amount pre-encoding unit 202 is issued, is significant or set. The connection 294 between the output of the multiplexer 204 and the precoding unit 208 However, it can also be missing, in which case the values that the data bit 230 or the context index 234 assume, for the subsequent revision, however, is irrelevant.
Jedenfalls
führt die
Vorzeichenbitvorkodiereinheit 208 ein sogenanntes Vorzeichenkodier-
bzw. Sc-(SC = sign coding) Schema durch, wonach das Datenbit 230 den
Wert des Vorzeichens zu dem durch das Multiplexersignal angezeigten
Transformationskoeffizienten und der zugehörige Kontext-Index 234 auf
einen Kontext eingestellt wird, welcher von einer logischen Verknüpfung der
Signifikanzen und Vorzeichen der Nachbar-Koeffizienten abhängt, und zwar
gemäß dem JPEG2000-Standard, der hier
ja exemplarisch adressiert wird, lediglich die Nachbar-Koeffizienten
in Spalten- und Zeilenrichtung. Zeigt beispielsweise das Multiplexersignal
auf das Betragsbit 2523,3 , so ermittelt
die Vorkodiereinheit 208 das Datenbit 230 aus
dem Vorzeichenbit 2504,4 und den
hierzu benachbarten Vorzeichenbits 2503,3 , 2505,3 , 2504,2 und 2504,4 unter Berücksichtigung, dass für den Dekodierer
noch nicht alle Vorzeichenbits bekannt sind, was hier durch Auswertung
der ersten Steuerbits der Nachbarbits berücksichtigt wird, nämlich von 2743,3 und 2744,2 .
Dementsprechend ist der Multiplexer 210 eingangsseitig
mit Registerzellen innerhalb des mit der gestrichelten Linie 294 markierten
Bereichs gekoppelt, während
der Multiplexer 212 eingangsseitig mit einem Teil der Registerzellen
innerhalb des Bereichs 290 gekoppelt ist, um jeweils einen
Teil dieser Registerzellen abhängig
von dem Multiplexersignal von dem Koeffizientenwähler 222 mit der Vorzeichenbitvorkodierungseinheit 208 zu koppeln.In any case, the sign bit precoding unit performs 208 a so-called sign encoding (SC) scheme, according to which the data bit 230 the value of the sign to the transform coefficient indicated by the multiplexer signal and the associated context index 234 is set to a context which depends on a logical combination of the significances and signs of the neighboring coefficients, according to the JPEG2000 standard, which is hereby addressed by way of example, only the neighboring coefficients in column and row direction. For example, shows the multiplexer signal on the magnitude bit 252 3.3 , so determines the Vorkodiereinheit 208 the data bit 230 from the sign bit 250 4.4 and the sign bits adjacent thereto 250 3.3 . 250 5.3 . 250 4.2 and 250 4.4 taking into account that not all sign bits are yet known for the decoder, which is taken into account here by evaluating the first control bits of the neighboring bits, namely 274 3.3 and 274 4.2 , Accordingly, the multiplexer 210 input side with register cells within the dashed line 294 coupled area while the multiplexer 212 on the input side with part of the register cells within the range 290 is coupled to each a part of these register cells depending on the multiplexer signal from the coefficient selector 222 with the sign bit precoding unit 208 to pair.
Die
Steuerbitsteuerung 224 setzt in jedem Verarbeitungszyklus
der Vorkodiereinheiten 202 und 208 die Steuerbits 240 und 242,
die die nachfolgende arithmetische Kodierungseinrichtung 112 (3) beispielsweise
darüber
informieren sollen, ob der Bypass-Modus für den jeweiligen Transformationskoeffizienten
des Datenworts 244 aktiv sein soll, und ob der aktuelle
Coding-Pass zu Ende ist. Genauer ausgedrückt, setzt die Steuerbitsteuerung 224 das Pass-Ende-Bit 242 in
dem Fall, dass das aktuelle zu modellierende Tupel die letzten Betragsbits
in der aktuellen Betragsbitebene beinhaltet, z. B. die Betragsbits
ui, vi, wi und xi in der aktuellen
Bitebene i in dem Beispiel von 2. Das Bypass-Modus-Bit 240 stellt die
Steuerbitsteuerung 224 beispielsweise in Abhängigkeit
von der Tiefe der aktuellen Betragsbitebene ein, so dass beispielsweise
nach der vierten kodierten Bitebene das Bit 240 den Bypass-Modus
anzeigt, was anzeigt, dass ab diesem Zeitpunkt die Pass-1-Daten
in Rohform bzw. unkomprimiert in den Datenstrom am Ausgang der arithmetischen
Kodiereinrichtung 112 eingebracht werden sollen.The control bit control 224 sets in each processing cycle of the precoding units 202 and 208 the control bits 240 and 242 representing the subsequent arithmetic coding device 112 ( 3 ) should inform, for example, whether the bypass mode for the respective transformation coefficient of the data word 244 should be active, and whether the current coding pass is over. More specifically, the control bit control sets 224 the pass-end bit 242 in the case that the current tuple to be modeled includes the last magnitude bits in the current magnitude bit-plane, e.g. B. the magnitude bits u i , v i , w i and x i in the current bit plane i in the example of 2 , The bypass mode bit 240 provides the control bit control 224 For example, depending on the depth of the current magnitude bit plane, so that, for example, after the fourth coded bit plane, the bit 240 indicates the bypass mode, indicating that from this point on the pass-1 data is raw or uncompressed into the data stream at the output of the arithmetic encoder 112 should be introduced.
Schließlich sei
noch bemerkt, dass der Zwischenspeicher 1101 in
dem Fall, dass er ausgebildet ist, um Datenwörter 244 abhängig von
dem Gültigkeitsbit 246 zwischenzuspeichern
oder zu verwerfen, insbesondere so ausgebildet ist, dass der Zwischenspeicher 2101 das Datenwort 244 in dem
Fall eines gesetzten Pass-Ende-Bits 242 aber auch dann
zwischenspeichert, wenn das entsprechende Gültigkeitsbit 246 nicht
gesetzt ist. Verschiedene Maßnahmen
können
in diesem Fall dafür
vorgesehen sein, dass das Datenwort das eigentliche ungesetzte Gültigkeitsbit 246 widerspiegelt,
wie z. B. das kodieren des Restes der Datenwortes 244 außer dem Pass-Ende-Bit zu einem
ansonsten nicht gültigen,
da mit Pass 1 zugehörigen
Betragsbit nicht vorkommenden Zustand.Finally, it should be noted that the cache 110 1 in the case that he is trained to data words 244 depending on the validity bit 246 temporarily store or discard, in particular, is designed so that the cache 210 1 the data word 244 in the case of a set pass-end bit 242 but also cached if the corresponding valid bit 246 not set. Various measures can be provided in this case for the data word to be the actual unactivated validity bit 246 reflects, such as B. coding the remainder of the data word 244 except for the pass-end bit for an otherwise invalid state, since Pass 1 associated with the magnitude bit does not occur.
Wie
bereits erwähnt,
wird der Taktzähler 220 nach
jedem Schiebevorgang auf die Vorhersage vorinitialisiert, wie viele
Koeffizienten in einer Spalte moduliert werden bzw. zu modellieren
sind. Da diese Vorhersage bereits eine Spalte vor der aktuell zu
modellierenden Spalte ausgeführt
wird, liegt das Ergebnis für
den Taktzähler 22 bereits
beim Schiebevorgang selbst vor. Ist das Ergebnis bzw. die Vorinitialisierung
0 oder 1, kann mit dem nächsten
Takt sofort der nächste
Schiebevorgang der Schieberegistereinheit 106 ausgelöst werden,
was der Taktzähler 220 entsprechend
veranlasst. Bei größeren vorinitialisierten
Werten verzögert
der Taktzähler 220 entsprechend
die Ausgabe des Schiebeimpulses 296 an die Schieberegistereinheit 106.
Wie es im Folgenden ferner erwähnt
werden wird, berücksichtigt
der Taktzähler 220 dabei
ferner, ob die parallele Verarbeitung durch die Bitmodelliereinheiten 1082 bzw. 1083 weit genug
fortgeschritten ist. Das Vorhersageergebnis bezüglich der Anzahl zugehöriger Betragsbits
wird, wie im Vorhergehenden erwähnt,
mittels logischer Verknüpfung
aus dem 4-Bit-Vektor für
das Register 218 und der Signifikanzstatusvariablen gebildet.As already mentioned, the clock counter becomes 220 after each shift to the prediction preinitializes how many coefficients in a column are modulated or to be modeled. Since this prediction already executes one column before the column currently being modeled, the result is for the clock counter 22 already during the sliding process itself. If the result or the preinitialization is 0 or 1, the next shift operation of the shift register unit can be immediate with the next cycle 106 be triggered, what the clock counter 220 prompted accordingly. For larger preinitialized values, the clock counter delays 220 according to the output of the shift pulse 296 to the shift register unit 106 , As will be further mentioned below, the clock counter takes into account 220 further, whether the parallel processing by the bit-modeling units 108 2 respectively. 3 has progressed far enough. The prediction result regarding the number of associated magnitude bits, as mentioned above, is logically combined from the 4-bit vector for the register 218 and the significance status variable.
Obwohl
im Vorhergehenden bereits angedeutet wird noch einmal hervorgehoben,
wie die Aktualisierung der ersten Statusbits über den Demultiplexer 214 verläuft. Wie
bereits erwähnt
zeigen die ersten Statusbits 274 an, ob ein betreffender
Transformationskoeffizient bereits signifikant ist oder nicht, bezogen
auf die aktuelle Bitebene. Eine Aktualisierung kann also lediglich
einen Übergang
von nicht-signifikant
auf signifikant bedeuten. Die Kopplung des Datenbits 232 über den
Demultiplexer 214 mit der entsprechenden Registerzelle
innerhalb des Bereiches 286 des Teils 1063 der
Schieberegistereinheit 106 ist deshalb vorzugsweise derart
ausgebildet, dass die Rückkopplung
zu einer Aktualisierung des augenblicklichen Registerzellenzustands
des dem Datenbit 232 entsprechenden ersten Statusbits mit einem
Wert führt,
der einer logischen ODER-Verknüpfung
des augenblicklichen Zustands mit dem Datenbit 232 entspricht.
Zudem sollten entsprechende Vorkehrungen getroffen werden, so dass
das Datenbit 232 0 ist, wenn das Gültigkeitsbit 246 nicht
gesetzt ist. Anders ausgedrückt
ist der Demultiplexer 214 ausgangsseitig mit den Registerzellen
innerhalb des Bereiches 286 gekoppelt und ausgebildet,
um abhängig
von dem Multiplexersignal von dem Koeffizientenwähler 222 den Datenbitausgang
der Vorkodiereinheit 102 auf die vorbeschriebene ODER-Verknüpfungsweise
mit der entsprechenden erstes-Statusbit-Registerzelle
des durch das Multiplexersignal angezeigten Transformationskoeffizienten
zu koppeln.Although previously indicated, it is emphasized once again how to update the first status bits via the demultiplexer 214 runs. As already mentioned, the first status bits show 274 whether a respective transformation coefficient is already significant or not, relative to the current bit-plane. An update can only mean a transition from non-significant to significant. The coupling of the data bit 232 over the demultiplexer 214 with the corresponding register cell within the range 286 of the part 106 3 the shift register unit 106 Therefore, it is preferably designed so that the feedback to an update of the current register cell state of the data bit 232 corresponding first status bits with a value that a logical OR of the current state with the data bit 232 equivalent. In addition, appropriate precautions should be taken so that the data bit 232 0 is when the validity bit 246 not set. In other words, the demultiplexer 214 on the output side with the register cells within the range 286 coupled and adapted to be dependent on the multiplexer signal from the coefficient selector 222 the data bit output of the precode unit 102 in the above-described OR operation, to the corresponding first status bit register cell of the transform coefficient indicated by the multiplexer signal.
Nachdem
im Vorhergehenden die Funktionsweise der für den ersten Kodierpass zugständigen Bitmodelliereinheit 1081 beschrieben worden ist, wird im Folgenden
die Funktionsweise der für
den zweiten Kodierpass zuständigen
Bitmodelliereinheit 1082 beschrieben,
wozu auf 5 Bezug genommen wird. Im Unterschied
zu dem ersten Kodierdurchlauf bzw. Pass 1 ist der zweite Kodierdurchlauf
bzw. Pass 2 für Betragsbits
zuständig,
die zu bereits signifikanten Transformationskoeffizienten gehören. Der
zweite Kodierdurchlauf wird gemäß dem JPEG2000-Kodierschema
auch Betragsverfeinerungsdurch lauf bzw. Magnitude Refinement Pass
genannt, wobei derselbe für
Betragsbits relevant ist, die zu Koeffizienten gehören, die
bereits vor jeglichem Kodierdurchlauf der aktuellen Betragsbitebene
bereits signifikant sind aber eben nicht erst durch den ersten Pass
signifikant werden. Das bedeutet, dass die Entscheidung über die
Zugehörigkeit
eines Betragsbits zu dem zweiten Kodierdurchlauf auf der Grundlage
der Statusbits in dem Teil 1063 der
Schieberegistereinheit 106 getroffen werden sollte, der
noch nicht durch die Rückkopplung über den
Demultiplexer 214 innerhalb des Speichers 286 aktualisiert
worden ist, d. h. den ersten Statusbits in Registerzellen rechts
hiervon aus der Perspektive von 8. Umgekehrt
werden aber Kontexte der zu dem zweiten Pass gehörigen Betragsbits, wie im Folgenden
noch detaillierter beschrieben, auf der Grundlage der aktualisierten
ersten Statusbits ermittelt, weshalb die Bitmodelliereinheit 1082 ebenso wie die im Anschluss daran
beschriebene Bitmodelliereinheit 1083 die
Modellierung bezüglich
Betragsbits vornehmen, die von den aktuell modellierten Betragsbits
der Bitmodelliereinheit 1081 in
Einheiten der Schieberegisterränge
ausreichend zeitlich zurückliegen.
In dem vorliegend beschrieben exemplarischen Fall wird exemplarisch von
einem festen Versatz von zwei Schiebeimpulsen ausgegangen, obwohl,
wie es im Anschluss noch näher
ausgeführt
wird, auch eine variable Gestaltung dieses Versatzes unter Einhaltung
eines Mindestabstandes, wie z. B. den zwei Schieberegisterrängen, vorgesehen
sein kann.After above, the operation of the first coding pass associated with the bit-modeling unit 108 1 In the following, the mode of operation of the bit modeling unit responsible for the second coding pass will be described below 108 2 what's up to 5 Reference is made. In contrast to the first coding pass or pass 1, the second coding pass or pass 2 is responsible for magnitude bits which belong to already significant transformation coefficients. The second encoding pass is also called Magnitude Refinement Pass according to the JPEG2000 coding scheme, which is relevant to magnitude bits belonging to coefficients already significant before any coding pass of the current magnitude bit-plane but not just the first pass become significant. That is, the decision on the membership of a magnitude bit to the second coding pass is based on the status bits in the part 106 3 the shift register unit 106 should not be taken, yet not by the feedback on the demultiplexer 214 inside the store 286 has been updated, ie the first status bits in register cells to the right thereof from the perspective of 8th , Conversely, however, contexts of the magnitude bits associated with the second pass, as described in more detail below, are determined based on the updated first status bits, for which reason the bit modeling unit 108 2 as well as the bit modeling unit described below 3 make the modeling in terms of magnitude bits that are from the currently modeled magnitude bits of the bit modeling unit 108 1 are sufficiently in time in units of the shift register ranks. In the exemplary case described herein, an example is a fixed offset of two shift pulses assumed, although, as will be explained in more detail below, also a variable design of this offset while maintaining a minimum distance, such. B. the two shift registers, may be provided.
5 zeigt
den Aufbau der Bitmodelliereinheit 1082 gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung. Analog zur 4 ist sie
wieder zusammen mit der Schieberegistereinheit 106 und dem
zugehörigen
Zwischenspeicher 1102 gezeigt. Die
Bitmodelliereinheit 1082 umfasst
einen Anwendungsentscheider 300, einen Vorkodierer 302,
eine Steuerbitsteuerung 304, ein 4-Bit-Register 306 und einen
Summenschwellwertentscheider 308. Der Anwendungsentscheider 300 ist
mit dem Teil 1063 der Schieberegistereinheit 106 eingangsseitig
gekoppelt und ausgangsseitig mit dem 4-Bit- Register 306. Sowohl ein Eingang
des Vorkodierers 302 als auch ein Eingang des Summenschwellwertentscheiders 308 sind
mit dem Register 306 gekoppelt. Eingangsseitig ist der
Vorkodierer 302 zudem mit Teilen 1062 , 1063 und 1064 der
Schieberegistereinheit 106 gekoppelt. Intern umfasst der
Vorkodierer 302 vier zueinander entsprechend ausgeführte Betragsbitvorkodiereinheiten 3021 bis 3024 ,
eine für
jedes Betragsbit des aktuellen Tupels, die auch in 5 schraffiert
versinnbildlicht sind. Jede der Vorkodiereinheiten 3021 bis 3024 umfasst
einen Ausgang 310 für
ein Datenbit und einen 2-Bit-Ausgang 312 für einen
Kontext-Index. Die Steuerbitsteuerung 304 umfasst einen
Ausgang 314 für
ein Pass-Ende-Bit und einen Ausgang 316 für ein Bypass-Modus-Bit, wobei die Ausgänge 310 bis 316 zusammen
einen 14-Bit-Ausgang
für ein 14-Bit-Wort 318 definieren,
der mit einem Eingang des Zwischenspeichers 1102 gekoppelt
ist. Auch ein Ausgang des Summenschwellwertentscheiders 308 ist
mit einem weiteren Eingang des Zwischenspeichers 1102 gekoppelt, um ein Gültigkeitsbit 320 an den
Zwischenspeicher 1102 auszugeben. 5 shows the structure of the bit modeling unit 108 2 according to an embodiment of the present invention. Analogous to 4 is it back together with the shift register unit 106 and the associated cache 110 2 shown. The bit modeling unit 108 2 includes an application decision maker 300 , a precoder 302 , a control bit control 304 , a 4-bit register 306 and a sum threshold decisioner 308 , The application decision maker 300 is with the part 106 3 the shift register unit 106 coupled on the input side and on the output side with the 4-bit register 306 , Both an input of the precoder 302 as well as an input of the sum threshold decision maker 308 are with the register 306 coupled. On the input side is the precoder 302 also with parts 106 2 . 106 3 and 106 4 the shift register unit 106 coupled. Internally, the precoder includes 302 four mutually corresponding magnitude bit pre-encoding units 302 1 to 302 4 , one for each amount bit of the current tuple, which is also in 5 hatched are symbolized. Each of the precoding units 302 1 to 302 4 includes an exit 310 for a data bit and a 2-bit output 312 for a context index. The control bit control 304 includes an exit 314 for a pass end bit and an output 316 for a bypass mode bit, with the outputs 310 to 316 together a 14-bit output for a 14-bit word 318 define that with an input of the cache 110 2 is coupled. Also an output of the Sumschwellwertentscheiders 308 is with another input of the cache 110 2 coupled to a valid bit 320 to the cache 110 2 issue.
Nachdem
im Vorhergehenden der Aufbau der Bitmodelliereinheit 1082 beschrieben worden ist, wird im Folgenden
ihre Funktionsweise beschrieben. Der Anwendungsentscheider 300 ist
ausgebildet, um auf Basis seiner Eingangsinformationen in dem Register 306 pro
aktuell zu modellierendem Betragsbit ein Informationsbit lae, jae, kae und lae zu bilden,
die anzeigen, ob das jeweilige Betragsbit zu dem Pass 2 gehört oder
nicht, um dasselbe um eine geeignete Anzahl von Schiebeimpulsen
der Schieberegistereinheit verzögert
in das Register 306 zu schreiben. Die Verzögerung rührt daher,
dass eingangsseitig der Vorkodierer 102 mit Registerzellen
des Betragsbitteils 1062 der Schieberegistereinheit 106 gekoppelt ist,
die gegenüber
den Registerpositionen der Betragsbits, zu denen der Anwendungsentscheider 300 aktuell
die ersten Steuerbits auswertet, hier exemplarisch um drei Schieberänge nachgeordnet
ist, wobei erstere Registerpositionen innerhalb des Teils 1062 mit einer Strich-Punkt- Linie 322 markiert
sind. Insbesondere ist nun eingangsseitig die Vorkodiereinheit 3021 mit der Registerzelle 2521,2 und innerhalb des Registers 306 mit
dem Eintrag iae gekoppelt, die Vorkodiereinheit 3022 mit der Registerzelle 2521,3 und dem Bit jae des
Registers 306 usw. Jede der Vorkodiereinheiten 3021 bis 3024 ist
somit für
einen unterschiedlichen der Betragsbits in der aktuell zu modellierenden
4-er-Spalte 322 zuständig.After the construction of the bit modeling unit 108 2 has been described, their operation will be described below. The application decision maker 300 is designed to be based on its input information in the register 306 for each amount bit to be currently modeled, form an information bit l ae , j ae , k ae and l ae indicating whether or not the respective magnitude bit belongs to the pass 2, by the same time by an appropriate number of shift pulses of the shift register unit delayed into the register 306 to write. The delay is due to the fact that the input side of the precoder 102 with register cells of the magnitude bit part 106 2 the shift register unit 106 which is opposite to the register positions of the magnitude bits to which the application decision maker 300 currently evaluates the first control bits, here by example by three slide length downstream, the former register positions within the part 106 2 with a dash-dot line 322 are marked. In particular, the input side is now the precoding unit 302 1 with the register cell 252 1.2 and within the register 306 coupled to the entry i ae , the precoding unit 302 2 with the register cell 252 1.3 and the bit j ae of the register 306 etc. Each of the precoding units 302 1 to 302 4 is thus for a different one of the magnitude bits in the 4-er column currently to be modeled 322 responsible.
Jede
Vorkodiereinheit 3021 bis 3024 stellt ihr Datenbit gemäß Ihrem
Betragsbit aus den Zellen 322 ein. Den Kontextindex bestimmen
sie abhängig
von den aktualisierten Signifikanzen der Nachbarkoeffizienten, wozu
der Vorkodierer 302 mit den Registerzellen des Teils 1063 der Schieberegistereinheit 106 gekoppelt
ist, der in 8 mit einer Strich-Punkt-Linie 324 gekennzeichnet
ist. Insbesondere ist beispielsweise die Vorkodiereinheit 3021 mit den Registerzellen 2741,1 bis 2743,1 , 2741,1 bis 2743,3 , 2741,2 und 2743,2 gekoppelt,
die somit Koeffizienten betreffen, die dasjenige des Betragsbits 2521,2 umgeben. Insbesondere legt jede
Kodiereinheit 3021 bis 3024 ihren Kontextindex 312 durch
Bildung aus einer logischen Verknüpfung der ersten Steuerbits 274 dieser
Nachbarkoeffizienten fest. Sollte dabei allerdings der zugehörige Eintrag
in dem Register 306 der jeweiligen Vorkodiereinheit 3021 bis 3024 anzeigen,
dass ihr jeweiliges Betragsbit gar nicht dem Pass 2 angehört, so setzt
sie die Kontextindexbits 312 auf eine Bitkombination, die
keinem sinnvollen Kontextindex entspricht und somit aus sich allein
heraus erkennen lässt,
dass das entsprechend zugehörige
Datenbit 310 ungültig ist.Each precoding unit 302 1 to 302 4 puts its data bit out of cells according to its amount bit 322 one. They determine the context index depending on the updated significances of the neighboring coefficients, for which the precoder 302 with the register cells of the part 106 3 the shift register unit 106 is coupled in 8th with a dash-dot line 324 is marked. In particular, for example, the Vorkodiereinheit 302 1 with the register cells 274 1.1 to 274 3.1 . 274 1.1 to 274 3.3 . 274 1.2 and 274 3.2 coupled, which thus affect coefficients that that of the magnitude bits 252 1.2 surround. In particular, each coding unit sets 302 1 to 302 4 their context index 312 by forming a logical combination of the first control bits 274 of these neighboring coefficients. Should, however, the associated entry in the register 306 the respective precoding unit 302 1 to 302 4 indicate that their respective amount bit does not belong to pass 2, it sets the context index bits 312 to a bit combination that does not correspond to a meaningful context index and thus can be seen by itself that the corresponding data bit 310 is invalid.
Zusätzlich ist
der Vorkodierer 302 mit den Registerzellen 280 aus
dem Teil 1064 der Schieberegistereinheit
gekoppelt, insbesondere jede Vorkodiereinheit 3021 bis 3024 mit der entsprechenden Registerzelle
für das
dem jeweiligen Betragsbit zugeordnete zweite Statusbit. Dabei sind
die Vorkodiereinheiten 3021 bis 3024 so ausgelegt, dass die Kontextindizes 312,
die sie ausgeben, nicht nur von der soeben beschriebenen logischen
Verknüpfung,
sondern ferner auch von dem jeweiligen zweiten Statusbit abhängen, d.
h. also davon, ob der betreffende Transformationskoeffizient bereits
ein Betragsbit in den vorhergehenden signifikanteren Betragsbitebenen
besaß,
dass den zweiten Kodierdurchlauf bzw. Pass 2 durchlief oder nicht.
Die Kopplung des Vorkodierers 302 mit den Registerzellen
des Teils 1064 ist in 8 mit
der Strich-Punkt-Linie 326 angedeutet.In addition, the precoder is 302 with the register cells 280 from the part 106 4 the shift register unit coupled, in particular each Vorkodiereinheit 302 1 to 302 4 with the corresponding register cell for the second status bit assigned to the respective magnitude bit. Here are the Vorkodiereinheiten 302 1 to 302 4 designed so that the context indexes 312 which they output depend not only on the logic operation just described, but also on the respective second status bit, ie on whether the transformation coefficient in question already had an amount bit in the previous significant amount bit planes, that the second coding pass or pass 2 went through or not. The coupling of the precoder 302 with the register cells of the part 106 4 is in 8th with the dash-dot line 326 indicated.
Die
Steuerbitsteuerung 304 stellt das Bypass-Modus-Bit 316 beispielsweise
gleichartig ein wie im Vorhergehenden Bezug nehmend auf die Steuerung 224 beschrieben.
Gleiches gilt für
das Pass-Ende-Bit 314. Auch die Steuerbitsteuerung 304 setzt
folglich die Steuerbits 314 und 316, um der nachfolgenden
arithmetischen Kodiereinrichtung Informationen zu liefern, die anzeigen,
ob der sogenannte Bypass-Modus aktiv sein soll, oder ob der aktuelle
Coding-Pass zu Ende ist.The control bit control 304 sets the bypass mode bit 316 for example, similar to the above with reference to the controller 224 described. The same applies to the pass-end bit 314 , Also the control bit control 304 thus sets the control bits 314 and 316 to the subsequent arithmetic encoder In provide information indicating whether the so-called bypass mode should be active or whether the current coding pass is over.
Wie
bereits erwähnt,
bilden die Bits 310–316 das
Datenwort 318. Der Zwischenspeicher 3102 ist nun
beispielsweise ausgebildet, um das 14-Bit-Wort 318 nur
dann in den Zwischenspeicher aufzunehmen, wenn das Gültigkeitsbit 320 gesetzt
ist, es sei denn, das Pass-Ende-Bit 314 ist gesetzt, in
welchem Fall das Datenwort 318 auf jeden Fall in den Zwischenspeicher 3102 eingespeichert wird. Die Zusammenfassung
von Gültigkeitsbit
und 14-Bit-Wort 318 zu einem größeren Datenwort mit Einspeicherung auf
jeden Fall ist natürlich
alternativ ebenfalls möglich,
wie es bereits Bezug nehmend auf 4 beschrieben
worden war.As already mentioned, the bits form 310 - 316 the data word 318 , The cache 310 2 is now trained, for example, the 14-bit word 318 to include in the cache only if the valid bit 320 is set unless the pass-end bit 314 is set, in which case the data word 318 definitely in the cache 310 2 is stored. The summary of valid bit and 14-bit word 318 to a larger data word with storage in any case is of course also possible, as already referring to 4 had been described.
Der
Summenschwellwertentscheider 308 summiert die Bits in dem
Register 306 und überprüft, ob die
Summe größer oder
gleich 1 ist, um das Gültigkeitsbit 320 entsprechend
dem Überprüfungsergebnis
einzustellen, und um auf diese Weise das Gültigkeitsbit zu setzen, wenn
zumindest einer der aktuell zu modifizierenden Betragsbits in dem
aktuellen Tupel dem Pass 2 angehört.The sum threshold decision maker 308 sums the bits in the register 306 and checks if the sum is greater than or equal to 1 to the valid bit 320 in accordance with the result of the check, and thus set the validity bit if at least one of the currently modifiable magnitude bits in the current tuple belongs to the pass2.
Die
Bitmodelliereinheit 1082 ist folglich
in der Lage, die dem Pass 2 zugehörigen Betragsbits innerhalb
eines aktuellen Tupels 322 in einem Verarbeitungszyklus
in ein Datenwort 318 vorzukodieren. Wie viele der Paare
von Datenbit und Kontextindex in dem 14-Bit-Datenwort 318 tatsächlich gültig sind bzw.
in den zu kodierenden Datenstrom am Ausgang des arithmetischen Kodierers 124 (3)
einzubringen sind, geht aus diesen Paaren selbst hervor, indem dieselben
in dem negativen Fall eine spezielle Bitkombination aufweisen, die
keine gültige
Kombination aus Datenbit und Kontextindex bzw. kein gültiger Kontext
ist. Insofern benötigt
die Bitmodelliereinheit 1082 auch
keine Schiebeimpulsausgabefähigkeit,
da sie mindestens so schnell ist wie die beschriebene Bitmodelliereinheit 1081 , die ja zumindest einen Verarbeitungszyklus
pro zum Pass 1 gehörigem
Betragsbit benötigt.The bit modeling unit 108 2 is thus able, the amount bits associated with the pass 2 within a current tuple 322 in a processing cycle into a data word 318 precode. How many of the pairs of data bits and context index in the 14-bit data word 318 are actually valid or in the data stream to be encoded at the output of the arithmetic encoder 124 ( 3 ) are inherent in these pairs themselves, having in the negative case a special bit combination which is not a valid combination of data bit and context index or valid context. In this respect, the bit modeling unit needs 108 2 also no shift pulse output capability, since it is at least as fast as the described bit modeling unit 108 1 , which requires at least one processing cycle per amount bit associated with pass 1.
Im
Folgenden wird Aufbau und Funktionsweise der Bitmodelliereinheit 1083 für
den dritten Kodierpass beschrieben. Dabei wird Bezug auf 6 genommen.
Der Aufbau ist im Hinblick auf die Blöcke und deren Kopplung untereinander ähnlich zu
dem Fall der Bitmodelliereinheit 1081 von 4.
Zur Vermeidung unnötiger
Wiederholungen sind deshalb in 6 Elemente,
die grundsätzlich
gleiche Aufgaben übernehmen
wie Elemente aus 4 mit Bezugszeichen versehen,
die sich von denjenigen aus 4 lediglich
um die erste Ziffer bzw. die Hunderterstelle unterscheiden, und
zwar so, dass sie eine Vier anstelle einer Zwei aufweisen. Insbesondere
sind alle Elemente aus 4 auch in 6 dargestellt,
mit dem Unterschied, dass es sich bei dem in 6 gezeigten
Zwischenspeicher natürlich
um den Zwischenspeicher 1103 handelt,
mit dem Unterschied, dass die Steuerbitkontrolle neben dem Pass-Ende-Bit 442 ein
Block-Ende-Bit 440 ausgibt und kein Bypass-Ende-Bit, und
mit dem Unterschied, dass die Vorzeichenbitvorkodiereinheit 408 keine
Kopplung mit der Steuerbitkontrolle 424 aufweist. Unterschiede in
Funktionalität
und genauer Verschaltung mit der Schieberegistereinheit 106 der
einander entsprechenden Ele mente in 4 und 6 gehen
aus der nachfolgenden Beschreibung hervor, so dass Funktionalitätsbeschreibungen,
die im Folgenden erläutert werden,
entsprechende Funktionalitätsbeschreibungen
bezüglich
der entsprechenden Elemente Bezug nehmend auf 4 insofern
ersetzen sollen. Im Übrigen
wird bezüglich
Funktionalität
und Verschaltung auf die Beschreibung von 4 verwiesen.The following describes the structure and mode of operation of the bit modeling unit 3 for the third coding pass. This refers to 6 taken. The structure is similar to the case of the bit modeling unit in terms of the blocks and their coupling to each other 108 1 from 4 , To avoid unnecessary repetitions are therefore in 6 Elements that basically perform the same tasks as elements 4 provided with reference numerals, which are different from those of 4 differ only by the first digit or the hundredth place, in such a way that they have a four instead of a two. In particular, all elements are off 4 also in 6 shown, with the difference that it is in the in 6 Of course, the cache shown around the cache 110 3 with the difference being that the control bit control is next to the pass end bit 442 a block end bit 440 outputs and no bypass end bit, and with the difference that the sign bit precoding unit 408 no coupling with the control bit control 424 having. Differences in functionality and more precise connection with the shift register unit 106 the corresponding ele ments in 4 and 6 will be apparent from the following description, so that functionality descriptions, which will be explained below, corresponding function descriptions with respect to the corresponding elements with reference to 4 in this respect should replace. Incidentally, regarding functionality and interconnection, the description of 4 directed.
Zusätzlich zu
den vorerwähnten
Elementen umfasst die Bitmodelliereinheit 1083 eine
Lauflängenkodiereinheit 500,
die einen Eingang aufweist, der mit dem Register 418 gekoppelt
ist, sowie einen Eingang, der mit einem weiteren Ausgang der Analyse/Vorhersageeinheit 400 gekoppelt
ist. Ein Ausgang der Lauflängenkodiereinheit 500 ist
dazu vorgesehen, ein Lauflängensymbol 502 mit
drei Bits auszugeben, um zusammen mit den anderen Ausgabebits 430–436 und 440, 442 das
in den Zwischenspeicher 1103 eingehende
Datenwort 444 zu bilden, das somit ein 15-Bit-Datenwort 444 ist.In addition to the aforementioned elements, the bit modeling unit includes 3 a run length encoding unit 500 having an input connected to the register 418 coupled to an input connected to another output of the analysis / prediction unit 400 is coupled. An output of the run length encoding unit 500 is intended to be a run length symbol 502 with three bits to output together with the other output bits 430 - 436 and 440 . 442 that in the cache 110 3 incoming data word 444 thus forming a 15-bit data word 444 is.
Der
dritte Kodierdurchlauf, für
den die Bitmodelliereinheit 1083 zuständig ist,
kommt zum Tragen, wenn der zu modellierende Koeffizient für die aktuelle Bitebene
noch insignifikant ist, und nicht von dem ersten Durchlauf erfasst
wurde. Er wird somit auch als „clean-up
pass” bezeichnet.
Die Funktionsweise des dritten Kodierdurchlaufes ähnelt hinsichtlich
der Kontextbildung und Vorkodierung dem ersten Durchlauf, ist aber
um eine sogenannte Lauflängen-
bzw. RL-(RL = run
length = Lauflänge)Primitive
erweitert. Anders ausgedrückt
ist der dritte Kodierdurchlauf für die
restlichen Betragsbits zuständig,
die weder dem ersten noch dem zweiten Kodierdurchlauf angehören, wobei
die Kodierung der Pass-3-Betragsbits in der aktuellen 4-er-Spalte
wie in dem Fall von Pass 1 erfolgt, mit der Ausnahme, dass in dem
Fall, dass alle Betragsbits in der aktuellen 4-er-Spalte einem noch nicht
signifikanten Transformationskoeffizienten zugeordnet sind und lediglich
insignifikante Nachbarkoeffizienten aufweisen, in welchem Fall der
Lauflängenmodus
einsetzt, der von oben bis unten den Lauf von insignifikant bleibenden
Betragsbits in dem aktuellen Tupel angibt und somit lediglich unterbrochen wird,
falls einer der Betragsbits der aktuellen 4-er-Spalte in der aktuellen
Bitebene signifikant wird bzw. einen Betragsbitwert von 1 aufweist,
von wo an die darauf folgenden Betragsbits in dieser 4-er-Spalte wie in dem
Fall von Pass 1 weiterkodiert werden und das Vorzeichen des die
RL-Primitive unterbrechenden Koeffizienten kodiert wird.The third coding pass for which the bit modeling unit 3 is responsible, comes into play when the coefficient to be modeled for the current bit-plane is still insignificant, and was not covered by the first pass. He is therefore also referred to as a "clean-up pass". The operation of the third coding pass is similar in terms of context formation and precoding to the first pass, but is extended by a so-called run length or RL (RL = run length) primitive. In other words, the third coding pass is responsible for the remaining magnitude bits which belong to neither the first nor the second coding pass, the coding of the pass-3 magnitude bits in the current 4-er column being the same as in the case of pass 1, with Exception that in the case that all magnitude bits in the current 4-er column are assigned a not yet significant transformation coefficient and have only insignificant neighboring coefficients, in which case the run-length mode sets in, from top to bottom the run of insignificant magnitude bits in indicates the current tuple and is thus only interrupted if any of the magnitude bits of the current 4-er column in the current bit-plane becomes significant or has an magnitude-bit-value of 1, from where to the subsequent magnitude bits in that 4-er column in the case of pass 1 are further encoded and encodes the sign of the coefficient interrupting the RL primitive.
Nach
diesem kurzen Überblick über den Pass
3 wird wieder in Zusammenschau der 6 und 8 die
Funktionsweise der Einheit 1083 erläutert. Da
der Pass 3 definitionsgemäß der letzte
unter den sequentiellen Passes bzw. Durchläufen ist, beziehen sich die
Signifikanzüberprüfungen jeweils
auf die bereits durch die Bitmodelliereinheit 1081 aktualisierten
ersten Statusbits, d. h. die ersten Statusbits links des Bereiches 286 in 8.
Die Überprüfung der
Nachbarkoeffizientensignifikanzen in Betracht ziehend, sollte der
Bereich der aktuellen 4-er-Spalte zumindest zwei Schieberegisterränge hinter
dem aktuellen Bereich 282 der Bitmodelliereinheit 1081 liegen. Gemäß dem Ausführungsbeispiel von 6 liegt
der aktuelle Bereich genau zwei Schieberegisterringe hinter diesem
Bereich. Allerdings kann es, wie im Vorhergehenden Bezug nehmend
auf den Pass 2 erläutert,
auch vorgesehen sein, dass der Aufbau der Schieberegistereinheit
gegenüber 8 modifiziert
wird, um auch einen variablen Versatz zu ermöglichen, so dass die Verarbeitungsgeschwindigkeit
der beiden Einheiten 1081 und 1083 entkoppelt ist.After this brief overview of the Pass 3 is again in synopsis of 6 and 8th the functioning of the unit 3 explained. Since pass 3 is by definition the last among the sequential passes, the significance checks each already refer to those already performed by the bit modeling unit 108 1 updated first status bits, ie the first status bits left of the range 286 in 8th , Taking into account the adjacency coefficient significance checks, the range of the current 4-column should be at least two shift register ranks beyond the current range 282 the bit modeling unit 108 1 lie. According to the embodiment of 6 The current range is exactly two shift register rings behind this range. However, as explained above with reference to the passport 2, it may also be provided that the structure of the shift register unit faces 8th is also modified to allow a variable offset, so that the processing speed of the two units 108 1 and 3 is decoupled.
Im
Folgenden soll Bezug auf die 6 und 8 in
Zusammenschau genommen werden, um die Funktionsweise der Bitmodelliereinheit 1083 zu veranschaulichen. Die Analyse/Vorhersageeinheit 400 überprüft wieder
vorab das 4-er-Tuple
von Betragsbits 2522,2 bis 2522,5 , das als nächstes zur Modellierung in
der Einheit 1083 vorgesehen ist,
welche derselben dem Pass 3 angehören, d. h. welche nicht dem
Pass 1 oder dem Pass 2 angehören,
und ist dazu über
die Kopplung 428 mit Registerzellen des Teils 1063 der Schieberegister einheit 106 gekoppelt, wobei
diese Schieberegisterzellen in 8 mit der Strich-3-Punkt-Linie 504 umrahmt
sind. Unter diesen ersten Statusbits in dem Bereich 504 bedürfen die Statusbits
innerhalb des Bereiches 286 einer Aktualisierung bzw. einer
Berücksichtigung,
dass dieselben gegebenenfalls während
des ersten Durchlaufs signifikant werden, wozu die Analyse/Vorhersageeinheit auch
das vorherige, bezüglich
des vorherigen Schiebezyklus erhaltene Vorhersageergebnis der Analyse/Vorhersageeinheit 200 der
Bitmodelliereinheit 1081 verwendet
sowie die Betragsbits in dem zugehörigen Bereich 292,
wozu die Analyse/Vorhersageeinheit 400 über die Kopplung 446 ebenfalls
mit den Registerzellen in dem Bereich 292 gekoppelt ist.
Zudem verwendet die Analyse/Vorhersageeinheit 400 analog
zu dem Fall von 4 ihr letztes Vorhersageergebnis
für die
Vorhersage, welches sich für
die aktuelle Vorhersage natürlich
auf die Betragsbits in dem aktuell zu modellierenden Bereich bezieht,
um nämlich
die Aktualisierungen der Signifikanzen in den Positionen 2742,2 bis 2742,5 aufgrund
des eigenen Kodierdurchlaufes, d. h. des Kodierdurchlaufes 3,
zu berücksichtigen,
der erst im laufenden Schiebezyklus erfolgt, wozu die Analyse/Vorhersageeinheit 400 ebenfalls
mit weiteren Betragsbitregisterzellen innerhalb des Bereiches 1062 der Schieberegister 106 gekoppelt
ist, nämlich
denen der aktuellen 4-er-Spalte innerhalb
des mit der Strich-3-Punkt-Linie 506 gekennzeichneten Bereiches.
Das Vorhersageergebnis gibt die Analyse/Vorhersageeinheit 400 wie
in dem Fall von 4 in das Register 418 für den nächsten Schiebezyklus
aus.The following is intended to refer to the 6 and 8th be taken in synopsis to the operation of the bit modeling unit 3 to illustrate. The analysis / prediction unit 400 again checks in advance the 4-tuple of magnitude bits 252 2.2 to 252 2.5 Next, for modeling in the unit 3 is provided, which belong to the passport 3, ie which do not belong to the passport 1 or the passport 2, and is about the coupling 428 with register cells of the part 106 3 the shift register unit 106 coupled, these shift register cells in 8th with the dash 3-point line 504 are framed. Among these first status bits in the range 504 require the status bits within the range 286 an updating or taking into account that they may become significant during the first pass, for which the analysis / prediction unit also includes the previous prediction result of the analysis / prediction unit obtained with respect to the previous shift cycle 200 the bit modeling unit 108 1 used and the magnitude bits in the associated area 292 including the analysis / prediction unit 400 over the coupling 446 also with the register cells in the area 292 is coupled. In addition, the analysis / prediction unit uses 400 analogous to the case of 4 its last prediction result for the prediction, which for the current prediction naturally relates to the magnitude bits in the area currently to be modeled, namely the updates of the significances in the positions 274 2.2 to 274 2.5 due to its own coding pass, ie the coding pass 3 , to take into account, which takes place only in the current shift cycle, including the analysis / prediction unit 400 also with further magnitude bit register cells within the range 106 2 the shift register 106 is coupled, namely those of the current 4-er column within the dashed 3-point line 506 marked area. The prediction result gives the analysis / prediction unit 400 as in the case of 4 in the register 418 for the next shift cycle.
Die
Lauflängenkodiereinheit 500 wertet
bei Beginn des Schiebezyklus, bei dem also die bezüglich ihrer
Pass3-Zugehörigkeit
vorhergesagten Betragsbits in dem Teil 1062 der
Schieberegistereinheit 106 vorgeschoben worden sind, um
das aktuelle Betragsbittupel darzustellen, zusammen mit den aktuellen
Betragsbits, auf die sich die Vorhersage in dem Register 418 bezieht
und die sie gemäß dem Beispiel von 6 von
der Analyse/Vorhersageeinheit 400 weitergeleitet bekommt,
den 4-Bit-Vektor in dem Register 418 aus, um ers tens festzustellen,
ob die Lauflängenprimitive
Anwendung finden soll, d. h. alle Betragsbits des aktuellen 4-er-Tupels dem dritten
Kodierdurchlauf zugeordnet sind, und, falls dies der Fall ist, ob
sie aufgrund eines signifikant werdenden Betragsbits unter denselben
an irgendeiner Stelle unterbrochen wird, um abhängig von dieser Auswertung das
Lauflängensymbol 502 einzustellen.
Ab dem signifikant werdenden Betragsbit, d. h. alle Betragsbits nach
dem signifikant werdenden bis unten, inklusive des signifikant werdenden,
da für
diesen ja noch das Vorzeichen in den kodierten Datenstrom zu kodieren ist,
werden von dem Koeffizientenwähler 422 in
ein entsprechendes Multiplexersignal umgewandelt, so dass die Kodiereinheiten 402 und 408 auf
die oben beschriebene Weise für
diese Betragsbits entsprechende Paare von Datenbit und Kontextbit 430–436 erzeugen.
Wie bereits im Vorhergehenden erwähnt, benötigen die Vorkodiereinheiten 402 und 408 hierzu einen
Verarbeitungszyklus pro Betragsbit. Es wird deshalb lediglich nur
ein Datenwort 444 für
eine 4-er-Spalte durch die Bitmodelliereinheit 1083 in
dem Lauflängenkodierfall
nur dann erzeugt, solange sich nicht mehr als ein signifikant werdender
Betragsbit unter den vier aktuellen Betragsbits befindet. Anderenfalls
werden mehrere 15-Bit-Datenworte 444 erzeugt, wobei nur
in dem ersten Datenwort 444 das Lauflängensymbol 502, inklusive
des signifikant werdenden, da für
diesen ja noch das Vorzeichen in den kodierten Datenstrom zu kodieren
ist und ansonsten anzeigt, dass es unbeachtlich ist.The run-length coding unit 500 evaluates at the beginning of the shift cycle, in which therefore the amount bits predicted in terms of their Pass3 membership in the part 106 2 the shift register unit 106 have been advanced to represent the current magnitude bit, along with the current magnitude bits to which the prediction in the register 418 and according to the example of 6 from the analysis / prediction unit 400 gets the 4-bit vector in the register 418 to determine at the very least whether the run-length primitive is to be used, that is, all magnitude bits of the current 4-tuple are assigned to the third encoding pass, and if so, if they are below them at any point due to a significant magnitude bit is interrupted, depending on this evaluation, the run length symbol 502 adjust. From the significant amount bit, ie all amount bits after the becoming significant to below, including the significant, since this is still the sign in the coded data stream to be coded are from the coefficient selector 422 converted into a corresponding multiplexer signal, so that the coding units 402 and 408 in the manner described above for these magnitude bits corresponding pairs of data bits and context bits 430 - 436 produce. As already mentioned above, the precoding units require 402 and 408 this one processing cycle per amount bit. It is therefore only a single word 444 for a 4-column by the bit modeling unit 3 in the run-length coding case is only generated as long as there is no more than one significant amount bit among the four current magnitude bits. Otherwise, multiple 15-bit data words 444 generated, only in the first data word 444 the run length symbol 502 , including the significant, because for this is still the sign in the encoded data stream to encode and otherwise indicates that it is irrelevant.
Obwohl
der Pass 3 der letzte Durchlauf ist, wird das Betragsdatenbit 432 am
Ausgang der Vorkodiereinheit 402 über den Demultiplexer 414 in
den Teil 1063 der Schieberegistereinheit 106 rückgekoppelt,
und zwar abhängig
von dem Multiplexersignal von dem Koeffizientenwähler 422 in die entsprechende
Registerzelle innerhalb der 4-er-Spalte von Registerzellen 2742,2 bis 2742,5 .
der Grund dafür
besteht darin, dass beim nächsten
Schiebevorgang, bei dem diese 4-er-Spalte in 8 um eine
Position nach links verschoben wird, bezüglich der Signifikanzen aktualisiert
sein soll.Although pass 3 is the last pass, the amount data bit becomes 432 at the exit of the precoding unit 402 over the demultiplexer 414 in the part 106 3 the shift register unit 106 fed back, depending on the multiplexer signal from the coefficient selector 422 into the corresponding register cell within the 4-column of Regis terzellen 274 2.2 to 274 2.5 , the reason for this is that at the next shift, this 4's column in 8th is shifted one position to the left, with respect to which significances should be updated.
Ausgangsseitig
ist der Demultiplexer 414 mit den Registerzellen 2742,2 bis 2742,5 gekoppelt.
Eingangsseitig ist der Multiplexer 404 mit den Registerzellen
innerhalb des Bereiches 506 gekoppelt. Der Multiplexer 406 ist
eingangsseitig mit den Registerzellen innerhalb des Bereiches 508 gekoppelt,
der die ersten Statusbits für
einen Bereich beinhaltet, den die aktuelle 4-er-Spalte von Betragsbits 506 inklusive Nachbarkoeffizienten
umgibt. Der Multiplexer 410 ist mit dem entsprechenden
Bereich von Registerzellen innerhalb des Bereiches 1061 der Schieberegistereinheit 106 gekoppelt,
der in 8 mit 510 hervorgehoben ist. Der Multiplexer 412 ist
eingangsseitig mit Registerzellen innerhalb des Bereiches 508 gekoppelt,
und zwar beispielsweise den Registerzellen 2741,2 bis 2741,5 und 2742,1 bis 2742,4 .On the output side is the demultiplexer 414 with the register cells 274 2.2 to 274 2.5 coupled. The input side is the multiplexer 404 with the register cells within the range 506 coupled. The multiplexer 406 is input side with the register cells within the range 508 which includes the first status bits for an area that the current 4's column of magnitude bits 506 including adjacent coefficients. The multiplexer 410 is with the corresponding range of register cells within the range 106 1 the shift register unit 106 coupled in 8th With 510 is highlighted. The multiplexer 412 is input side with register cells within the range 508 coupled, for example, the register cells 274 1.2 to 274 1.5 and 274 2.1 to 274 2.4 ,
Auf
die vorgeschriebene Weise sorgt folglich die Bitmodelliereinheit 1083 dafür, dass eine Analyse der zu
modellierenden Koeffizienten stattfindet, ob sie noch insignifikant
sind, sowie eine Analyse der direkten Nachbar-Koeffizienten, ob sie schon signifikant
sind, und zwar derart, dass die Analyse bereits eine Spalte vor
der aktuell zu modellierenden Spalte stattfindet. Das Analyseergebnis
wird wieder als 4-Bit-Vektor ausgegeben, und zwar in das Register 418,
auf der Basis welchen Vektors die Entscheidung getroffen wird, ob
die RL-Primitive auf die vier aktuellen Koeffizienten angewendet
wird. Wenn die Bedingung erfüllt
ist, was von der Lauflängenkodiereinheit 500 geprüft wird,
wird natürlich über den
Multiplexer 516 auch das Gültigkeitsbit gesetzt, da jedes
Bit in dem Register 418 gesetzt ist, und die Kodiereinheit 500 führt das
Lauflängenkodierschema
aus, was die Festlegung des Symbols 502 beinhaltet, das
repräsentiert,
ob die RL-Primitive zur Anwendung kam und gegebenenfalls an welcher
Position ein Koeffizient signifikant wird. Wenn mindestens ein Koeffizient
in dem aktuellen Tupel signifikant wird, wird zudem durch die Vorkodiereinheit 408 für das den
Lauf unterbrechende Betragsbit das zugehörige Vorzeichen kodiert (die
Bits 432 und 436 sind in diesem Verarbeitungszyklus
unbeachtlich).Consequently, the bit modeling unit provides the prescribed manner 3 for an analysis of the coefficients to be modeled, whether they are still insignificant, and an analysis of the direct neighboring coefficients, whether they are already significant, and in such a way that the analysis already takes place one column in front of the column currently to be modeled. The analysis result is again output as a 4-bit vector, in the register 418 on the basis of which vector the decision is made whether the RL primitive is applied to the four current coefficients. If the condition is met, what of the runlength coding unit 500 is checked, of course, via the multiplexer 516 also set the valid bit since every bit in the register 418 is set, and the coding unit 500 executes the runlength coding scheme, which determines the designation of the symbol 502 which represents whether the RL primitive was used and, where appropriate, at which position a coefficient becomes significant. If at least one coefficient in the current tuple becomes significant, it will also become significant by the precoding unit 408 for which the run interrupting magnitude bit encodes the associated sign (the bits 432 and 436 are irrelevant in this processing cycle).
Für die auf
das die RL-Primitive unterbrechende Betragsbit folgenden Bitpositionen
wird durch die Vorkodiereinheit 402 das bereits im Vorhergehenden
beschriebene SP-Kodierschema für
jeden folgenden Koeffizienten in der aktuellen Spalte ausgeführt, was
die Festlegung eines Datenbits und eines passenden Kontextindex
beinhaltet, welches mittels logischer Verknüpfungen der Signifikanzen der Nachbar-Koeffizienten gebildet
wird. Zusätzlich
wird für
diese nachfolgenden Bitpositionen, wenn das Datenbit des SP-Kodierschemas bzw.
das entsprechende Betragsbit an der jeweiligen Bitposition gesetzt
ist, was über
die Verbindung 494 überprüfbar ist,
durch die Vorkodiereinheit 408 die Ausführung des SC-Schemas ausgeführt, was
die Festlegung eines Datenbits und eines passenden Kontext-Index,
welches mittels logischer Verknüpfungen
der Signifikanzen und Vorzeichen der Nachbar-Koeffizienten gebildet
wird, beinhaltet. Die Steuerbits 440 und 442 werden
von der Steuerbitsteuerung 424 gesetzt, die der nachfolgenden
arithmetischen Kodiereinrichtung mitteilen, ob der aktuelle Kodierdurchlauf
bzw. der aktuelle Codeblock zu Ende sind. Letzteres trifft bei dem Beispiel
von 2 beispielsweise bei dem Tupel un, vn, wn, xn zu.
Datenbits und Kontext-Indizes der SP- und SC-Schemata sowie dem
Symbol 502 und der Steuerbits 440 und 424 werden
zu dem 15-Bit-Datenwort 444 zusammengefasst, das in dem
Zwischenspeicher 1103 bei gesetztem
Gültigkeitsbit
und auf jeden Fall dann, wenn das Pass-Ende-Bit 442 gesetzt ist,
eingespeichert wird.The bit positions following the magnitude bit interrupting the RL primitive are processed by the precode unit 402 executing the SP encoding scheme already described above for each successive coefficient in the current column, which involves establishing a data bit and matching context index formed by logically linking the significances of the neighbor coefficients. In addition, for these subsequent bit positions, when the data bit of the SP encoding scheme or the corresponding magnitude bit is set at the respective bit position, what happens over the connection 494 is verifiable by the precoding unit 408 execution of the SC scheme is carried out, which involves establishing a data bit and a matching context index formed by logically linking the significances and signs of the neighbor coefficients. The control bits 440 and 442 be from the control bit control 424 are set, which tell the subsequent arithmetic encoder whether the current coding pass or the current code block are over. The latter applies in the example of 2 for example, with the tuple u n , v n , w n , x n . Data bits and context indices of the SP and SC schemas and the symbol 502 and the control bits 440 and 424 become the 15-bit data word 444 summarized in the cache 110 3 if valid bit is set and in any case if the pass-end bit 442 is set, is stored.
Natürlich wird
von der Analyse-Vorhersageeinheit 400 auch die Vorhersage
getroffen, wie viele Koeffizienten in einer Spalte modelliert werden,
wobei diese Vorhersage bereits eine Spalte vor der aktuell zu modellierenden
Spalte ausgeführt
wird, so dass das Ergebnis bereits beim Schiebevorgang vorliegt,
wobei, falls das Ergebnis „0” oder „1” ist, mit dem
nächsten
Takt sofort der nächste
Schiebevorgang folgen könnte,
was der Taktzähler 426 der Schieberegistereinheit 106 mitteilt.
Das Vorhersageergebnis wird mittels logischer Verknüpfung aus
dem Vier-Bit-Vektor sowie der Signifikanzstatusvariablen gebildet,
wie es im Vorhergehenden beschrieben worden ist, wobei in der Schieberegistereinheit 106 entsprechende
Vorkehrungen getroffen sind, dass der Schiebevorgang tatsächlich nur
dann durchgeführt
wird, wenn beide Einheiten 1081 und 1083 ihren Schiebeimpuls an die Schieberegistereinheit 106 weitergeleitet
haben, um sicherzustellen, dass nicht zu früh mit einem Schiebevorgang
begonnen wird.Of course, from the analysis prediction unit 400 also predicted how many coefficients are modeled in a column, this prediction already being performed one column ahead of the column currently being modeled, so that the result is already present during the shift, and if the result is "0" or "1" is, with the next bar could immediately follow the next shift, which is the clock counter 426 the shift register unit 106 telling. The prediction result is formed by logically combining the four-bit vector and the significance status variable, as described above, in the shift register unit 106 appropriate precautions are taken that the sliding operation is actually only performed when both units 108 1 and 3 its shift pulse to the shift register unit 106 to make sure that you do not start pushing too soon.
Nach
der Beschreibung der drei Bitmodelliereinheiten 1081 bis 1083 wird kurz wieder auf 3 Bezug
genommen, bevor mit der detaillierten Beschreibung des internen
Aufbaus des Durchlaufentscheiders 122 gemäß einem
Ausführungsbeispiel der
vorliegenden Erfindung fortgefahren wird. Wie im Vorhergehenden
beschrieben, arbeiten die drei Bitmodelliereinheiten 1081 bis 1083 weitestgehend
unabhängig
voneinander und vor allem parallel zueinander in einem gemeinsamen
Scan mit einem leichten Versatz zueinander die Betragsbits der aktuellen Betragsbitebene
ab. Die Datenworte werden jeweils in einem eigenen der Zwischenspeicher 1101 bis 1103 der
Reihe nach abgelegt. Die Zwischenspeicher 1101 bis 1103 sind dabei so ausgeführt, dass
die Reihenfolge der jeweiligen abgelegten Datenworte beim Auslesen
erhalten bleibt. Dazu könnten
die Zwischenspeicher 1101 bis 1103 beispielsweise als FIFO-Speicher (First-In-Fist-Out)
ausgelegt sein. Andere Ausführungen
sind natürlich
ebenfalls möglich, wie
z. B. Implementierungen als Ringspeicher, aber auch direkt adressierbare
oder inhaltsadressierbare Speicher in dem Fall entsprechender Vorkehrungen zur
geeigneten Auslesereihenfolge, wobei dementsprechend die Speicher
nicht getrennt für
jede Modelliereinheit vorhanden sein müssen.After the description of the three Bitmodelliereinheiten 108 1 to 3 is briefly on again 3 With reference to the detailed description of the internal construction of the continuous flow separator 122 is continued according to an embodiment of the present invention. As described above, the three bit modeling units work 108 1 to 3 largely independent of each other and especially parallel to each other in a common scan with a slight offset to each other from the magnitude bits of the current amount bit plane. The data words are each in their own the cache 110 1 to 110 3 filed in sequence. The buffers 110 1 to 110 3 are executed so that the order of the respective stored data words is retained during reading. This could be the Zwi rule memory 110 1 to 110 3 For example, be designed as FIFO memory (First-In-Fist-Out). Other versions are of course also possible, such. B. implementations as a ring memory, but also directly addressable or content-addressable memory in the case of appropriate provisions for the appropriate read order, and accordingly the memory need not be available separately for each modeling unit.
Der
Durchlaufentscheider 122 dekodiert nun die Datenworte in
einer geeigneten Reihenfolge und wandelt sie um in entsprechende
Steuersignale für den
arithmetischen Kodierer 124. Insbesondere liest der Durchlaufentscheider 122 die
Datenworte zunächst
des ersten Durchlaufs aus, bis dieser beendet ist, was durch das
Pass-Ende-Bit angezeigt wird, daraufhin die Datenworte des zweiten
kodierten Durchlaufs aus dem Zwischenspeicher 1102 ,
bis dort das Pass-Ende-Bit gesetzt ist, und dann die Datenworte aus
dem Zwischenspeicher 1103 ... Dadurch
wird die Kodierreihenfolge eingehalten, wie sie eigentlich der Dekodierer
erwartet.The pass decision maker 122 Now decodes the data words in a suitable order and converts them into corresponding control signals for the arithmetic coder 124 , In particular, the pass decision maker reads 122 the data words first of the first pass until it is finished, which is indicated by the pass-end bit, then the data words of the second encoded pass from the buffer 110 2 until the pass-end bit is set, and then the data words from the cache 110 3 ... This respects the coding order as expected by the decoder.
7 zeigt
den internen Aufbau des Durchlaufentscheiders 122 gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung in einem mit dem arithmetischen Kodierer 124 auf
der einen und den Zwischenspeichern 1101 , 1102 und 1103 auf
der anderen Seite gekoppelten Zustand. Insbesondere umfasst der
Durchlaufentscheider 122 von 7 drei Datenwortdekodierer 6001 , 6002 und 6003 , die zwischen einem jeweiligen der
Zwischenspeicher 1101 bis 1103 auf der einen Seite und entsprechend
der Eingänge
eines Multiplexers 602 auf der anderen Seite geschaltet
sind. Ferner umfasst der Durchlaufentscheider 122 eine
Steuerung 604. 7 shows the internal structure of the flow separator 122 according to an embodiment of the present invention in one with the arithmetic coder 124 on the one and the latches 110 1 . 110 2 and 110 3 coupled state on the other side. In particular, the pass decision maker comprises 122 from 7 three data word decoders 600 1 . 600 2 and 600 3 between each one of the caches 110 1 to 110 3 on the one hand and according to the inputs of a multiplexer 602 switched on the other side. Furthermore, the pass decision maker includes 122 a controller 604 ,
Zwischen
jedem Paar von Zwischenspeichern 1101 bis 1103 und Datenwortdekodierer 6001 bis 6003 ist
eine jeweilige Datenwortleitung 6061 , 6062 bzw. 6063 vorgesehen,
um das nächste
Datenwort aus dem jeweiligen Zwischenspeicher zu lesen. Anforderungs-
und Bestätigungssignalleitungen 6081 bis 6082 und 6083 sind ebenfalls zwischen diesen Paaren
vorgesehen, um in einem Handshake-Verfahren die Datenworte auszulesen.
Ausgangsseitig weist jeder Datenwortdekodierer 6001 bis 6003 fünf Signalverbindungen 6101 , 6102 und 6103 zu entsprechenden Eingängen des
Multiplexers 602 auf. Die Signalverbindungen 6101 bis 6103 umfassen
jeweils eine Datenbit-, Kontextindex-, Gültigkeitsbit-, Bypass-Modus-Bit-
und Durchlauf-Ende-Bit-Verbindung. Lediglich die Bypass-Modus-Bit-Verbindung ist in
dem Fall des Datenwortdekodierers 6003 durch eine
Block-Ende-Bit-Verbindung ersetzt. Eingangsseitig ist die Steuerung 604 mit
jeweils dem Pass-Ende-Bit-Ausgängen der
Datenwortdekodierer 6001 bis 6003 sowie mit dem Block-Ende-Bit-Ausgang
des Datenwortdekodierers 6003 gekoppelt.
Die Steuerung umfasst ferner einen Ausgang, der mit einem Steuereingang
des Multiplexers 602 gekoppelt ist. Zudem tauschen die
Datenwortdekodierer 6001 bis 6003 Steuersignale mit der Steuerung 604 aus,
die beispielsweise ebenfalls der Realisierung eines Handshaking-Verfahrens dienen
können.
Ausgangsseitig umfasst der Multiplexer 602 sechs Signalverbindungen 612 zu
dem arithmetischen Kodierer 124, nämlich die vorerwähnten Signalverbindungen
für Datenbit,
Kontextindex, Gültigkeitsbit,
Bypass-Modus-Bit, Pass-Ende-Bit
und Block-Ende-Bit. Zudem ist der arithmetische Kodierer 124 über einen
Rückkopplungspfad 614 mit
der Steuerung 604 gekoppelt, um letzterer mitteilen zu
können,
ob er wieder aufnahmefähig
ist, um weitere Daten auf den Signalverbindungen 612. zu
verarbeiten.Between each pair of buffers 110 1 to 110 3 and data word decoder 600 1 to 600 3 is a respective data word line 606 1 . 606 2 respectively. 606 3 provided to read the next data word from the respective cache. Request and acknowledge signal lines 608 1 to 608 2 and 608 3 are also provided between these pairs to read the data words in a handshake procedure. On the output side, each data word decoder 600 1 to 600 3 five signal connections 610 1 . 610 2 and 610 3 to corresponding inputs of the multiplexer 602 on. The signal connections 610 1 to 610 3 each comprise a data bit, context index, valid bit, bypass mode bit, and pass end bit connection. Only the bypass mode bit connection is in the case of the data word decoder 600 3 replaced by a block end-bit connection. On the input side is the controller 604 each with the pass-end bit outputs of the data word decoders 600 1 to 600 3 and with the block end bit output of the data word decoder 600 3 coupled. The controller further includes an output connected to a control input of the multiplexer 602 is coupled. In addition, the data word decoders swap 600 1 to 600 3 Control signals with the controller 604 from, for example, can also serve the realization of a handshaking process. On the output side, the multiplexer includes 602 six signal connections 612 to the arithmetic coder 124 Namely, the above-mentioned signal connections for data bit, context index, validity bit, bypass mode bit, pass end bit and block end bit. In addition, the arithmetic coder 124 via a feedback path 614 with the controller 604 to inform the latter if it is resumable to receive further data on the signal links 612 , to process.
Während des
Betriebes lesen nun die Datenwortdekodierer 6001 bis 6003 nacheinander die Datenworte aus dem
jeweiligen der drei Zwischenspeicher 1101 bis 1103 aus und dekodieren die Datenworte.
Der Datenwortdekodierer 6001 kodiert
die 12-Bit-Datenworte jeweils zurück in einen oder zwei Datenbündel, um
sie in einem oder zwei aufeinander folgenden Takten an den Multiplexer 602 über die
Signalverbindungen 6101 weiterzuleiten,
nämlich
ein Signalbündel
mit dem Betragsdatenbit und dem zugehörigen Kontext-Index für die Koeffizientenbitmodellierung
sowie einem weiteren Signalbündel,
wenn das Betragsdatenbit gesetzt ist, mit einem Datenbit, das dann
das Vorzeichen anzeigt, und dem zugehörigen Kontext-Index. Ist das
Datenbit gültig,
setzt der Dekodierer 6001 auch
das Gültigkeitsbit.
Das Bypass-Modus-Bit und das Pass-Ende-Bit auf den Signalleitungen 6101 leitet der Dekodierer 6001 unmittelbar aus dem 12-Bit-Datenwort
her.During operation, the data word decoders now read 600 1 to 600 3 successively the data words from the respective one of the three latches 110 1 to 110 3 off and decode the data words. The data word decoder 600 1 each encodes the 12-bit data words back into one or two bursts of data to the multiplexer in one or two consecutive clocks 602 over the signal connections 610 1 forward, namely a burst having the magnitude data bit and the associated context index for coefficient bit modeling, and another burst if the magnitude data bit is set, with a data bit indicating the sign, and the associated context index. If the data bit is valid, the decoder continues 600 1 also the validity bit. The bypass mode bit and the pass end bit on the signal lines 610 1 conducts the decoder 600 1 directly from the 12-bit data word.
Der
Dekodierer 6002 verhält sich ähnlich. Auch
er nimmt eine Dekodierung der Datenworte von dem Zwischenspeicher 1102 zurück in Datenbits und Kontext-Indizes
für die
Koeffizienten-Modellierung von bis zu vier Koeffizienten vor, um
so jedes 14-Bit-Datenwort in Form von einem bis zu vier aufeinanderfolgenden
Signalbündeln
auf den Signalleitungen 6102 an
den Multiplexer 602 weiterzuleiten. Der Datenwortdekodierer 6003 verhält sich auf ähnliche Weise,
indem der selbe die ankommenden 15-Bit-Datenworte aus dem Zwischenspeicher 1103 zurück in Lauflängensymbole, Datenbits und
Kontext-Indizes für
die Koeffizienten-Modellierung sowie, wenn das Datenbit gesetzt
ist, die Vorzeichenbit-Modellierung umwandelt
und in einem bzw. zwei aufeinanderfolgenden Signalbündeln auf
den Signalleitungen 6103 an dem
Multiplexer 602 weiterleitet. Kommt allerdings die RL-Primitve zum Tragen,
was aus dem RL-Symbol hervorgeht, so erfolgt die Umwandlung durch
den Datenwortdekodierer 6003 in
ein – in
dem Fall der vollständigen
Lauflänge
bzw. keinem signifikant werdenden Betragsbit unter lauter Pass 3
Bits – bis
vier – in
dem Fall eines signifikant werdenden Betragsbits unter lauter Pass
3 Bits an der zweiten Position von Oben innerhalb des Tupels – Signalbündel. Die
Steuerung 604 wertet die Pass-Ende-Bits aus, um nacheinander
erstmal die Signalleitungen 6101 mit
den entsprechenden Signalleitungen der Signalleitungen 612 zu
verbinden, daraufhin die Signalleitungen 6102 und
daraufhin wiederum die Signalleitungen 6103 .
Auf diese Weise erhält
der arithmetische Kodierer 124 mit jedem Datenbit und Kontext-Index
auch eine Information darüber,
ob der Bypass-Modus für
den jeweiligen Koeffizienten zu verwenden ist, und ob der aktuelle
Kodierdurchlauf bzw. Codeblock zu Ende ist. In dem erstgenannten
Fall unterbricht der arithmetische Kodierer 124 nämlich seine
arithmetische Intervallteilung und fügt das entsprechende Datenbit
bei gesetztem Bypass-Modus-Bit im Klartext in den arithmetischen
Datenstrom ein, und in dem zweiten Fall setzt der arithmetische Kodierer
sein aktuelles Intervall wieder auf den vorbestimmten Wert zurück, ebenso
wie Wahrscheinlichkeitsschätzwerte
der einzelnen Kontexte in dem Fall, dass der arithmetische Kodierer
adaptiv ausgeführt
ist. Durch die oben beschriebenen Handshake-Verbindungen wird der Informationsfluss
innerhalb des Durchlaufentscheiders 122 in Abhängigkeit davon
gesteuert, ob die Zwischenspeicher 1101 bis 1103 Daten enthalten bzw. ob der arithmetische
Kodierer bereit ist, Daten anzunehmen.The decoder 600 2 behaves similarly. He also takes a decoding of the data words from the cache 110 2 back into data bits and context indices for coefficient modeling of up to four coefficients, so as to provide each 14-bit data word in the form of one to four consecutive bursts on the signal lines 610 2 to the multiplexer 602 forward. The data word decoder 600 3 Likewise, the same behaves the incoming 15-bit data words from the cache 110 3 back in run-length symbols, data bits, and context indices for coefficient modeling, and when the data bit is set, converts sign-bit modeling and in one or two consecutive bursts on the signal lines 610 3 at the multiplexer 602 forwards. However, if the RL primitive comes to fruition, as indicated by the RL symbol, then the conversion is done by the data word decoder 600 3 in a - in the case of the complete run length or no significant amount bit under pass 3 bits - to four - in the case of a significant Be lags bits below all pass 3 bits at the second position from the top within the tuple signal burst. The control 604 evaluates the pass-end bits to successively first the signal lines 610 1 with the corresponding signal lines of the signal lines 612 to connect, then the signal lines 610 2 and then turn the signal lines 610 3 , In this way, the arithmetic coder gets 124 with each data bit and context index also information on whether to use the bypass mode for the respective coefficient and whether the current coding pass or code block is over. In the former case, the arithmetic coder interrupts 124 namely, its arithmetic interval division, and inserts the corresponding data bit in clear text into the arithmetic data stream when the bypass mode bit is set, and in the second case the arithmetic encoder resets its current interval back to the predetermined value, as well as probability estimates of the individual contexts in FIG in the case that the arithmetic coder is adaptive. Through the handshake connections described above, the flow of information within the flow decision maker becomes 122 depending on whether the caches 110 1 to 110 3 Data or whether the arithmetic coder is ready to accept data.
Der
oben beschriebene Blockkodierer nach den 3–8 lässt sich
in Hardware realisieren und stellt in diesem Fall einen Hardware-basierten JPEG2000-Blockkodierer
dar, bei dem durch die oben veranschaulichte Parallelverarbeitung
und die Durchlaufzugehörigkeitsvorhersage
die Anzahl der benötigten
Prozessschritte bei der Kontext-Modellierung reduziert ist. Je nach
Kodierdurchlauf wurde entweder in einem Schritt ein Koeffizientenbit
gleichzeitig mit seinem Vorzeichenbit modelliert oder in einem Schritt
eine Spalte von bis zu vier Koeffizientenbits gleichzeitig modelliert
oder in einem Schritt eine Spalte von bis zu vier Koeffizientenbits
in einer sogenannten Lauflängenprimitive
modelliert, wobei im selben Schritt der signifikant werdende Koeffizient
zusammen mit seinem Vorzeichenbit modelliert wird.The above-described block coder after the 3 - 8th can be implemented in hardware and in this case represents a hardware-based JPEG2000 block coder in which the number of process steps required in the context modeling is reduced by the above-illustrated parallel processing and the pass prediction. Depending on the coding pass, either in one step a coefficient bit was modeled simultaneously with its sign bit or in one step a column of up to four coefficient bits is modeled simultaneously or in one step a column of up to four coefficient bits is modeled in a so-called run length primitive, in the same step significant coefficient is modeled along with its sign bit.
Des
Weiteren war eine Vorhersage vorgesehen, wie viele Koeffizienten
in einer Spalte in einem Schritt modelliert werden können. Diese
Maßnahmen bewirken
bei einem getakteten Prozess bei gleicher Taktfrequenz die Kodierung
eines Kodierdurchlaufes in weniger Zeit, da Wartezeiten auf Registersetzvorgänge entfallen,
bis zu vier Koeffizienten gleichzeitig modelliert werden können, bis
zu vier Modelliervorgänge
in einem Schritt erfolgen können,
bereits am Beginn des Modelliervorgangs einer Spalte bekannt ist,
wie viele Koeffizienten in einem Schritt modelliert werden können, wodurch
zeitaufwendige Prüffunktionen
während
der Modellierung entfallen.Of
Furthermore, a prediction was provided, how many coefficients
can be modeled in a column in one step. These
Effect measures
in a clocked process at the same clock frequency coding
a coding pass in less time, since waiting times for register set operations are eliminated,
up to four coefficients can be modeled simultaneously
to four modeling operations
can be done in one step,
already known at the beginning of the modeling process of a column
how many coefficients can be modeled in one step, thereby
time-consuming test functions
while
the modeling is omitted.
Zudem
ermöglichte
die Bitextraktion eine Reduktion der mitzuprotokollierenden und
zu aktualisierenden gesonderten Statusvariablen für jeden
Koeffizienten eines Codeblocks, womit einerseits die benötigte Speichergröße reduziert
werden kann und andererseits die Kodierung eines Kodierdurchlaufes beschleunigt
werden kann, da zusätzliche
Lese- und Schreibvorgänge
entfallen.moreover
enabled
the bite extraction a reduction of the to be logged and
to update separate status variables for each
Coefficients of a code block, which on the one hand reduces the required memory size
and on the other hand speeds up the coding of a coding cycle
can be, because additional
Read and write operations
omitted.
Ein
Vorteil des Blockkodierers von 3–8 besteht
insbesondere darin, dass je nach Kodierdurchlauf bis zu vier in
einem Streifen untereinander liegende Koeffizientenbits gleichzeitig modelliert
wurden, um Informationsworte zu generieren, die gegebenenfalls sogar
komprimierte Informationen für
bis zu vier Bit-Kontext-Paare beinhalten können. Diese Informationsworte
werden zwischengespeichert und durch geeignete Evaluierung in einem
Decoder dem nachgeschalteten arithmetischen Kodierer in einer geeigneten
Darstellung und in der korrekten Reihenfolge zugeführt auf
die Art und Weise, wie es im Vorhergehenden beschrieben wurde. Durch
obige Maßnahmen
wurde die Koeffizientenbitmodellierung so verbessert, dass sie eine
leichtere Hardwareimplementierung ermöglicht.An advantage of the block coder of 3 - 8th consists, in particular, in the fact that, depending on the encoding cycle, up to four coefficient bits lying in a strip underneath were modeled simultaneously in order to generate information words which may possibly even contain compressed information for up to four bit context pairs. These information words are latched and fed by appropriate evaluation in a decoder to the downstream arithmetic coder in a suitable representation and in the correct order in the manner described above. By the above measures, coefficient bit modeling has been improved to allow easier hardware implementation.
Wie
im Vorhergehenden beschrieben enthält der Bitextraktor von einer
Speichereinheit einen Vektor von Koeffizienten, um aus jedem Koeffizienten
k des Vektors für
die zu kodierende Bitebene m Informationen zu extrahieren, die das
Betragsbit km, das Vorzeichenbit kvz und Statusbits kst aufweisen,
wobei die Statusbits wiederum aus dem Bit bestehen, das anzeigt,
ob der Koeffizient in der Bitebene m schon signifikant ist, wozu
für alle
Betragsbits oberhalb der aktuellen Ebene überprüft wird, ob ein Bit gesetzt
ist. wobei, wenn mindestens ein Bit gesetzt ist, der Koeffizient
in dieser Bitebene signifikant ist, und dem Bit, das anzeigt, ob
das MR-Kodierschema zum ersten Mal oder bereits vorher schon Mal
auf diesen Koeffizienten angewendet worden ist, wozu für alle Betragsbits
oberhalb der aktuellen Bitebene überprüft wird,
ob eines dieser Bits gesetzt ist, wobei, wenn mindestens zwei Bits
gesetzt sind, dann das MR-Kodierschema
für den
Koeffizienten schon einmal angewendet worden ist. Durch diese Extraktion
kann wie im Vorhergehen erwähnt
auf gesonderte Statusvariablen für
jeden Koeffizienten eines Kodierblocks verzichtet werden, da diese
Informationen für
jeden Streifen aufs Neue bestimmt werden und nur für die Dauer
der Kodierung gehalten werden müssen,
wodurch einerseits die benötigte
Speichergröße reduziert und
andererseits die Kodierung des Kodierdurchlaufes beschleunigt werden
kann, da zusätzliche
Lese- und Schreibvorgänge
entfallen.As described above, the bite extractor of a memory unit contains a vector of coefficients to extract from each coefficient k of the vector for the bit plane m to be coded information comprising the magnitude bit k m , the sign bit k vz, and status bits k st Status bits in turn consist of the bit which indicates whether the coefficient in the bit plane m is already significant, for which it is checked for all magnitude bits above the current level whether a bit is set. wherein, if at least one bit is set, the coefficient in that bit-plane is significant, and the bit indicating whether the MR-coding scheme has been applied to that coefficient for the first time or already before, for which all magnitude bits above that current bit-plane is checked to see if one of these bits is set, and if at least two bits are set, then the MR-coding scheme for the coefficient has already been applied once. As mentioned above, this extraction eliminates the need for separate state variables for each coefficient of a coding block since this information must be redetermined for each strip and held only for the duration of the coding, thereby reducing the amount of memory required and the coding the coding cycle can be accelerated because additional read and write operations omitted.
Eine
Hardwareimplentierung gemäß den 3–8 lässt also
erwarten, dass in einem getakteten Prozess bei gleicher Taktfrequenz
die Kodierung eines Kodierdurchlaufes wesentlich schneller erfolgen
kann, da wie oben erwähnt
Wartezeiten auf Register-Setzvorgänge entfallen, bis zu vier
Koeffizienten gleichzeitig modelliert werden können, bis zu fünf Modelliervorgänge in einem
Schritt erfolgen können,
bereits am Beginn des Modelliervorganges einer Spalte bekannt ist,
wie viel Koeffizienten in einem Schritt modelliert werden können, wodurch
zeitaufwendige Prüffunktionen
während
der Modellierung entfallen, und zusätzliche Lese- und Schreibvorgänge für die Statusvariablen
entfallen. Diese Vorteile sind für
einen Komprimierer, wie er in 1 gezeigt ist,
und bei dem der Kodierer von 3 eingesetzt werden
kann, von hohem Wert. Denn in mehreren Untersuchungen wurde bereits
festgestellt, dass der Blockkodierer und vor allem die Koeffizientenbitmodellierung
die aufwendigste Operation innerhalb des JPEG2000-Kodierprozesses
darstellt. In dem bereits in der Beschreibungseinleitung der vorliegenden
Anmeldung genannten Artikel von Lian et al. wird beispielsweise
ein Untersuchungsergebnis vorgestellt, wonach fast 52% der Rechenleistung
eines Computers für
die Summe aller drei Kodierdurchläufe benötigt wird. Eine Beschleunigung
des Koeffizientenbitmodelliervorganges wirkt sich somit signifikant
für den
gesamten Kodierprozess aus. Bei Implementierungen, bei denen eine
höhere
Kodiergeschwindigkeit durch Mehrfachinstantiierung des Blockkodierers erreicht
wird, können
somit Resourcen eingespart werden, damit dem Ausführungsbeispiel
nach 3–8 weniger
Kodiereinheiten zur Erlangung der gleichen Kodiergeschwindigkeit
notwendig sind.A hardware implementation according to the 3 - 8th Thus, it can be expected that in a clocked process at the same clock frequency the coding of a coding cycle will be much faster can take place, since, as mentioned above, waiting times for register setting operations are omitted, up to four coefficients can be modeled simultaneously, up to five modeling operations can be done in one step, already known at the beginning of the modeling of a column, how many coefficients in a step modeled which eliminates time-consuming testing during modeling, and eliminates the need for additional read and write status variables. These benefits are for a compressor, as in 1 is shown, and in which the encoder of 3 can be used, of high value. For it has already been stated in several studies that the block coder and above all the coefficient bit modeling represent the most complex operation within the JPEG2000 coding process. In the already mentioned in the introduction to the present application by Lian et al. For example, we present a test result that requires nearly 52% of the computational power of a computer for the sum of all three encoding cycles. Acceleration of the coefficient bit modeling process thus significantly affects the entire coding process. In implementations in which a higher coding speed is achieved by multiple instantiation of the block coder, resources can thus be saved, thus according to the exemplary embodiment 3 - 8th less coding units are required to obtain the same coding speed.
Soeben
erwähnte
Implementierungen lassen sich beispielsweise auf FPGAs (Field Programmable Logic
Array = Vorortpro grammierbare Logik Arrays) aber auch als integrierte
Schaltung bzw. ASIC (ASIC = Application Specific Integrated Circuit
= anwendungsspezifische integrierte Schaltung) realisieren. Für ein FPGA
wurde bereits eine Hardwareimplementierung umgesetzt, wozu die entsprechende Funktionseinheiten
durch VHDL beschrieben und mit geeigneten Werkzeugen übersetzt
und für
die Zielplattform synthetisiert wurden.Just
mentioned
Implementations can be implemented, for example, on FPGAs (Field Programmable Logic
Array = local programmable logic arrays) but also as integrated
Circuit or ASIC (ASIC = Application Specific Integrated Circuit
= application-specific integrated circuit) realize. For an FPGA
A hardware implementation has already been implemented, including the corresponding functional units
described by VHDL and translated with appropriate tools
and for
the target platform was synthesized.
Verschiedene
Modifikationen können
an den Ausführungsbeispielen
nach 3–8 vorgenommen
werden. Beispielsweise kann das Schieberegister 106 anders
ausgeführt
sein. Insbesondere kann es beispielsweise mehr Schieberegisterränge aufweisen,
d. h. in 8 also nach links hin ausgeweitet
sein. Ferner kann der Versatz zwischen den aktuellen 4-er-Vektoren 292, 322 und 506 auch
größer sein
als die zwei Schieberegisterränge,
wie es in 8 gezeigt ist. Zudem ist es
möglich,
dass der Versatz variabel ist. Hierzu ist beispielsweise die Schieberegistereinheit
nicht einheitlich ausgeführt, wie
es in 8 gezeigt ist, sondern als Zwei Schieberegister,
eines für
die Bitmodelliereinheit 1081 und eine
weitere für
die Bitmodelliereinheiten 1082 und 1083 , wobei zwischen denselben ein FIFO-Speicher angeordnet
ist, um als variabler Puffer zwischen den Schieberegistern zu dienen.Various modifications may be made to the embodiments 3 - 8th be made. For example, the shift register 106 be executed differently. In particular, it may for example have more shift register ranks, ie in 8th so be widened to the left. Furthermore, the offset between the current 4's vectors 292 . 322 and 506 also be larger than the two shift register ranks, as in 8th is shown. In addition, it is possible that the offset is variable. For this purpose, for example, the shift register unit is not executed uniformly, as in 8th but as two shift registers, one for the bit modeling unit 108 1 and another for the bit-modeling units 108 2 and 3 in which a FIFO memory is arranged between them to serve as a variable buffer between the shift registers.
Im
Vorhergehenden wurde erwähnt,
dass die Vorzeichenbitvorkodiereinheiten auf Basis der ersten Steuerbits
feststellen, ob die jeweiligen Vorzeichenbits der Nachbarkoeffizienten
dekodiererseitig bekannt sind oder nicht. Im Normalfall ist dann
das erste Steuerbit des Transformationskoeffizienten, das oben an
dem betreffenden aktuellen Koeffizienten angrenzt, als über den
Demultiplexer 214 bzw. 414 aktualisiert anzusehen.
Sollte das jedoch aufgrund von Signallaufzeitüberlegungen dazu führen, dass die
Verarbeitungszyklen sich verzögern,
so wäre
es ebenfalls möglich,
dass die Vorzeichenbitvorkodiereinheiten ein noch nicht aktualisiertes
erstes Steuerbit des oberen nächsten
Nachbar koeffizienten mittels des entsprechenden Betragsbits dieses
Nachbarkoeffizienten virtuell aktualisieren.In the foregoing, it has been mentioned that the sign bit pre-coding units based on the first control bits determine whether or not the respective sign bits of the neighboring coefficients are known on the decoder side. Normally, then, the first control bit of the transform coefficient adjacent to the top of the current coefficient concerned is than via the demultiplexer 214 respectively. 414 to be updated. However, should that, due to signal propagation delays, cause the processing cycles to be delayed, it would also be possible for the sign bit precompression units to virtually update a not yet updated first control bit of the upper nearest neighbor coefficient using the corresponding magnitude bit of that neighboring coefficient.
Im
Vorhergehenden wurden auch zur Vereinfachung der Darstellung Randproblematiken
beispielsweise am Rand der Bitebenen, am Ende und am Anfang eines
Streifens usw. nicht weiter vertieft, um die vorhergehende Beschreibung
nicht unnötig zu
verkomplizieren. Nicht vorhandene oder dem Dekodierer nicht zur
Verfügung
stehenden Daten können
vereinbarungsgemäß auf eine
vorzugsweise decoderseitig bekannte Weise auf vorbestimmte Werte eingestellt
werden. Es können
zudem bei dem Blockkodierer nach 3 bei der
Kodierung der Betragsbits der Streifen die jeweils angrenzenden
Zeilen der angrenzenden Streifen unberücksichtigt bleiben. In diesem
Fall wäre
dann beispielsweise auch das Schieberegister kleiner, um in jedem
der Teile 1061 bis 1063 lediglich die vier Zeilen der Streifen
zu umfassen.In the foregoing, for the sake of simplicity of illustration, marginal problems such as at the edge of bit planes, at the end and at the beginning of a stripe, etc. have not been further deepened so as not to unduly complicate the above description. Unavailable data or data that is not available to the decoder can be set according to agreement to predetermined values in a manner preferably known on the decoder side. It may also be in the block encoder after 3 when encoding the magnitude bits of the stripes, the respective adjacent rows of the adjacent stripes are disregarded. In that case, for example, the shift register would also be smaller to fit in each of the parts 106 1 to 106 3 just to cover the four lines of the strips.
9 zeigt
ein etwas allgemeineres Beispiel eines Blockkodierers. Der Blockkodierer
von 9, der allgemein mit 700 angezeigt ist,
umfasst eine Kodiereinrichtung 702 und eine Vorhersageeinrichtung 704.
Beide Einrichtungen 702 und 704 weisen Zugriff auf
den zu kodierenden Transformationskoeffizientenblock 706 auf.
Dabei ist die Kodiereinrichtung 702 wie die im Vorhergehenden
erläuterten
Bitmodelliereinheiten in deren Zusammenspiel mit der Schieberegistereinheit 106,
dem Bitextraktor 104 sowie den sich anschließenden arithmetischen
Kodiereinrichtungen 112 dazu ausgelegt, die Transformationskoeffizienten 710,
die in Spalten und Zeilen angeordnet sind, in Tupeln 712 zu
je vier hier exemplarisch ebenfalls in Spaltenrichtung benachbarten
Transformationskoeffizienten 710 zu durchlaufen. Insbesondere ist
die Kodiereinrichtung 702 dazu ausgelegt, die mehreren
Betragsbits, durch die die Transformationskoeffizienten 710 dargestellt
sind, um mehrere Bitebenen zu definieren, bitebenenweise zu durchlaufen,
um insbesondere in jeder Bitebene die Betragsbits in Tupeln 702 zu
durchlaufen. Dabei nimmt die Kodiereinrichtung 702 eine
Vorkodierung vorbe stimmter der Betragsbits vor, wie z. B. lediglich
der Betragsbits von signifikanten Transformationskoeffizienten,
wie es im Zusammenhang mit der Bitmodelliereinheit 1082 der Fall war, oder lediglich der Betragsbits
von insignifikanten Transformationskoeffizienten, wie es in dem
Zusammenhang mit den Bitmodelliereinheiten 1081 und 1083 der Fall war. Die vorbestimmten Betragsbits
kodiert die Kodiereinrichtung 702 in einen kodierten Datenstrom 714,
beispielsweise derart, dass die Reihenfolge, in der die vorbestimmten
Betragsbits in den kodierten Datenstrom 714 kodiert sind,
der Reihenfolge des Durchlaufs der Betragskoeffizienten in den Tupeln 712 entspricht, mit
der internen Betragsbitreihenfolge innerhalb jedes Tupels 712 von
beispielsweise oben nach unten, wie es auch bei den vorhergehenden
Ausführungsbeispielen
exemplarisch der Fall war. Die Kodierung kann, muss aber nicht,
eine arithmetische Kodierung sein, wie es im Vorhergehenden der
Fall war. Eine andere Entropiekodierung ist allerdings ebenfalls möglich, wie
z. B. eine Huffman-Kodierung, oder aber eine Lauflängenkodierung
usw. 9 shows a more general example of a block encoder. The block coder of 9 who is generally with 700 is displayed, includes an encoder 702 and a predictor 704 , Both facilities 702 and 704 have access to the transform coefficient block to be coded 706 on. In this case, the coding device 702 like the bit modeling units discussed above in their interaction with the shift register unit 106 , the Bitextraktor 104 and the subsequent arithmetic coding 112 designed to the transformation coefficients 710 arranged in columns and rows, in tuples 712 in each case four transformation coefficients, also adjacent in the column direction, by way of example here 710 to go through. In particular, the coding device 702 adapted to the plurality of magnitude bits by which the transform coefficients 710 are shown to define several bit planes, to pass through in bit-plane fashion, in particular in each bit plane, the magnitude bits in tuples 702 to go through. It takes the coding 702 a precoding vorbe agreed before the amount bits before, such. For example, only the magnitude bits of significant transform coefficients, as associated with the bit modeling unit 108 2 was the case, or just the magnitude bits of insignificant transform coefficients, as in the context of the bit-modeling units 108 1 and 3 the case was. The predetermined magnitude bits encode the encoder 702 in a coded data stream 714 , for example, such that the order in which the predetermined magnitude bits in the encoded data stream 714 the order of passage of the amount coefficients in the tuples 712 corresponds to the internal magnitude bit order within each tuple 712 from top to bottom, for example, as was the case with the previous embodiments. The coding can, but need not, be an arithmetic coding, as was the case previously. However, another entropy coding is also possible, such. As a Huffman coding, or a run-length coding, etc.
Die
Vorhersageeinrichtung 704 ist nun dazu ausgelegt, vorherzusagen,
ob und, wenn ja, welcher oder welche der Betragsbits unter den benachbarten Betragsbits
der vorbestimmten Betragsbitebene eines gemäß einer Reihenfolge des Durchlaufens
frühestens
als nächstes
an der Reihe seienden Tupels zu den vorbestimmten Betragsbits gehört. Diese
Vorhersageergebnis 716 verwendet nun die Kodiereinrichtung 702,
um die Kodierung der vorbestimmten Betragsbits in den kodierten
Datenstrom in Abhängigkeit
von der Vorhersage vorzunehmen.The predictor 704 is now adapted to predict whether and, if so, which one or more of the magnitude bits among the adjacent magnitude bits of the predetermined magnitude bit-plane of a tuple next in line according to an order of traversal belongs to the predetermined magnitude bits. This forecast result 716 now uses the encoder 702 to perform the coding of the predetermined magnitude bits in the coded data stream in dependence on the prediction.
Dabei
kann insbesondere die Kodiereinrichtung 702 beispielsweise ähnlich der
Betragsbitvorkodiereinheit 202 aus 4 eine Einheit
aufweisen, z. B. eine hartverdrahtete, mittels der die Kodiereinrichtung 702 in
der Lage ist, sequentiell in der vorerwähnten festgelegten Reihenfolge
ausgewählte
der Betragsbits innerhalb des aktuellen Tupels 712 zu kodieren.
Da die Vorhersageeinrichtung 704 ihr Vorhersageergebnis 716 bereits
vorab für
ein Tupel liefert, bevor dieses Tupel in einem Verarbeitungszyklus durch
die Kodiereinrichtung 702 aktuell zu verarbeiten ist, kann
die Kodiereinrichtung 702 ihre sequentiell arbeitende Kodierschaltung
nacheinander ohne Taktverzögerung
den bzw. die vorbestimmten Betragsbits innerhalb des aktuellen Tupels 712 verarbeiten
lassen. So war das auch bei den Bitmodelliereinheiten 1081 und 1083 der
Fall.In particular, the coding device 702 for example, similar to the magnitude bit pre-encoding unit 202 out 4 have a unit, for. B. a hardwired, by means of the encoder 702 is capable of sequentially selecting, in the aforesaid predetermined order, the magnitude bits within the current tuple 712 to code. As the predicting device 704 their prediction result 716 already supplies in advance for a tuple, before this tuple in a processing cycle by the encoder 702 currently being processed, the encoder can 702 its sequentially operating coding circuit successively without clock delay the or the predetermined magnitude bits within the current tuple 712 process. So it was with the bit modeling units 108 1 and 3 the case.
Andererseits
kann die Kodiereinrichtung 702 ähnlich dem Betragsbitvorkodiereinheiten 3021–4 aus 5 mehrere
parallel arbeitende Kodiereinheiten aufweisen, so dass die Kodiereinrichtung 702 in
der Lage ist, in einem Verarbeitungszyklus parallel die mehreren
Betragsbits in dem aktuellen Tupel 712 zu verarbeiten.
In diesem Fall ist die Kodiereinrichtung 702 aber aufgrund
des Vorhersageergebnisses 716 in der Lage, noch in diesem
Verarbeitungstakt bzw. – Zyklus
zu verhindern, dass alle Betragsbits des aktuellen Tupels in der
geforderten Reihenfolge in den kodierten Datenstrom 714 gelangen,
sondern vielmehr ist die Kodiereinrichtung 702 bei der
parallelen Verarbeitung dann in der Lage, die Zugehörigkeit
der einzelnen Betragsbits des aktuellen Tupels derart zu berücksichtigen,
dass nur die vorbestimmten Betragsbits in den kodierten Datenstrom
kodiert werden, wozu die Kodiereinrichtung 702 gemäß dem vorhergehenden
Ausführungsbeispiel
der Bitmodelliereinheit 1082 als
Vorkodierer einem Zwischenspeicher vorgeschaltet sein kann, in dem
die einzelnen Kodiereinheiten bzw. Betragsbitvorkodiereinheiten
ihre Teildatenworte schreiben, die zusammen das Datenwort des entsprechenden
Vorkodierers bilden, und aus welchen Teildatenworten die sich anschließende Entropiekodiereinrichtung
anhand der einzelnen Teildatenworte einzeln für sich erkennt, ob das jeweilige Teildatenwort
zu einem vorbestimmten Betragsbit gehört.On the other hand, the encoder 702 similar to the magnitude bit pre-encoding units 302 1-4 out 5 Have a plurality of coding units operating in parallel, so that the coding device 702 is capable, in a processing cycle, of paralleling the multiple magnitude bits in the current tuple 712 to process. In this case, the encoder is 702 but due to the prediction result 716 able to still in this processing cycle or cycle to prevent all magnitude bits of the current tuple in the required order in the encoded data stream 714 but rather is the encoder 702 in the parallel processing then able to take into account the affiliation of the individual magnitude bits of the current tuple such that only the predetermined magnitude bits are encoded in the encoded data stream, including the encoder 702 according to the preceding embodiment of the bit modeling unit 108 2 as a precoder can be preceded by a buffer in which write the individual coding or magnitude bit precoding their partial data words, which together form the data word of the corresponding precoder, and from which partial data words the subsequent Entropiekodiereinrichtung recognizes individually based on the individual partial data words, whether the respective partial data word belongs to a predetermined amount bit.
Natürlich ist
die Größe des Tupels
nicht auf vier Betragsbits beschränkt und auch nicht auf eine Spaltenanordnung der
in dem Tupel 712 benachbarten Betragsbits. Obwohl bei dem
Ausführungsbeispiel
von 9 lediglich vorbestimmte der Betragsbits von der
Kodiereinrichtung 702 erfasst werden und somit eine verlustbehaftete
Kompression der Transformationskoeffizientendaten vorgenommen wird,
kann analog zu dem vorhergehenden Ausführungsbeispiel der Kodiereinrichtung 702 eine
weitere Kodiereinrichtung parallel geschaltet sein, um weitere andere
vorbestimmte Betragsbits zu kodieren. Sollte dann beispielsweise
durch einen Standard oder dergleichen festgelegt sein, dass in den
kodierten Datenstrom 714 zunächst die vorbestimmten Betragsbits
der anderen Kodiereinrichtung in den Datenstrom 414 zu
kodieren sind und dann erst die vorbestimmten Betragsbits der Kodiereinrichtung 702, kann
sich im Anschluss an die beiden Kodiereinrichtungen ein Entscheider
befinden, der die entsprechende Einbindung in den Datenstrom 714 vornimmt. Zudem
kann der Kodiereinrichtung 702 ähnlich dem vorhergehenden Ausführungsbeispiel
zusätzlich oder
alternativ ein Bitextraktor und eine Schieberegistereinheit vorgeschaltet
sein, so dass die Kodiereinrichtung 702 auf der Basis der
in dieser Schieberegistereinheit enthaltenen Informationen arbeiten kann,
wie z. B. zusammen mit der vorgeschriebenen parallel geschalteten
Kodiereinrichtung.Of course, the size of the tuple is not limited to four magnitude bits nor to a columnar array in the tuple 712 adjacent amount bits. Although in the embodiment of 9 only predetermined ones of the magnitude bits from the encoder 702 can be detected and thus a lossy compression of the transformation coefficient data is made, analogous to the previous embodiment of the encoder 702 a further coding means may be connected in parallel to code further other predetermined magnitude bits. Should then be determined for example by a standard or the like, that in the coded data stream 714 First, the predetermined magnitude bits of the other encoder in the data stream 414 are to be coded and then only the predetermined magnitude bits of the encoder 702 , After the two coding devices, there may be a decision maker who has the appropriate integration into the data stream 714 performs. In addition, the encoder 702 Similarly to the previous embodiment, additionally or alternatively a bit extractor and a shift register unit may be connected upstream, so that the coding device 702 based on the information contained in this shift register unit can work, such. B. together with the prescribed parallel encoder.
Die
Vorhersageeinrichtung 704 nimmt ihre Vorhersage beispielsweise
auf der Basis von Betragsbits vor, die in Richtung des Durchlaufens
der Betragsbits in Tupeln frühestens
aktuell an der Reihe sind. Auf diese Weise ist die Vorhersageeinrichtung 704 in
der Lage, zu berücksichtigen,
dass Signifikanzen, die für
die Vorhersage der Vorhersageeinrichtung 704 mit entscheidend
sind, sich beispielsweise aufgrund der Kodierung durch die Kodiereinrichtung 702 noch ändern kann.
In dem Fall also, dass wie im Vorhergehenden die Bitmodelliereinheiten
die Kodiereinrichtung 702 ausgebildet ist, um in dem Fall, dass
sie ein vorbestimmtes Betragsbit in dem aktuellen Tupel kodiert,
das vorher einen nicht signifikanten Transformationskoeffizienten
darstellte, in der aktuellen Betragsbitebene allerdings 1 ist, wo durch
dieser Transformationskoeffizient nunmehr in der aktuellen Betragsbitebene
aber signifikant wird, die Signifikanz zu aktualisieren, kann die
Vorhersageeinrichtung 704 durch Auswerten entsprechender
Betragsbits noch nicht stattgefundene Fälle des Signifikanzwerdens von
Transformationskoeffizienten, die für die Vorhersage aber relevant
sind, durch Modifizieren der aktuellen Signifikanzen berücksichtigen.
Auf ähnliche Weise
kann die Vorhersageeinrichtung 704 durch Auswertung der
entsprechenden Betragsbits gegebenenfalls berücksichtigen, dass parallel
geschaltete Kodiereinrichtungen noch Signifikanz-Werde-Ereignisse
auslösen,
die das Vorhersageergebnis der Kodiereinrichtung 702 beeinflussen
könnte.The predictor 704 makes its prediction, for example, on the basis of magnitude bits which are at the earliest time in the direction of passing the magnitude bits in tuples at the earliest. In this way, the predictor 704 able to take into account that Signifikan zen for predicting the predictor 704 are decisive, for example, due to the coding by the encoder 702 can still change. In the case that, as above, the bit-modeling units encode 702 is designed to be one in the current magnitude bit-plane in the case that it encodes a predetermined magnitude bit in the current tuple that previously represented a non-significant transform coefficient, but becomes significant by this transform coefficient now in the current magnitude bit-plane to update, the predictor 704 by evaluating corresponding magnitude bits, take account of cases of significance of transformation coefficients that are relevant to the prediction by modifying the current significances. Similarly, the predictor 704 optionally take into account, by evaluating the corresponding magnitude bits, that coding devices connected in parallel still trigger significance-becoming events which are the prediction result of the coding device 702 could influence.
Abhängig von
den Gegebenheiten können beschriebene
Abläufe
zur Transformationskoeffizientenblockkodierung nicht nur in Hardware,
sondern natürlich
auch in Software implementiert werden. Die Implementation kann auf
einem digitalen Speichermedium, insbesondere einer Diskette, einer
CD oder einer DVD mit elektronisch auslesbaren Steuersignalen erfolgen,
die so mit einem programmierbaren Computersystem zusammenwirken
können,
dass das entsprechende Verfahren ausgeführt wird. Allgemein besteht
die Erfindung somit auch in einem Computer-Programm-Produkt mit
einem auf einem maschinenlesbaren Träger gespeicherten Programmcode
zur Durchführung
eines obiger Verfahren, wenn das Computer-Programm-Produkt auf einem
Rechner abläuft.
Mit anderen Worten ausgedrückt
kann die Erfindung somit als ein Computer-Programm mit einem Programmcode
zur Durchführung
eines obiger Verfahren realisiert werden, wenn das Computer-Programm
auf einem Computer abläuft.
Hierbei ist unter einem Computer jegliche Form eines Prozessors
zu verstehen, der ausgelegt ist, um ein Programm oder einen Programmcode
auszuführen,
also insbesondere auch Mikrocontroller oder dergleichen.Depending on
The circumstances can be described
procedures
for transform coefficient block coding not only in hardware,
but of course
also be implemented in software. The implementation can be on
a digital storage medium, in particular a floppy disk, a
CD or a DVD with electronically readable control signals,
which interact with a programmable computer system
can,
that the corresponding procedure is carried out. Generally exists
the invention thus also in a computer program product with
a program code stored on a machine-readable medium
to carry out
an above procedure when the computer program product on a
Calculator expires.
In other words
Thus, the invention can be thought of as a computer program with a program code
to carry out
an above procedure can be realized when the computer program
runs on a computer.
Here, under a computer is any form of processor
to understand that is designed to be a program or a program code
perform,
So in particular also microcontroller or the like.