DE69908433T2 - METHOD FOR REDUCING MEMORY IN AN AC-3 AUDIO ENCODER - Google Patents

METHOD FOR REDUCING MEMORY IN AN AC-3 AUDIO ENCODER Download PDF

Info

Publication number
DE69908433T2
DE69908433T2 DE69908433T DE69908433T DE69908433T2 DE 69908433 T2 DE69908433 T2 DE 69908433T2 DE 69908433 T DE69908433 T DE 69908433T DE 69908433 T DE69908433 T DE 69908433T DE 69908433 T2 DE69908433 T2 DE 69908433T2
Authority
DE
Germany
Prior art keywords
channel
psd
bit allocation
bit
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69908433T
Other languages
German (de)
Other versions
DE69908433D1 (en
Inventor
Mohammed Javed Absar
Sapna George
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
STMicroelectronics Asia Pacific Pte Ltd
Original Assignee
STMicroelectronics Asia Pacific Pte Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by STMicroelectronics Asia Pacific Pte Ltd filed Critical STMicroelectronics Asia Pacific Pte Ltd
Publication of DE69908433D1 publication Critical patent/DE69908433D1/en
Application granted granted Critical
Publication of DE69908433T2 publication Critical patent/DE69908433T2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/16Vocoder architecture

Landscapes

  • Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

Gebiet der ErfindungField of the Invention

Die vorliegende Erfindung bezieht sich auf ein Verfahren zum Vermindern der Speicheranforderungen in einem Codierer, und zwar insbesondere, aber nicht ausschließlich in einem AC-3-Codierer.The present invention relates out a method for reducing storage requirements in an encoder, specifically but not exclusively in an AC-3 encoder.

Hintergrund der Erfindungbackground the invention

AC-3 ist ein transformationsbasierter Audio-Codier-Algorithmus, welcher entworfen ist zum Vorsehen einer Datenratenverminderung für Breitbandsignale, während die hohe Qualität des ursprünglichen Inhalts beibehalten wird. In der Unterhaltungselektronikindustrie kann ein AC-3-Soundtrack bzw. eine AC-3-Tonspur gefunden werden auf der neuesten Generation von Laserdisks oder als die Standard-Tonspur auf DVDs, AC-3 ist das Standard-Audioformat für hochauflösendes Fernsehen (HDTV) und wird für digitale Kabel- und Satellitenübertragungen verwendet.AC-3 is a transformation-based Audio coding algorithm designed to provide one Data rate reduction for Wideband signals while the high quality of the original Content is retained. In the consumer electronics industry an AC-3 soundtrack or an AC-3 sound track can be found on the latest generation of laser discs or as the standard soundtrack on DVDs, AC-3 is the standard audio format for high definition television (HDTV) and is used for digital cable and satellite broadcasts used.

Für all diese Verbraucheranwendungen muss der AC-3-Algorithmus auf die Firmware von DSPs abgebildet werden, welche ein Teil eines größeren System wären, das Datenformatierung, Synchronisation, Fehlerüberprüfung und Korrektur und möglicherweise auch Videocodierung durchführt. Der Verbrauchermarkt erfordert immer ein billiges Produkt, jedoch mit hoher Qualität, und dies bedeutet, dass die Kostenfrage von Anfang an angegangen werden muss. Chipkosten sind vorgegeben durch Parameter wie beispielsweise Chipfläche, Speicher und neuerdings auch geringe Leistungsaufnahme.For all of these consumer applications must be based on the AC-3 algorithm Firmware are mapped by DSPs, which are part of a larger system would, that data formatting, synchronization, error checking and correction and possibly also performs video coding. The consumer market always requires a cheap product, however with high quality, and this means that the cost issue was tackled from the start must become. Chip costs are determined by parameters such as, for example Chip area, Storage and recently also low power consumption.

Verminderung von Speicheranforderungen für einen komplexen Algorithmus, wie beispielsweise ein AC-3-Codierer, bedeutet, dass der Algorithmus gründlich analysiert werden muss und restrukturiert werden muss, so dass die Codierqualität erhalten bleibt, aber die Menge an Speicherplatz vermindert wird. U.S. 5,687,282 offenbart ein Verfahren zum Vermindern der Speicheranforderungen für einen Codierer, und zwar durch aufeinanderfolgendes Überschreiben verschiedener Funktionen, die zum Codieren verwendet werden. Die vorliegende Erfindung strebt danach, ein Verfahren vorzusehen, insbesondere für einen AC-3-Codierer, welches die Speicheranforderungen weiter vermindert.Reduce storage requirements for one complex algorithm, such as an AC-3 encoder, means that the algorithm is thorough must be analyzed and restructured so that the coding quality is retained, but the amount of storage space is reduced. U.S. 5,687,282 discloses a method for reducing storage requirements for one Encoder, by successively overwriting different ones Functions used for coding. The present invention strives to provide a procedure, especially for one AC-3 encoder, which further reduces memory requirements.

Zusammenfassung der ErfindungSummary the invention

Gemäß der Erfindung ist ein Verfahren vorgesehen zur Reduzierung von Speicheranforderungen für einen Encoder, der die Funktion der Bitzuweisung für Quantisieren von Frequenzkoeffizienten eines Eingabesignals aufweist, wobei das Verfahren Folgendes aufweist:
Berechnen einer Leistungsspektrumdichte (PSD);
Integrieren der PSD über eine Vielzahl von Frequenzbändern zum Bilden einer Band-PSD;
Berechnen einer Erregungsfunktion zum Anlegen einer Prototyp-Maskierungskurve an die Band-PSD;
Erzeugen einer Maskierungskurve eines ersten Schritts (FSMC = First Step Masking Curve) eines Rauschpegelschwellenwerts aus der Erregungsfunktion;
Berechnen einer Maskierungskurve eines zweiten Schritts (SSMC = Second Step Masking Curve) durch Inkrementieren der FSMC gemäß einer ausgewählten Signal-zu-Rausch-Variablen (snroffst), wobei
die Erregungsfunktion nach dem Berechnen in den Speicher geschrieben wird anstelle der Band-PSD und nachfolgend durch die FSMC überschrieben wird, und wobei die SSMC in einem temporären Speicher gespeichert wird und für jeden Datenblock, der durch den Codierer verarbeitet wird, neu berechnet wird, dadurch gekennzeichnet, dass:
die Frequenzkoeffizienten von zwei gekoppelten Eingangskanälen in einem Kopplungskanal kombiniert werden, wobei das Verfahren das Abbilden von Kopplungskanaldaten in den Speicher aufweist, der für einen der gekoppelten Kanäle reserviert ist.
According to the invention, a method is provided for reducing memory requirements for an encoder which has the function of bit allocation for quantizing frequency coefficients of an input signal, the method having the following:
Calculating a power spectrum density (PSD);
Integrating the PSD over a plurality of frequency bands to form a band PSD;
Computing an excitation function to apply a prototype masking curve to the band PSD;
Generating a first step masking curve (FSMC) of a noise level threshold from the excitation function;
Calculate a second step masking curve (SSMC) by incrementing the FSMC according to a selected signal-to-noise variable (snroffst), where
the excitation function after computation is written in memory instead of the band PSD and subsequently overwritten by the FSMC, and wherein the SSMC is stored in temporary memory and recalculated for each block of data processed by the encoder marked that:
the frequency coefficients of two coupled input channels are combined in one coupling channel, the method comprising mapping coupling channel data into the memory which is reserved for one of the coupled channels.

Vorzugsweise umfasst das Verfahren das Zuweisen von Bits für das Codieren von Mantisse-Werten der Frequenzkoeffizienten, wobei die Bitzuweisung auf der Basis der PSD, der SSMC und der Variablen bestimmt wird, wobei Bitzuweisungsaddressverweise bzw. -pointer für nur einen aktuellen Datenblock erzeugt und gespeichert werden.The method preferably comprises assigning bits for encoding frequency coefficient mantissa values, where bit allocation based on PSD, SSMC and variables is determined, with bit allocation address pointers for only a current data block is generated and saved.

Vorzugsweise folgt der Bitzuweisung eine Quantisierung der Mantisse-Werte gemäß den Bitzuweisungspointern und Packen der quantisierten Werte in einen Datenrahmen, wobei die quantisierten Werte im Speicher anstelle der ursprünglichen nicht-quantisierten Koeffizienten gespeichert werden.The bit allocation preferably follows a quantization of the mantissa values according to the bit allocation pointers and packing the quantized values into a data frame, the quantized values in memory instead of the original ones non-quantized coefficients can be saved.

Vorzugsweise werden die Frequenzkoeffizienten anfänglich in Exponent- und Mantisse-Komponenten getrennt, und die Exponent-Komponenten werden mit der PSD überschrieben.The frequency coefficients are preferred initially separated into exponent and mantissa components, and the exponent components are overwritten with the PSD.

Ferner wird Information, die während des Codierens überflüssig bzw. redundant wurde in der folgenden genauen Beschreibung als geeignet zum Überschreiben identifiziert, um die Speicheranforderungen für den AC-3-Codierer weiter zu vermindern.Furthermore, information that is collected during the Coding unnecessary or redundancy became suitable in the following detailed description to overwrite identified to further reduce the memory requirements for the AC-3 encoder.

Kurz Beschreibung der ZeichnungenBrief description of the drawings

Die Erfindung wird vollständiger beschrieben, und zwar lediglich anhand eines nicht-beschränkenden Beispiels, mit Bezug auf die beigefügten Zeichnungen, in denen:The invention is more fully described and only by way of a non-limiting example, with reference on the attached Drawings in which:

1 ein Codieren-System-Diagramm ist; 1 is a coding system diagram;

2 ein Speicherzuweisungsschema darstellt; 2 represents a memory allocation scheme;

3 ein Frequenzkoeffizientenübertragungsverfahren zeigt; 3 shows a frequency coefficient transmission method;

4 einen Kopplungsberechnung zeigt unter Verwendung eines Festkommaverfahrens; 4 shows a coupling calculation using a fixed point method;

5 einen Bitzuweisungsalgorithmus zeigt; und 5 shows a bit allocation algorithm; and

6 eine Quantisierung von Mantissen zeigt. 6 shows a quantization of mantissas.

Genaue Beschreibung eines bevorzugten AusführungsbeispielsPrecise description of a preferred embodiment

Für die nachfolgende Implementierung eines AC-3-Codierers auf einem Festkomma-DSP müssen die Wortlängenanforderungen jedes verarbeiteten Blocks bestimmt werden, wo Festkomma-Arithmetik verwendet wird.For the subsequent implementation of an AC-3 encoder on one Fixed point DSP must the word length requirements each processed block is determined where fixed point arithmetic is used.

Schließlich wird das Thema eines Speicherzuweisungsschemas im Codierer angesprochen, welcher der Gegenstand der vorliegenden Erfindung ist. Basierend auf der Erfahrung der Algorithmusentwicklung und der Analyse/ Studie der Qualitätsanforderungen wird eine Lösung mit wenig Speicher für einen AC-3-Codierer beschrieben, der eine Speicheroptimierung ohne Qualitätskompromisse durchführt.Finally, the topic becomes one Memory allocation schemes addressed in the encoder, which of the The subject of the present invention is. Based on experience algorithm development and analysis / study of quality requirements will be a solution with little memory for described an AC-3 encoder, which memory optimization without quality compromises performs.

A. SystemüberblickA. System overview

Ähnlich wie die AC-2-Einzelkanalcodiertechnologie, aus der es abgeleitet ist, ist AC-3 grundsätzlich ein adaptiver, transformationsbasierter Codierer unter Verwendung einer frequenz-linearen, kritisch gesampelten Filterreihe basierend auf der Princen-Bradley-Zeitdomänen-Alias-Auslöschungs-Technik (TDAC-Technik = Time-Domain-Aliasing-Cancellation-Technik). Das AC-3-Systemdiagramm ist in 1 gezeigt.Similar to the AC-2 single-channel coding technology from which it is derived, AC-3 is basically an adaptive, transformation-based encoder using a frequency-linear, critically sampled filter series based on the Princen-Bradley time domain alias cancellation technique ( TDAC technique = time domain aliasing cancellation technique). The AC-3 system diagram is in 1 shown.

A.1 EingabeformatA.1 Input format

AC-3 ist ein rahmenbasierter Codierer. Jeder Rahmen enthält Information äquivalent zu 256 × 6 PCM (pulscodemodulierten) Samples pro Kanal. Zum einfacheren Codieren ist der Rahmen unterteilt in sechs Audioblocks, wobei jeder Block daher Information von 256 Samples pro Kanal enthält.AC-3 is a frame-based encoder. Each frame contains Equivalent information to 256 × 6 PCM (pulse code modulated) samples per channel. For easier coding The frame is divided into six audio blocks, with each block therefore contains information of 256 samples per channel.

A.2 TransientendetektionA.2 Transient detection

Transienten bzw. Übergangszustände werden detektiert in den Kanälen mit voller Bandbreite, um zu entscheiden, wann auf Audioblock mit kurzer Länge umgeschaltet wird zum Beschränken von Quantisierungsrauschen, das mit der Transienten assoziiert ist, und zwar innerhalb eines kleinen zeitlichen Bereichs um die Transiente herum. Hochpass-gefilterte Versionen des Signals werden untersucht hinsichtlich eines Energieanstiegs von einem Sub-Block-Zeitsegment zum Nächsten. Sub-Blocks werden mit unterschiedlichen Zeitskalen untersucht. Wenn eine Transiente in der zweiten Hälfte eines Audioblocks in einem Kanal detektiert wird, schaltet dieser Kanal auf einen kurzen Block. Beim Vorhandensein einer Transienten wird das Bit "blksw" für den Kanal in dem codierten Bitstrom in dem bestimmten Audioblock gesetzt.Transients or transition states detected in the channels with full bandwidth to decide when to use audio block short length switched becomes limiting of quantization noise associated with the transient namely within a small time range around the transient around. High pass filtered versions of the signal are examined with respect to an increase in energy from one sub-block time segment to the next. Sub-blocks are examined with different time scales. If a transient in the second half If an audio block is detected in a channel, it switches Channel on a short block. In the presence of a transient the bit becomes "blksw" for the channel set in the encoded bit stream in the particular audio block.

Der Transientendetektor bearbeitet für jeden Audioblock 512 Samples. Der AC-3-Codierer verwendet eine Überlappungstechnik, so dass, obwohl jeder Block nur 256 Samples enthält, wenn der Block eine Transientendetektion (oder Frequenz-Transformation) aufweist, der vorherige Block daran festgelegt wird, was eine Gesamtzahl von 512 Samples ergibt.The transient detector processed for each Audio block 512 samples. The AC-3 encoder uses an overlap technique so that even though each block only contains 256 samples, if the block has a transient detection (or frequency transform), the previous block on it is determined, which results in a total of 512 samples.

A.3 FrequenztransformationA.3 Frequency transformation

Das Zeitdomäneneingabesignal jedes Kanals wird gefenstert und gefiltert mit einer TDAC-basierten Analysefilterreihe, um Frequenzdomänenkoeffizienten zu erzeugen. Wenn das blksw-Bit gesetzt ist, was bedeutet, dass eine Transiente für den Block detektiert wurde, werden zwei kurze Transformationen mit einer Länge von jeweils 256 durchgeführt, was die zeitliche Auflösung des Signals erhöht. Falls das Bit nicht gesetzt ist, wird eine einzige lange Transformation mit einer Länge von 512 durchgeführt, wodurch eine hohe spektrale Auflösung vorgesehen wird.The time domain input signal of each channel is windowed and filtered with a TDAC-based analysis filter series, around frequency domain coefficients to create. If the blksw bit is set, which means that a transient for the block was detected, two short transformations are made with a length carried out by 256 each, what the temporal resolution of the signal increased. If the bit is not set, there will be a single long transformation with a length performed by 512, resulting in high spectral resolution is provided.

Der Ausgabefrequenzkoeffizient Xk ist definiert als:

Figure 00050001
wobei x[n] die gefensterte Eingabesequenz für einen Kanal und N die Transformationslänge ist. Anstatt Xk in der oben angegebenen Form auszuwerten, könnte es berechnet werden in einer rechnerisch effizienten Weise gemäß der folgenden Gleichung: Xk = cosγ*(gk,rcos(πk/N) – gk,isin(πk/N)1 – sinγ*(gk,rsin(πk/N) + gk,icos(πk/N)) gk,r, gk,i, ∈
Figure 00060001
(Menge der realen Zahlen) wobei
Figure 00060002
. Das Symbol j repräsentiert die imaginäre Zahl √–1. Der Ausdruck
Figure 00060003
wird erhalten ausThe output frequency coefficient X k is defined as:
Figure 00050001
where x [n] is the windowed input sequence for a channel and N is the transformation length. Instead of evaluating Xk in the form given above, it could be calculated in a computationally efficient manner according to the following equation: X k = cosγ * (g k, r cos (πk / N) - g k, i sin (πk / N) 1 - sinγ * (g k, r sin (πk / N) + g k, i cos (πk / N)) g k, r , g k, i , ∈
Figure 00060001
(Amount of real numbers) where
Figure 00060002
, The symbol j represents the imaginary number √ – 1. The expression
Figure 00060003
will get out

dem bekannten FFT-Verfahren (Schnelle-Fourier-Transformation-Verfahren), indem zunächst die Transformation x'[n] = x[n]*ejπn/N verwendet wird und dann die FFT von x'[n] = x[n]*ejπn/N berechnet wird.the known FFT method (Fast Fourier Transform method), in which the transformation x '[n] = x [n] * e jπn / N is used first and then the FFT of x' [n] = x [n ] * e jπn / N is calculated.

A.4 KopplungA.4 Coupling

Einen hohe Kompression kann erreicht werden bei AC-3 durch Verwendung einer Technik, die bekannt ist als Koppeln. Koppeln nutzt die Art und Weise, in der das menschliche Ohr ein Richtungsverhalten bzw. eine Direktionalität für Signale mit sehr hoher Frequenz bestimmt. Bei hohen Audiofrequenzen (ungefähr oberhalb 4 kHz) ist das Ohr physisch nicht in der Lage, individuelle Zyklen einer Audiowellenform zu detektieren und spricht stattdessen auf die Umhüllende der Wellenform an. Infolgedessen kombiniert der Codieren die Hochfrequenzkoeffizienten der individuellen Kanäle, um einen gemeinsamen Kopplungskanal zu bilden. Die ursprünglichen Kanäle, die kombiniert wurden zum Bilden des Kopplungskanals, werden die gekoppelten Kanäle genannt.A high compression can be achieved are at AC-3 using a technique that is known as pairing. Pairing uses the way in which human Ear a directional behavior or directionality for signals determined at a very high frequency. At high audio frequencies (approximately above 4 kHz) the ear is physically unable to complete individual cycles of an audio waveform and speaks instead the envelope the waveform. As a result, the coding combines the high frequency coefficients of individual channels, to form a common coupling channel. The originals Channels, that have been combined to form the coupling channel will be the coupled channels called.

Der einfachste Codierer kann den Kopplungskanal bilden durch einfache Durchschnittsbildung aller individueller Kanalkoeffizienten. Ein höher entwickelter Codierer könnte die Vorzeichen der individuellen Kanäle ändern, bevor sie zu der Summe addiert werden, um Phasenauslöschung zu vermeiden.The simplest encoder can do that Form a coupling channel by simply averaging all individual channel coefficients. A more sophisticated encoder could do that Change sign of individual channels before they are added to the total to avoid phase cancellation.

Der erzeugte Kopplungskanal wird als nächstes unterteilt in eine Anzahl von Bändern. Für jedes solche Band und jeden Kopplungskanal wird eine Kopplungskoordinate an den Decoder übertragen. Um die Hochfrequenzkoeffizienten in jedem Band für einen bestimmte gekoppelten Kanal aus dem Kopplungskanal zu erhalten, multipliziert der Decoder die Kopplungskanalkoeffizienten in diesem Frequenzband mit der Kopplungskoordinate dieses Kanals für das bestimmte Frequenzband. Für einen Zweikanalcodierer wird auch einen Phasenkorrekturinformation für jedes Frequenzband des Kopplungskanals ausgesandt.The coupling channel generated is next divided into a number of bands. For each such band and each coupling channel becomes a coupling coordinate transmitted to the decoder. To the radio frequency coefficients in each band for a particular coupled To get the channel from the coupling channel, the decoder multiplies the coupling channel coefficients in this frequency band with the coupling coordinate this channel for the particular frequency band. For a two-channel encoder also becomes a phase correction information for each Frequency band of the coupling channel sent.

"Es sei angenommen, dass die Frequenzdomänen-Koeffizienten bezeichnet sind als:
ai, für den ersten gekoppelten Kanal,
bi, für den zweiten gekoppelten Kanal,
ci, für den Kopplungskanal,
"It is assumed that the frequency domain coefficients are referred to as:
a i , for the first coupled channel,
b i , for the second coupled channel,
c i , for the coupling channel,

Für jedes Sub-Band wird der Wert Σiai*bi berechnet, wobei sich der Index i über den Frequenzbereich des Sub-Bands erstreckt. Wenn Σiai*bi > 0 ist, wird die Kopplung für dieses Sub-Band durchgeführt als ci = (ai + bi)/2. Wenn ci = (ai + bi)/2 ist, dann wird in ähnlicher Weise die Kopplungsstrategie für das Sub-Band durchgeführt als ci = (ai + bi)/2The value Σ i a i * b i is calculated for each sub-band, the index i extending over the frequency range of the sub-band. If Σ i a i * b i > 0, the coupling for this sub-band is carried out as c i = (a i + b i ) / 2. Similarly, if c i = (a i + b i ) / 2, the coupling strategy for the sub-band is performed as c i = (a i + b i ) / 2

Benachbarte Sub-Bänder, die identische Kopplungsstrategien verwenden, können zusammengruppiert werden, um eines oder, mehrere Kopplungsbänder zu bilden. Jedoch dürfen Sub-Bänder mit unterschiedlichen Kopplungsstrategien nicht in einem Band verbunden werden. Wenn die Gesamtkopplungsstrategie für ein Band ci = (ai + bi)/2 ist, d. h. für alle Sub-Bänder, die das Band bilden, wird der Phasenmerker für das Band auf +1 gesetzt, anderenfalls wird er auf –1 gesetzt."Adjacent subbands that use identical coupling strategies can be grouped together to form one or more coupling bands. However, sub-bands with different coupling strategies must not be connected in one band. If the overall coupling strategy for a band is ci = (a i + b i ) / 2, ie for all sub-bands that make up the band, the phase flag for the band is set to +1, otherwise it is set to -1. "

A.5 RematrixingA.5 Rematrixing

Ein weiterer Prozess, das Rematrixing, wird verwendet im speziellen Fall, dass der Codierer nur zwei Kanäle verarbeitet. Die Summe und die Differenz der beiden Signale von jedem Kanal werden auf einer Band-für-Band-Basis berechnet, und wenn in einem gegebenen Band die Pegeldisparität zwischen dem abgeleiteten (matrixed bzw. gematrixten) Signalpaar größer ist als der entsprechende Pegel des ursprünglichen Signals, wird stattdessen das Matrixpaar gewählt. Mehr Bits werden in dem Bit-Strom vorgesehen, um diesen Zustand anzuzeigen, woraufhin der Decodierer eine komplementäre Unmatrixing- bzw. Entmatrizierungs-Operation durchführt, um die ursprünglichen Signale wieder herzustellen. Die Rematrix-Bits werden weggelassen, wenn es mehr als zwei codierte Kanäle gibt.Another process, rematrixing, is used in the special case that the encoder has only two Channels processed. The sum and difference of the two signals from each channel are calculated on a band-by-band basis, and if in a given band the level disparity between the derived (matrixed) signal pair is greater than the corresponding level of the original signal , the matrix pair is selected instead. More bits are provided in the bit stream to indicate this condition, whereupon the decoder performs a complementary unmatrixing or de-matrixing operation to restore the original signals. The rematrix bits are omitted if there are more than two encoded channels.

Der Vorteil dieser Technik ist, dass sie gerichtetes Entmaskieren (directional unmasking) vermeidet, wenn die decodierten Signale nachfolgend bei einem Matrix-Surround-Prozessor verarbeitet werden, wie beispielsweise einem Dolby-Prologic-Decoder.The advantage of this technique is that it avoids directional unmasking when the decoded signals subsequently in a matrix surround processor processed, such as a Dolby Prologic decoder.

Bei AC-3 wird Rematrixing in separaten Frequenzbändern unabhängig durchgeführt. Es gibt vier Bänder mit Grenzstellen abhängig von der Kopplungsinformation. Die Grenzstellen sind bestimmt anhand der Koeffizient-Bin-Zahl, und die entsprechenden Rematrixing-Band-Frequenzgrenzen ändern sich mit der Sampling-Frequenz.With AC-3, rematrixing is done in separate frequency bands independently carried out. There are four bands dependent on border points from the coupling information. The border points are determined based on the coefficient bin number, and the corresponding rematrixing band frequency limits change with the sampling frequency.

A.6 Umwandlung in FließkommaA.6 Converting to floating point

Die Koeffizientenwerte, die einem Rematrix- und Kopplungsprozess unterzogen worden sein können, werden in eine spezielle Fließkomma-Darstellung umgewandelt, was separate Anordnungen aus Exponenten und Mantissen ergibt. Diese Fließkomma-Anordnung wird durch den Rest des Codierverfahrens hindurch beibehalten, bis gerade vor der inversen Umwandlung des Decodierers, und sieht einen dynamischen Bereich von 144 dB vor und gestattet, dass AC-3 auf Festkomma- oder Fließkomma-Hardware implementiert wird.The coefficient values that one Rematrix and coupling process may have been subjected in a special floating point representation converted what separate arrangements of exponents and mantissas results. This floating point arrangement is maintained through the rest of the encoding process until just before the inverse conversion of the decoder, and sees one dynamic range of 144 dB before and allowed to AC-3 Fixed point or floating point hardware is implemented.

Codierte Audioinformation besteht im Wesentlichen aus separater Darstellung der Exponenten- und Mantissenanordnungen. Der übrige Codierprozess konzentriert sich individuell auf die Verminderung der Exponenten- und Mantissendatenrate.Coded audio information exists essentially from separate representation of the exponent and mantissa arrangements. The rest Coding process focuses individually on the reduction the exponent and mantissa data rate.

Die Exponenten werden codiert unter Verwendung einer der Exponentencodierungsstrategien. Jede Mantisse ist auf eine festgelegte Anzahl von Binärstellen trunkiert bzw. gekürzt. Die Anzahl von Bits, die verwendet werden zum Codieren jeder Mantisse, wird erhalten aus einem Bit-Zuordnungsalgorithmus, der auf der Maskierungseigenschaft des menschlichen Gehörsystems basiert.The exponents are coded under Use one of the exponent coding strategies. Any mantissa is truncated or truncated to a specified number of binary digits. The Number of bits used to encode each mantissa, is obtained from a bit allocation algorithm based on the masking property of the human auditory system based.

A.7 ExponentencodierungsstrategieA.7 Exponent coding strategy

Exponentenwerte dürfen bei AC-3 in einem Bereich von 0 bis –24 liegen. Die Exponenten wirken als ein Skalierfaktor für jede Mantisse. Die Exponenten für Koeffizienten, die mehr als 24 führende Nullen besitzen, werden bei –24 festgelegt, und bei den entsprechenden Mantissen wird gestattet, dass sie führende Nullen besitzen.Exponent values are allowed in one range with AC-3 from 0 to –24 lie. The exponents act as a scaling factor for each mantissa. The exponents for Coefficients that more than 24 leading Have zeros at -24 and the corresponding mantissas are allowed to that they're leading Have zeros.

Ein AC-3-Bit-Strom enthält Exponenten für unabhängige, gekoppelte und die Kopplungskanäle. Exponenteninformation kann für Blöcke innerhalb eines Rahmens gemeinsam verwendet werden, so dass die Blöcke 1 bis 5 Exponenten von vorhergehenden Blöcke wiederverwenden können.An AC 3-bit stream contains exponents for independent, coupled and the coupling channels. Exponent information can be used for blocks can be shared within a frame so that the blocks Can reuse 1 to 5 exponents from previous blocks.

Die AC-3-Exponentenübertragung verwendet eine Differenzialcodiertechnik, bei der die Exponenten für einen Kanal über die Frequenz hinweg differenziell codiert werden. Der erste Exponent wird immer als ein Absolutwert gesandt. Der Wert zeigt die Anzahl führender Nullen im ersten Umwandlungskoeffizienten an. Nachfolgende Exponenten werden als Differenzwerte gesandt, die zu dem vorhergehenden Exponentenwert hinzugefügt werden müssen, um den nächsten tatsächlichen Exponentenwert zu bilden.The AC-3 exponent transmission uses a differential coding technique where the exponents are for one Channel over the frequency is encoded differentially. The first exponent is always sent as an absolute value. The value shows the number leading Zeros in the first conversion coefficient. Subsequent exponents are sent as difference values that are added to the previous exponent value have to, to the next actual To form exponent value.

Die differenziell codierten Exponenten werden als nächstes in Gruppen kombiniert. Die Gruppierung wird durchgeführt mit einem der drei Verfahren D15, D25 und D45. Diese Verfahren zusammen mit 'Wiederverwendung' werden als Exponentenstrategien bezeichnet. Die Anzahl von Exponenten in jeder Gruppe hängt nur von der Exponentenstrategie ab. Im D15-Modus ist jede Gruppe aus drei Exponenten gebildet. Bei D45 werden vier Exponenten durch einen Differenzwert repräsentiert. Als nächstes werden drei aufeinanderfolgende solcher repräsentativer Differenzwerte zusammen gruppiert, um eine Gruppe zu bilden. Jede Gruppe besteht stets aus 7 Bits. Im Fall, dass die Strategie ,Wiederverwendung' für einen Kanal in einem Block ist, werden keine Exponenten für diesen Kanal geschickt, und der Decodierer verwendet die zuletzt für diesen Kanal gesandten Exponenten erneut.The differentially coded exponents will be next combined in groups. The grouping is carried out with one of the three methods D15, D25 and D45. These procedures together with 'reuse' as exponent strategies designated. The number of exponents in each group only depends depending on the exponent strategy. Each group is off in D15 mode three exponents formed. With D45, four exponents are replaced by one Represented difference value. Next three successive such representative difference values are put together grouped to form a group. Each group always consists of 7 bits. In the event that the 'reuse' strategy for one Channel is in a block, no exponents for this Channel sent, and the decoder uses the last one for this Channel exponents sent again.

Eine Vorverarbeitung der Exponenten vor dem Codieren kann zu einer besseren Audioqualität führen.A preprocessing of the exponents before encoding can lead to better audio quality.

Die Wahl der geeigneten Strategie für Exponentencodierung bildete einen wichtigen Aspekt von AC-3. D15 liefert die beste Genauigkeit, aber nur eine geringe Komprimierung. Andererseits kann die Übertragung von nur einem Exponentensatz für einen Kanal in dem Rahmen (in dem ersten Audioblock des Rahmens) und der Versuch, dieselben Exponenten für die nächsten fünf Audioblöcke 'wiederzuverwenden', zu einer hohen Exponentenkompression führen, manchmal aber auch zu einer sehr hörbaren Verzerrung.Choosing the right strategy for exponent coding was an important aspect of AC-3. D15 provides the best accuracy but little compression. On the other hand, the transfer of only one exponent set for a channel in the frame (in the first audio block of the frame) and trying to 'reuse' the same exponents for the next five audio blocks results in high exponent compression to lead, but sometimes also to a very audible distortion.

A.8 Bit-Zuweisung für MantissenA.8 Bit assignment for mantissas

Der Bit-Zuweisungsalgorithmus analysiert die Spektral-Umhüllende des Audiosignals, das codiert wird, hinsichtlich Maskierungseffekten, um die Anzahl von Bits zu bestimmen, die jeder Umwandlungskoeffizienten-Mantisse zugewiesen werden. Es wird empfohlen, dass die Bit-Zuweisung im Codierer global auf die Gesamtheit der Kanäle als eine Einheit durchgeführt wird, und zwar aus einem gemeinsamen Bit-Pool.The bit allocation algorithm analyzes the spectral envelope the audio signal that is encoded for masking effects, to determine the number of bits that each conversion coefficient mantissa be assigned to. It is recommended that the bit assignment in the Encoder is performed globally on the entirety of the channels as a unit from a common bit pool.

Die Bit-Zuweisungsroutine enthält ein parametrisches Modell des menschlichen Hörvermögens zum Schätzen eines Rauschpegelschwellenwerts, und zwar ausgedrückt als eine Funktion der Frequenz, die hörbare von nichthörbaren Spektralkomponenten trennt. Verschiedene Parameter des Gehörmodells können von dem Codierer eingestellt werden, abhängig von den Signaleigenschaften. Beispielsweise wird eine Prototyp-Maskierungskurve definiert anhand von zwei stückweise kontinuierlichen Liniensegmenten, und zwar jedes mit seiner eigenen Steigung und y-Schnittpunkt.The bit allocation routine contains a parametric Model of human hearing to estimate one Noise level threshold, expressed as a function of frequency, the audible of inaudible Separates spectral components. Different parameters of the hearing model can set by the encoder depending on the signal properties. For example, a prototype masking curve is defined using two piece by piece continuous line segments, each with its own Slope and y-intersection.

Die Anzahl von Bits in einem AC-3-Rahmen, die verfügbar sind zum Packen von Mantissen, ist erstens natürlich abhängig von der Rahmengröße und zweitens abhängig von der Anzahl von Bits, die von anderen Feldern verbraucht werden – Exponenten, Kopplungsparameter, etc. Ein signifikanter Teil des Bitzuweisungsprozesses ist die Optimierung der Bitzuweisung für die Mantisse, so daß unter Maskiererwägungen die Gesamtsumme aller von den Mantissen verbrauchten Bits gleich (oder fast nahezu gleich) der verfügbaren Bits ist. Diese Optimierung wird durchgeführt durch einen sogenannten Binär-Konvergenz-Algorithmus.The number of bits in an AC-3 frame, the available are for packing mantissas, firstly of course depends on the frame size and secondly dependent the number of bits consumed by other fields - exponents, Coupling parameters, etc. A significant part of the bit allocation process is the optimization of the bit allocation for the mantissa, so that under Maskiererwägungen the total of all bits used by the mantissas equal (or almost almost the same) of the available bits. This optimization is carried out through a so-called binary convergence algorithm.

B. Wortlängenanforderungen im AC-3-CodiererB. Word length requirements in the AC-3 encoder

Fließkomma-Arithmetik verwendet üblicherweise IEEE 754 (32 Bits: 24-Bit-Mantissen, 7-Bit-Exponent & ein Vorzeichen-Bit), was adäquat ist für AC-3-Codierung mit hoher Qualität. Workstations, wie die Sun SPARCstation 20 können eine viel höhere Präzision vorsehen (z. B. doppelte Präzision ist 8 Byte). Jedoch erfordern Fließkomma-Einheiten eine größere Chip-Fläche und daher verwenden die meisten DSP-Prozessoren eine Festkomma-Arithmetik. Der AC-3-Codierer soll bei der Verwendung häufig ein Teil eines Verbraucherprodukts sein, z. B. DVD (Digital Versatile Disk), wo Kosten (Chipfläche) ein wichtiger Faktor sind.Floating point arithmetic is commonly used IEEE 754 (32 bits: 24-bit mantissa, 7-bit exponent & a Sign bit), which is adequate is for AC-3 coding with high quality. Workstations like the Sun SPARCstation 20 can provide much higher precision (e.g. double precision is 8 bytes). However, floating point units require a larger chip area and therefore most DSP processors use fixed point arithmetic. The AC-3 encoder is often intended to be part of a consumer product when in use be, e.g. B. DVD (Digital Versatile Disk), where costs (chip area) are an important factor.

Der AC-3-Codierer wurde implementiert auf 24-Bit-Prozessoren, wie beispielsweise dem Motorola 56000, und hatte großen wirtschaftlichen Erfolg. Obwohl jedoch die Leistung eines AC-3-Codierers, welcher auf einem 16-Bit-Prozessor implementiert ist, allgemein als qualitativ gering angenommen wurde, wurde keine angemessene Studie durchgeführt, um die Qualität zu messen bzw. einzuordnen (benchmark), oder sie mit der Fließkomma-Version zu vergleichen.The AC-3 encoder has been implemented on 24-bit processors, such as the Motorola 56000, and had great economic success. However, although the performance of an AC-3 encoder, which is implemented on a 16-bit processor in general was assumed to be of low quality, was not an appropriate one Study carried out about the quality to measure or classify (benchmark), or with the floating point version to compare.

Die Verwendung doppelter Präzision (32-Bit) zur Implementierung des Codierers auf einem 16-Bit-Prozessor kann zu einer hohen Qualität führen (sogar mehr als die 24-Bit-Version). Jedoch ist die Arithmetik für doppelte Präzision rechnermäßig sehr aufwendig bzw. teuer (z. B. benötigt auf D950 eine Multiplikation mit einfacher Präzision 1 Zyklus, wohingegen doppelte Präzision 6 Zyklen erfordert). Anstatt einfache oder doppelte Präzision während des gesamten Codierprozesses durchzuführen, können Berechnungen mit unterschiedlicher Präzision für verschiedene Stufen der Berechnung durchgeführt werden.Using double precision (32-bit) to implement the encoder on a 16-bit processor to a high quality to lead (even more than the 24-bit version). However, the arithmetic is double precision mathematically very much complex or expensive (e.g. needed on D950 a multiplication with simple precision 1 cycle, whereas double precision 6 cycles required). Instead of single or double precision during the perform entire coding process, calculations with different precision for different Levels of calculation performed become.

C. Speicherzuweisungsschema in AC-3-Stereo-CodiererC. Memory allocation scheme in AC-3 stereo encoder

Nachfolgend wird die Implementierung eines Zweikanal-AC-3-Codierers beschrieben, der hinsichtlich der Speicheranforderungen stark optimiert wurde. Der spezielle betrachtete DSP ist der STMicroelectronics' eigene D950-Kern, ein programmierbarer 16-Bit-Festkomma-Allzweck-Digitalsignalprozessor. Obwohl die Speicheroptimierungen mit Bezug auf diese 16-Bit-Maschine beschrieben werden, sind viele der Konzepte auf andere DSPs (mit unterschiedlichen Wortlängen) ebenfalls anwendbar.Below is the implementation of a two-channel AC-3 encoder described with respect to the Storage requirements have been greatly optimized. The special looked at DSP is STMicroelectronics' own D950 core, a programmable 16-bit fixed-point general-purpose digital signal processor. Although the memory optimizations related to this 16-bit machine Many of the concepts are described on other DSPs (with different word lengths) also applicable.

Wie die meisten DSPs enthält der D950 zwei Datenspeicherplätze, die X-Speicher und Y-Speicher genannt werden, von denen in einem einzigen Zyklus Lade-/Speicher-Vorgänge gleichzeitig ausgeführt werden können. Obwohl Datenspeicher in DSPs üblicherweise flach (nicht segmentiert) sind, sieht die vorliegende Implementierung aus Zwecken der Indexierung und der Logistik den Speicher als Blöcke von 512 Worten an. Die Wahl von 512 ist natürlich, da jeder Block 256 Worte von PCM enthält und sich dies für Stereo auf 512 addiert. Segmente im X-Speicher sind mit X00, X01, etc. bezeichnet. In ähnlicher Weise sind Segmente im Y-Speicher bezeichnet als Y00, Y01, etc. Aufeinanderfolgende Segmente werden als benachbart zueinander angenommen, z. B. wenn die Startadresse von X04 1500 ist, dann ist die Adresse von X05 2000.Like most DSPs, the D950 includes two data storage locations, the X memory and Y memories are called, of which in a single cycle load / store operations simultaneously accomplished can be. Although data storage in DSPs is common are flat (not segmented), the present implementation sees for the purposes of indexing and logistics, the memory as blocks of 512 words. The choice of 512 is natural since each block has 256 words from PCM contains and this for Stereo added to 512. Segments in the X memory are marked with X00, X01, etc. More like that Segments in the Y memory are designated as Y00, Y01, etc. Successive segments are assumed to be adjacent to each other, z. B. if the start address of X04 is 1500, then the address is from X05 2000.

C.1 Eingabeformat.C.1 Input format.

Sechs Audioblocks, die jeweils aus 256 Samples pro Kanal bestehen, werden im Eingabepuffer gepuffert und an den internen Arbeitsspeicher des AC-3-Codierer-Algorithmus übertragen.Six audio blocks, each made up of There are 256 samples per channel and are buffered in the input buffer and transferred to the internal memory of the AC-3 encoder algorithm.

Figure 00130001
Figure 00130001

In dem obigen Diagramm sind Segmente X07–X12 mit den Eingabe-PCM-Daten von sechs Blocks beschrieben. Wie oben erwähnt wurde, verwendet AC-3 ein Überlappungsvertahren für Frequenztransformation, wodurch jeder Block Daten von einem vorhergehenden Block erfordert, um Koeffizienten für den aktuellen Block zu erzeugen. Für den Block Null jedes Rahmens wird die PCM-Eingabe vom letzten Block des vorhergehenden Rahmens kombiniert. Der letzte Block des vorhergehenden Rahmens ist in X13 gespeichert und wird beim Beginn der Verarbeitung des aktuellen Rahmens in X06 kopiert, so dass X06–X12 einen kontinuierlichen Block aus sechs Blocks darstellt, jeder mit 512 Samples (mit Überlappung), wie es in 2 gezeigt ist.In the above diagram, segments X07-X12 are described with the input PCM data of six blocks. As mentioned above, AC-3 uses an overlap technique for frequency transformation, whereby each block requires data from a previous block to generate coefficients for the current block. For block zero of each frame, the PCM input from the last block of the previous frame is combined. The last block of the previous frame is stored in X13 and is copied to X06 when processing of the current frame begins, so that X06-X12 is a continuous block of six blocks, each with 512 samples (with overlap) as in 2 is shown.

C.2 TransientendefektionC.2 Transient Defect

Eine Transientendetektion für jeden Block erfordert 512 Eingaben. Wie oben erklärt wurde, wird jeder Block kombiniert mit Daten von einem vorhergehenden Block für Transientendetektion und Frequenztransformation präsentiert.A transient detection for everyone Block requires 512 entries. As explained above, each block combined with data from a previous block for transient detection and frequency transformation presented.

Der Filtervorgang ändert nicht die Eingabe, sondern erzeugt eine gleiche Anzahl von hochpassgefilterter Information. Diese wird analysiert durch den Transientendetektor, um Transienteninformation zu erzeugen. Filtern und Transientendetektion erfordert einen Arbeitspuffer von 1024 Worten – X14–X15, wie in 2 dargestellt ist.The filtering process does not change the input, but generates an equal number of high-pass filtered information. This is analyzed by the transient detector to generate transient information. Filtering and transient detection requires a 1024-word working buffer - X14-X15, as in 2 is shown.

C.3 FrequenztransformationC.3 Frequency transformation

512 Samples, jedes davon ein Wort (16-Bit), werden multipliziert mit dem entsprechenden Fensterkoeffizienten (32-Bit), um ein 48-Bit-Produkt zu erzeugen, das vor der Speicherung auf 32 Bit (2 Worte) trunkiert wird. Die Eingabe ist in X14 (512 16-Bit-PCM), aber nach dem Fenstern ist die Ausgabe 512 32-Bit, d. h. 1024 Worte (X14–X15). Für Berechnung des gefensterten Signals vor Ort werden die 16-Bit-PCM-Daten auseinandergezogen bzw. beabstandet mit einem leeren Wort jeweils dazwischen. Wenn ein doppeltes Wortprodukt erzeugt wird, kann es dann an Ort und Stelle gespeichert werden.512 samples, each one a word (16-bit) are multiplied by the corresponding window coefficient (32-bit) to create a 48-bit product that will be saved truncated to 32 bits (2 words). The entry is in X14 (512 16-bit PCM), but after windowing the 512 output is 32-bit, d. H. 1024 words (X14 – X15). For calculation of the windowed signal on site, the 16-bit PCM data are pulled apart or spaced with an empty word in between. If A duplicate word product is generated, it can then be put in place and Position can be saved.

Frequenztransformation unter Verwendung der Zeitdomänen-Alias-Auslöschungs-Verfahrens erzeugt 256 32-Bit-Koeffizienten. Diese Koeffizienten werden von X14 an eine geeignete Stelle im Adressraum X00–X11 übertragen, so dass ein bestimmter Koeffizient Xj[blk_no][ch][bin] in praktischer Weise adressiert werden kann als X00[blk_no*1024 + ch*512 + bin*2].Frequency transformation using the time domain alias cancellation method produces 256 32-bit coefficients. These coefficients are transferred from X14 to a suitable location in the address space X00-X11, so that a specific coefficient X j [blk_no] [ch] [bin] can be addressed in a practical way as X00 [blk_no * 1024 + ch * 512 + bin * 2].

3 zeigt die Anordnung von PCM-Samples aus X06–X12, die gestattet, dass die erzeugten Koeffizienten in dem erforderlichen Format gespeichert werden, während sicher gestellt ist, dass die Koeffizientenspeicherung kein Überschreiben (Schreiben-vor-Lesen) von PCM-Samples ergibt, welche noch benötigt werden für die Erzeugung von Koeffizienten des nächsten Blocks (oder Kanals). 3 shows the arrangement of PCM samples from X06-X12, which allows the generated coefficients to be stored in the required format, while ensuring that the coefficient storage does not result in overwriting (write-before-read) of PCM samples which are still needed for the generation of coefficients of the next block (or channel).

C.4 RematrixingC.4 Rematrixing

Rematrixing ist sehr unkompliziert hinsichtlich der Speicheranforderungen und Zuweisungen. Rematrizierte Daten werden an die Stelle der ursprünglichen Kanalkoeffizienten geschrieben.Rematrixing is very straightforward regarding storage requirements and allocations. Rematrizierte Data will replace the original channel coefficients written.

C.5 KoppelnC.5 Pairing

Zwei oder mehr gekoppelte Kanäle zusammen bilden den Kopplungskanal. Sobald er erzeugt ist, wird der Kopplungskanal als ein neuer Kanal behandelt und unterschiedlich verarbeitet. Jedoch ist das letzte Bin für gekoppelte Kanäle um eines weniger als das Start-Bin für den Kopplungskanal.
endmant[ch] = cplstrtmant ;//ch sind gekoppelter Kanal, ATSC Dok. S. 47
Two or more coupled channels together form the coupling channel. Once created, the coupling channel is treated as a new channel and processed differently. However, the last bin for coupled channels is one less than the start bin for the coupled channel.
endmant [ch] = cplstrtmant; // ch are coupled channel, ATSC doc. p. 47

Basierend auf diesem Wissen, kann der Kopplungskanal im gleichen Speicher abgebildet werden, der für einen der gekoppelten Kanäle reserviert ist.Based on this knowledge, can the coupling channel can be mapped in the same memory as for one of the coupled channels is reserved.

Normalerweise würde ein Speicherplatz von 256 Bins reserviert sein zum Speichern und Verarbeiten von Koeffizienten für jeden Kanal mit voller Bandbreite (z. B. Kanal 0 und 1 für einen Stereocodierer). Statt jedoch einen neuen Speicherblock für den Kopplungskanal zu bilden, kann der Speicherplatz eines gekoppelten Kanals wiederverwendet werden. Von Bin Null bis endmant[ch]-1 werden die Koeffizienten für den gekoppelten Kanal (ch) gespeichert, und ab endmant[ch] bis max(255, cplendmant) werden die Kopplungskanalkoeffizienten gespeichert.Typically, a memory space of 256 bins would be reserved for storing and processing coefficients for each full bandwidth channel (e.g. channel 0 and 1 for a stereo encoder). However, instead of forming a new memory block for the coupling channel, the memory space of a coupled channel can be reused. From bin zero to endmant [ch] -1 the coefficients for the kop are channel (ch) is saved, and from endmant [ch] to max (255, cplendmant) the coupling channel coefficients are saved.

Der Kopplungsprozess, wie er allgemein in 4 dargestellt ist, wurde in Einzelheiten beschrieben in der ebenfalls anhängigen Patentanmeldung mit dem Titel "Channel Coupling for an AC-3 Encoder" ("Kanalkopplung für einen AC-3-Codierer"). Hinsichtlich des Speichers wird jeweils 1 KW von X- und Y- Speicher benötigt als Zwischenspeicher (Arbeitspuffer), wie es in 2 gezeigt ist.The coupling process, as generally described in 4 has been described in detail in the pending patent application entitled "Channel Coupling for an AC-3 Encoder"("Channel Coupling for an AC-3 Encoder"). With regard to the memory, 1 KW each of the X and Y memory is required as a buffer (working buffer), as described in 2 is shown.

C.6 Fließkomma zu ExponentialschreibweiseC.6 Floating point closed exponential

Jeder Frequenzkoeffizient (32-Bit) erzeugt eine Mantisse und einen Exponenten. Exponenten besitzen einen Maximalwert von 24, daher sind sechzehn Bits mehr als genug, um ihren Wert zu speichern. Für Mantissen ist es nicht offensichtlich, ob sechzehn Bits ausreichend sind oder ob die vollen zweiunddreißig Bits benötigt werden. Jedoch spricht die Patentanmeldung des Autors mit dem Titel "Accuracy Demands on Mantissa Representation in AC-Encoder" ("Genauigkeitsanforderungen an die Mantissendarstellung bei einem AC-3-Codierer"), das gleiche Problem an und beweist, dass sechzehn Bits ausreichend sind. Daher werden sechs Blocks der Frequenzkoeffizienten an den Stellen X00–X11 mit Exponenten (X00–X05) und Mantissen (X06–X11) überschrieben, siehe 2.Each frequency coefficient (32-bit) creates a mantissa and an exponent. Exponents have a maximum value of 24, so sixteen bits are more than enough to store their value. It is not obvious to mantissas whether sixteen bits are sufficient or whether the full thirty-two bits are required. However, the author's patent application entitled "Accuracy Demands on Mantissa Representation in AC-Encoder" addresses the same problem and proves that sixteen bits are sufficient. Therefore, six blocks of the frequency coefficients at positions X00 – X11 are overwritten with exponents (X00 – X05) and mantissas (X06 – X11), see 2 ,

C.7. ExponentencodierungC.7. exponent coding

Wie oben erklärt wurde, werden Exponenten in AC-3 unterschiedlich codiert und nachfolgend gruppiert unter Verwendung eines der Schemata D15, D25, D45 und Wiederverwendung. Ein Zwischenspeicher von 2 K wird benötigt für den Codier- und Gruppierungsprozess. Die sich ergebenden gruppierten Exponenten erfordern zusätzlichen Speicherplatz zum Speichern, bevor sie schließlich in einen AC-3-Rahmen gepackt werden. Der zugewiesene Speicher muss selbst im schlimmsten Fall ausreichend sein. Dies wird nun überprüft.As explained above, exponents coded differently in AC-3 and subsequently grouped under Use one of the schemes D15, D25, D45 and reuse. A buffer of 2 K is required for the coding and grouping process. The resulting grouped exponents require additional ones Storage space for storage before finally being placed in an AC-3 frame be packed. The allocated memory must be at worst Case be sufficient. This is now being checked.

Sechs Blocks und zwei Kanäle in jedem Block (angenommen dass der Kopplungskanal, wenn er vorhanden ist, mit dem Kanal 0 überlappt), sehen eine Gesamtzahl von 256 × 2 × 6 = 3072 Exponenten vor. Der schlimmste Fall ist, wenn alle Blocks die D15-Codierstrategie verwenden. In diesem Fall ist der Codiergewinn nur 3 (da drei Exponenten zu einem gruppiert werden). Somit ist der für die Exponenten erforderliche Gesamtspeicher 3072/3 = 1 K. Wenn man gewährleistet (wie es bei dem hier verwendeten Algorithmus der Fall ist), dass die letzten drei Blocks Wiederverwendung benutzen, fällt darüber hinaus die Speicheranforderung für gruppierte Exponenten auf 512 Worte.Six blocks and two channels in each Block (assuming that the coupling channel, if it exists, overlapped with channel 0), see a total of 256 × 2 × 6 = 3072 Exponents. The worst case is when all blocks use the D15 encoding strategy use. In this case the coding gain is only 3 (since there are three exponents be grouped into one). So that is necessary for the exponents Total memory 3072/3 = 1 K. If you guarantee (as is the case here algorithm used is the case that the last three blocks Use reuse falls about that addition, the storage requirement for grouped Exponents on 512 words.

Für künftige Zugriffe müssen die gruppierten Exponenten leicht zu indexieren sein. Obwohl die gruppierten Exponenten 512 Worte einnehmen können, wären sie im Allgemeinen im Speicher verteilt wegen Indexierung, z. B. zum Indexieren zu grp_exp[blk_no][ch][grp] sollte die Adresse X12[(blk_no*max_grp_size*3) + (max_grp_size*ch) + grp] sein. Dies bedeutet, dass man mehr als 512 Worte zuweisen muss zur Speicherung gruppierter Exponenten. Der Weg, um dies zu vermeiden, ist die Verwendung eines Doppelindexierverfahrens. Für jeden Block und Kanal wird die Startstelle seiner gruppierten Exponenten in einer separaten kleinen Tabelle gespeichert (Größe: 18 Byte). Dieser Adressenverweis oder Pointer wird dann verwendet, um auf den tatsächlichen gruppierten Exponenten zuzugreifen. In Fällen, wo die Exponentencodierstrategie Wiederverwendung ist, existieren keine gruppierten Exponenten, und der Tabelleneintrag für einen derartigen Block und Kanal wäre ein Null-Pointer.For future Accesses must the grouped exponents are easy to index. Although the grouped exponents can take 512 words, they would generally be in memory distributed due to indexing, e.g. B. for indexing to grp_exp [blk_no] [ch] [grp] the address X12 [(blk_no * max_grp_size * 3) + (max_grp_size * ch) + grp]. This means that you can assign more than 512 words must be used to store grouped exponents. The way to do this avoid using a double indexing method. For each Block and channel become the starting point of its grouped exponents stored in a separate small table (size: 18 bytes). This address reference or pointer is then used to point to the actual to access grouped exponents. In cases where the exponent coding strategy Is reuse, there are no grouped exponents, and the table entry for such a block and channel would be a null pointer.

C.8 BitzuweisungsalgorithmusC.8 Bit allocation algorithm

Bitzuweisung ist einer der kompliziertesten Teile der AC-3-Codierung (hinsichtlich Rechneraufwand und Speicher). Sie kann unterteilt werden in die folgenden Schritte.Bit allocation is one of the most complicated Parts of the AC-3 coding (in terms of computing effort and memory). It can be divided into the following steps.

  • – PSD Berechnung – Leistungsspektrumdichte für Exponenten- PSD Calculation - power spectrum density for exponents
  • – PSD Integration – Zusammenfassen von PSD in Bändern, entsprechend einer Maskierungskurve- PSD Integration - summarizing of PSD in tapes, according to a masking curve
  • – Erregung und FSMC – Erststufenmaskierungskurve (First Step Masking Curve)- Excitement and FSMC - first stage masking curve (First Step Masking Curve)
  • – Schnelle Bitzuweisung – Bitzuweisung um optimales SNR (Rauschverhältnis) zu finden- Quick Bit allocation - bit allocation for optimal SNR (noise ratio) to find
  • – Kernbitzuweisung – Erzeugung von Bitzuweisungspointern bzw. -adressverweisen- Core bit allocation - generation of bit allocation pointers or addresses

C.8.1 PSD-BerechnungC.8.1 PSD calculation

Der erste Schritt der Bitzuweisung bestimmt die Leistungsspektrumdichte (PSD) entsprechend der folgenden Gleichung psd[bin] = (3072 – (exp[bin] << 7));The first step of bit allocation determines the power spectrum density (PSD) according to the following equation psd [bin] = (3072 - (exp [bin] << 7)) ;

Die PSD soll an der gleichen Stelle gespeichert werden wie die Exponenten. Dies ist möglich, da die Exponenten nicht mehr benötigt werde, sobald die PSD erzeugt ist.The PSD is said to be in the same place are saved like the exponents. This is possible because the exponents no longer needed once the PSD is created.

C.8.2 PSD-IntegrationC.8.2 PSD integration

Der nächste Schritt des Algorithmus integriert feine PSD-Werte innerhalb jedes Bandes aus einer Vielzahl von 1/6-Oktaven-Bändern, um eine Band-PSD zu erzeugen. Die Integration von PSD-Werten in jedem Band wird mit log-Addition durchgeführt. Die log-Addition wird implementiert durch Berechnen der Differenz zwischen den zwei Operanden und unter Verwendung der absoluten Differenz geteilt durch 2 als eine Adresse in einer Länge-256-Nachschlagetabelle. Insgesamt können 50 derartige Bänder pro Kanal vorhanden sein. Der Kopplungskanal kann jedoch den gleichen Speicherplatz wiederverwenden, wie einer der gekoppelten Kanäle. Die Band-PSD für den gekoppelten Kanal nimmt den unteren Teil ein (0-bndstart[ch]), und der obere Teil kann von dem Kopplungskanal eingenommen werden, vorausgesetzt, dass die Start-Bin des Kopplungskanals immer auf einem neuen Band ist – anderenfalls wird das Kopplungsband das letzte Band des gekoppelten Kanals überschreiben.The next step of the algorithm integrates fine PSD values within each band from a variety of 1/6 octave bands, a band PSD to create. The integration of PSD values in each volume is included log addition performed. The log addition is implemented by calculating the difference between the two operands and using the absolute difference divided by 2 as an address in a length 256 lookup table. Overall, can 50 such tapes be available per channel. However, the coupling channel can be the same Reuse space like one of the paired channels. The Band PSD for the paired Channel takes the lower part (0-bndstart [ch]), and the upper part Part can be taken up by the coupling channel, provided that the start bin of the coupling channel is always on a new tape is - otherwise the coupling band will overwrite the last band of the coupled channel.

Figure 00190001
Figure 00190001

Figure 00200001
Tabelle 1. Bandstrukturfabellen, bndtab[], bdnsz[]
Figure 00200001
Table 1. Band structure tables, bndtab [], bdnsz []

Die obige Tabelle 1 zeigt die Bandstruktur für PSD-Integration. Für jedes Band zeigt bndtab (Spalte 2) den Startindex der Koeffizienten in dem Band. Koppeln kann nur an diskreten Punkten beginnen, die in der folgenden Gleichung gegeben sind. cplstrfmant = (cplbegf*12) + 37 Table 1 above shows the band structure for PSD integration. For each band, bndtab (column 2) shows the starting index of the coefficients in the band. Coupling can only start at discrete points given in the following equation. cplstrfmant = (cplbegf * 12) + 37

Basierend auf der Tabelle und der obigen Gleichung wird man bemerken, dass für cplbegf von 0 bis 8, cplstrtmant immer der Startpunkt eines Bandes ist. Für cplbegf über 8, ist die Bedingung noch immer erfüllt, wenn die Werte auf gerade Zahlen beschränkt sind. Somit kann mit dieser Beschränkung (die kaum einschränkend ist) die Band-PSD der Kopplung an die eines gekoppelten Kanals angehängt werden.Based on the table and the above equation it will be noted that for cplbegf from 0 to 8, cplstrtmant is always the starting point of a band. For cplbegf over 8, the condition is still always met when the values are limited to even numbers. So with this restriction (which is hardly restrictive is) the band PSD of the coupling are appended to that of a coupled channel.

C.8.3 Erregungskurve und FSMCC.8.3 Excitation curve and FSMC

Die Erregungsfunktion wird berechnet durch Anwenden der Prototyp-Maskierungskurve, die von dem Codieren ausgewählt wurde (und an den Decodieren übertragen wurde) auf das integrierte PSD-Spektrum (bndpsd[]). Das Ergebnis dieser Berechnung wird dann hinsichtlich der Amplitude nach unten versetzt durch die Parameter fgain und sgain, die auch aus dem Bit-Strom erhalten werden.The excitation function is calculated by applying the prototype masking curve, selected by the coding was (and transmitted to the decoders was) on the integrated PSD spectrum (bndpsd []). The result this calculation is then down in terms of amplitude offset by the parameters fgain and sgain, which are also obtained from the bit stream.

Die Erregungskurvenwerte können an die Stelle der Band-PSD geschrieben werden. Da jedoch die Band-PSD-Werte während des Anfangsteils der Maskierungskurvenberechnungen benötigt werden, kann einen zeitweilige Sicherungskopie (back-up) seines Werts hergestellt werden.The excitation curve values can be on the place of the band PSD will be written. However, since the band PSD values while the initial part of the masking curve calculations are required, can make a temporary backup (back-up) of its value become.

Nach der Erregungskurve, wird die Erststufenmaskierungskurve (FSMC = First-Sfep-Masking-Curve) berechnet, wie es durch den nachfolgenden Pseudo-Code vorgegeben ist:After the excitation curve, the First stage masking curve (FSMC = First Sfep Masking Curve) calculated, as specified by the following pseudo code:

Figure 00210001
Figure 00210001

Dieser Schritt berechnet die Maskierungskurve (Rauschpegelschwellenwertskurve) aus der Erregungsfunktion. Die Hörschwelle hthpp ist in dem ATSC-Dokument angegeben. Die Variablen fscod und dbknee werden durch den Codierer zugewiesen. Die FSMC wird über die Erregungskurve geschrieben, da ihr Wert nicht mehr von dem Codierer benötigt wird.This step calculates the masking curve (Noise level threshold curve) from the excitation function. The auditory threshold hthpp is specified in the ATSC document. The variables fscod and dbknee are assigned by the encoder. The FSMC is about the Excitation curve written because its value is no longer from the encoder needed becomes.

C.8.3 Schnelle BitzuweisungC.8.3 Fast bit allocation

AC-3 führt eine globale Bitzuweisung durch, d. h. die Zuweisungsroutine verschiebt je nach Bedarf Bits über Kanäle und Blocks hinweg, um die Verschiebungsanforderungen des Signals zu erfüllen. Mantissen-Bits für den gesamten Rahmen werden aus einem gemeinsamen Pool zugewiesen. Als Ergebnis davon erfordert die Bitzuweisung Maskierungs- und PSD-Information des gesamten Rahmens. Sobald die Bits zugewiesen sind, kann die Quantisierung der Mantisse gemäß der zugewiesenen Bits auf einer blockweisen Basis durchgeführt werden. Dies ist so, weil das Teilen von Information über eine quantisierte Mantisse auf das Blockniveau beschränkt ist. Um die Speicheranforderungen zu vermindern, ist der erste Schritt die Quantisierung von dem Bitzuweisungsprozess zu trennen.AC-3 performs global bit allocation through, d. H. the assignment routine shifts bits across channels and blocks as needed away to meet the signal's displacement requirements. Mantissa bits for the whole Frames are assigned from a shared pool. As a result bit allocation of this requires masking and PSD information of the entire frame. Once the bits are assigned, the Quantize the mantissa according to the assigned Bits are performed on a block-by-block basis. This is because sharing information about a quantized mantissa is limited to the block level. The first step is to reduce storage requirements separate the quantization from the bit allocation process.

Der zweite zu bemerkende wichtige Aspekt, welcher eine enorme Verminderung der Speicheranforderungen mit sich bringt, ist die Tatsache, dass die Bitzuweisung nur drei Informationen benötigt – FSMC, PSD und snroffst. Während die ersten beiden inzwischen bekannt sind, muss der dritte Parameter erklärt werden. Da FSMC und PSD zu diesem Zeitpunkt des Rahmencodierprozesses festgelegt sind, ist der einzige Parameter, der die Verteilung der Bits auf Mantissen ändert, der Wert von snroffst. Der Bitzuweisungsalgorithmus wiederholt sich bzw. iteriert mit verschiedenen Werten dieses Parameters, bis er auf einen Wert konvergiert, bei dem die gesamten Bits der quantisierten Matisse in dem Rahmen auf die verfügbaren Bits addieren.The second important to notice Aspect, which is a huge reduction in storage requirements entails the fact that the bit allocation is only three Information needed - FSMC, PSD and snroffst. While The first two are now known, the third parameter explained become. Because FSMC and PSD at this point in the frame coding process is the only parameter that determines the distribution of the Bits on mantissa changes the value of snroffst. The bit allocation algorithm is repeated or iterates with different values of this parameter until it converges to a value at which the total bits of the quantized Add Matisse in the frame to the available bits.

Aus der allgemeinen Beschreibung im ATSC-Standard scheint es, dass zum Berechnen des richtigen Werts für snroffst die Maskierkurve für jede Iteration aus der Erregungskurve neu berechnet werden muss. Unter Verwendung der Maskierkurve würden die Bit-Zuweisungs-Adressverweise bzw. -Pointer berechnet und summiert, um die Mantissengröße zu schätzen. Speichern der Bitzuweisungspointer für den gesamten Rahmen würde 3 K Speicher erfordern. Darüber hinaus würde die Maskierkurve von einer separaten Stelle von der Erregungskurve gespeichert werden müssen, da andernfalls die Erregungskurvenwerte für die nächste Iteration korrumpiert oder beschädigt würden. Durch Aufteilen der Maskierungskurvenberechnung in zwei Teile – FSMC und SSMC (Second-Step-Masking-Curve = Zweitstufenmaskierkurve), trennt man den Teil der unter snroffst unverändert bleibt von dem sich ändernden Teil.From the general description in the ATSC standard it seems that to calculate the correct value for snroffst the masking curve for each iteration has to be recalculated from the excitation curve. Using the masking curve, the bit allocation address references or pointer calculated and summed to estimate the mantissa size. to save the bit allocation pointer for the whole frame would 3K memory required. About that would out the masking curve from a separate location from the excitation curve need to be saved otherwise the excitation curve values for the next iteration will be corrupted or damaged would. By dividing the masking curve calculation into two parts - FSMC and SSMC (Second Step Masking Curve), separates one the part of the under snroffst remains unchanged from the changing Part.

Ein innovativer Aspekt des Speicherzuweisungsprozesses, welcher von dem Autor entworfen wurde, besteht darin, dass die SSMC (Zweitstufenmaskierkurve) unterwegs oder nebenbei berechnet wird, d. h. jedes Mal, wenn Maskierkurve für den Block benötigt wird. Während der Optimierungsstufe des Bitzuweisungsalgorithmus wird die SSMC aus der FSMC (Erststufenmaskierungskurve) und dem gewählten snroffst berechnet und an einer temporären Stelle gespeichert und verworfen, sobald sie ihren Zweck erfüllt hat. Bitzuweisungspointer (baps) werden nur für den aktuellen Block gespeichert. Nachdem Konvergenzprozess, wenn der optimale Wert für snroffst bekannt ist, werden die SSMC und Bitzuweisungspointer für jeden Block erneut berechnet, wenn und soweit nötig. Dies erhöht effektiv die Anzahl der Iterationen um eins, aber da üblicherweise die Anzahl der Iterationen ziemlich groß ist (~6), sind die Auswirkungen nicht signifikant.An innovative aspect of the memory allocation process, which was designed by the author is that the SSMC (Second-stage masking curve) is calculated on the way or incidentally, d. H. every time masking curve is needed for the block. While The optimization level of the bit allocation algorithm is the SSMC from the FSMC (first stage masking curve) and the selected snroffst calculated and at a temporary Place saved and discarded as soon as it has served its purpose. Bit allocation pointers (baps) are only saved for the current block. After the convergence process, if the optimal value for snroffst is known, the SSMC and bit allocation pointers for everyone Block recalculated if and as necessary. This effectively increases the number of iterations by one, but since usually the number of Iterations is pretty big (~ 6), the effects are not significant.

Speichern von Bitzuweisungspointern (baps) nur für den aktuellen Block spart nicht nur Speicher, sondern vermindert auch den Rechneraufwand und verbessert die Leichtigkeit des Codierens und Testens. Das folgende übliche Szenario im AC-3-Codierprozess sei angenommen, wenn die Exponentencodierstrategie für einen bestimmten Block wie folgt ist: D15, Wiederverwendung, Wiederverwendung, Wiederverwendung, D25, Wiederverwendung. Die Verarbeitung für den Block Null beginnt und die FSMC und Bitzuweisungspointer werden berechnet. Mantissen für den Block Null werden quantisiert, gruppiert und gemäß der Bitzuweisungspointer gepackt. Da die Strategie für den Block Eins Wiederverwendung ist, sind die SSMC und dadurch die Bitzuweisungspointer wie für den Block Null. Daher werden die Berechnungen für SSMC und Bitzuweisungspointer einfach ausgelassen (siehe 5), und die Quantisierungsroutine quantisiert und packt die Mantissen für den Block Eins gemäß der Bitzuweisungspointer an der Stelle Y00 (unabhängig davon, für welchen Block die Bitzuweisungspointer ursprünglich berechnet wurden). Dieses Design vereinfacht die Implementierung und das Testen des Bit zuweisungsalgorithmus, was anderenfalls komplexe Berechnungen und Indexierung erfordern würde, um den Block zu bestimmen, dessen Bitzuweisungspointer im aktuellen Block wiederverwendet werden sollen.Saving bit allocation pointers (baps) only for the current block not only saves memory, but also reduces the computer workload and improves the ease of coding and testing. The following common scenario in the AC-3 encoding process is assumed when the exponent encoding strategy for a particular block is as follows: D15, reuse, reuse, reuse, D25, reuse. Processing for block zero begins and the FSMC and bit allocation pointers are calculated. Mantissas for block zero are quantized, grouped and packed according to the bit allocation pointer. Because the strategy for block one is reuse, the SSMC and thus the bit allocation pointers are like for block zero. Therefore, the calculations for SSMC and bit allocation pointer are simply omitted (see 5 ), and the quantization routine quantizes and packs the mantissas for block one according to the bit allocation pointer at position Y00 (regardless of which block the bit allocation pointers were originally calculated for). This design simplifies the implementation and testing of the bit allocation algorithm, which would otherwise require complex calculations and indexing to determine the block whose bit allocation pointer is to be reused in the current block.

Es sei bemerkt, dass dieses Schema nur bis zum Blockniveau funktioniert. SSMC und Bitzuweisungspointer können nicht auf Kanalniveau in einem Block bearbeitet werde, da in der Quantisierungsstufe sich die Gruppierung von Mantissen von einem Kanal zu einem anderen (innerhalb desselben Blocks) erstrecken kann, z. B. wenn Kanal Null nur zwei Mantissen der dritten Stufe (d. h. auf drei Stufen quantisierte Mantissen) besitzt, dann wird die erste Mantisse der dritten Stufe in Kanal Eins zusammenaddiert, um eine Gruppe von drei zu bilden. Die Sache ist die, dass wenn Mantissen eines Blocks quantisiert werden, die Bitzuweisungspointer für alle Kanäle innerhalb des Blocks vorher berechnet und bereit sein müssen.It should be noted that this scheme only works up to the block level. SSMC and bit allocation pointer can are not processed at channel level in a block, because in the Quantization level is the grouping of mantissas from one Channel can extend to another (within the same block), e.g. B. if channel zero only two mantissas of the third stage (i.e. on has three levels of quantized mantissa), then the first Third stage mantissa added together in channel one to make one Form group of three. The thing is that when mantissas of a block are quantized, the bit allocation pointer for all channels within of the block must be calculated beforehand and be ready.

C.8.5 KernbifzuweisungC.8.5 Core bif allocation

Der letzte Schritt der Bitzuweisung überprüft, ob die Einschränkungen (ATSC Dokument) für den AC-3-Rahmen erfüllt sind, wie beispielsweise – Größe von Block 0 und Block 1 kombiniert sind niemals größer als 5/8 des Rahmens. Sobald der Einschränkungstest bestanden wurde, werden die Bitzuweisungspointer für jeden Block berechnet und ihr Wert wird verwendet zum Quantisieren der Mantissen.The last step of the bit allocation checks whether the restrictions (ATSC document) for the AC-3 frames are met, such as - size of block 0 and block 1 combined are never larger than 5/8 of the frame. Once the restriction test is passed, the bit allocation pointers for each block are calculated and their value is used to quantize the mantissas.

C.9 QuanfisierungC.9 Quantification

Die Mantissen in X06–X11 werden quantisiert bis zu der Anzahl von Bits, die von den Bitzuweisungspointern vorgegeben ist. Die quantisierten Mantissen werden an Ort und Stelle gespeichert. Jedoch werden bei AC-3 Mantissen mit bestimmten Niveaus oder Stufen der Quantisierung zusammengruppiert. Diese Mantissen müssen separat gespeichert und gruppiert werden und dann in dem AC-3-Rahmen gepackt werden.The mantissas in X06 – X11 are quantizes up to the number of bits from the bit allocation pointers is specified. The quantized mantissas are in place saved. However, AC-3 mantissas have certain levels or levels of quantization grouped together. These mantissas have to stored and grouped separately and then in the AC-3 frame be packed.

Wie aus der nachfolgenden Tabelle 2 ersichtlich ist, werden die Mantissen mit den Bitzuweisungspointern 1, 2 und 4 (d. h. Lev-3, Lev-5 und Lev-11-Mantissen) in Gruppen von 3 bzw. 3 bzw. 2 zusammengefasst.As from the table below 2 can be seen, the mantissas with the bit allocation pointers 1, 2 and 4 (i.e. Lev-3, Lev-5 and Lev-11 mantissa) in groups of 3, 3 and 3 respectively 2 summarized.

Figure 00250001
Tabelle 2. Abbilden von Bitzuweisungspointern zum Quantisierer
Figure 00250001
Table 2. Mapping bit allocation pointers to the quantizer

Die nachfolgende 6 zeigt den Quantisierer, welcher die Mantisse eines bestimmten Blocks gemäß der entsprechenden Bitzweisungspointer quantisiert. Die Lev-3, -5 und -11-Mantissen werden separat gespeichert zur Gruppierung oder man kann diese Mantissen an ihrer ursprünglichen Stelle speichern, aber dann bräuchte man für die Gruppierungsstufe Adressverweise bzw. Pointer dafür, wobei diese Pointer in der gleichen Anzahl einen identischen Speicherplatz einnehmen würden. Die Kompression der Niveaumantissen ist 3, 3 und 2 (entsprechend der Gruppengröße von 3, 3 und 2), daher wird jeweils ein proportionaler Speicherplatz dafür reserviert in Y06–Y07.The following 6 shows the quantizer which quantizes the mantissa of a particular block according to the corresponding bit allocation pointer. The Lev-3, -5 and -11 mantissas are saved separately for grouping or you can save these mantissas in their original position, but then you would need address references or pointers for the grouping level, these pointers being identical in the same number Would take up space. The level mantissa compression is 3, 3 and 2 (corresponding to the group size of 3, 3 and 2), therefore a proportional memory space is reserved for this in Y06 – Y07.

Der letzte Schritt im Codierprozess ist das Packen der Mantissen auf den AC-3-Rahmen. Für jede Mantisse werden Q Bits der quantisierten Mantisse im AC-3-Rahmen gespeichert, wobei die Größe Q bestimmt wird aus dem Wert des Bitzuweisungspointers. Zu dieser Zeit werden die PSD-Werte für den betreffenden Block nicht mehr benötigt, und daher können die Q Werte an ihrer Stelle gespeichert werden. (Stelle: X06–X11), siehe 2.The final step in the coding process is packing the mantissas onto the AC-3 frame. For each mantissa, Q bits of the quantized mantissa are stored in the AC-3 frame, the size Q being determined from the value of the bit allocation pointer. At this time, the PSD values for the block in question are no longer needed, and therefore the Q values can be saved in their place. (Position: X06 – X11), see 2 ,

C.10 AC-3-RahmenpackenC.10 Pack AC-3 frames

Die Rahmengröße hängt vom Kompressionsverhältnis ab. Für Stereo-AC-3 sind Bitraten von bis zu 192 bis 384 kbps vernünftig, da in diesem Bereich eine transparente Qualität erreicht werden kann. Die größte Rahmengröße (836 Worte) ergibt sich, wenn die Bitrate 384 kbps ist und die Samplefrequenz 44,1 kHz ist. Eine Rahmenpuffergröße von 1 K ist daher vernünftig zum Speichern des AC-3-Rahmens (X14–X15).The frame size depends on the compression ratio. For stereo AC-3 Bit rates of up to 192 to 384 kbps are reasonable given this range a transparent quality can be achieved. The largest frame size (836 Words) results when the bit rate is 384 kbps and the sample rate Is 44.1 kHz. A frame buffer size of 1 K is therefore reasonable Save the AC-3 frame (X14 – X15).

Claims (9)

Verfahren zur Reduzierung von Speicheranforderungen für einen Codierer, der die Funktion der Bitzuweisung zum Quantisieren von Frequenzkoeftizienten eines Eingabesignals aufweist, wobei das Verfahren Folgendes aufweist: Berechnen einer Leistungsspektrumdichte (PSD); Integrieren der PSD über eine Vielzahl von Frequenzbändern zum Bilden einer Band-PSD; Berechnen einer Erregungsfunktion zum Anlegen einer Prototypmaskierungskurve an die Band-PSD; Erzeugen einer Erststufenmaskierungskurve (FSMC) eines Rauschpegelschwellenwerts aus der Erregungsfunktion; Berechnen einer Zweitstufenmaskierungskurve (SSMC) durch Inkrementieren der FSMC gemäß einer ausgewählten Rauschabstandsvariablen (Signal-zu-Rausch-Variablen) (snroffst), wobei die Erregungsfunktion nach dem Berechnen anstelle der Band-PSD in den Speicher geschrieben wird und nachfolgend durch die FSMC überschrieben wird, und wobei die SSMC in einem temporären Speicher gespeichert wird und für jeden Datenblock, der durch den Codierer verarbeitet wird, neu berechnet wird, dadurch gekennzeichnet, dass: die Frequenzkoeffizienten von zwei gekoppelten Eingangskanälen in einem Kopplungskanal kombiniert werden, wobei das Verfahren das Abbilden von Kopplungskanaldaten in den Speicher aufweist, der für einen der gekoppelten Kanäle reserviert ist.A method for reducing memory requirements for an encoder having the function of bit allocation for quantizing frequency coefficients of an input signal, the method comprising: calculating a power spectrum density (PSD); Integrating the PSD over a plurality of frequency bands to form a band PSD; Computing an excitation function to apply a prototype mask curve to the band PSD; Generating a first stage masking curve (FSMC) of a noise level threshold from the excitation function; Compute a second stage masking curve (SSMC) by incrementing the FSMC according to a selected signal-to-noise variable (snroffst), the excitation function being written into the memory instead of the band PSD and then overwritten by the FSMC , and wherein the SSMC is stored in a temporary memory and recalculated for each block of data processed by the encoder, characterized in that: the frequency coefficients of two coupled input channels are combined in one coupling channel, the method comprising mapping Coupling channel data in the memory, which is reserved for one of the coupled channels. Verfahren nach Anspruch 1, das das Zuweisen von Bits für das Codieren von Mantissewerten der Frequenzkoeffizienten aufweist, wobei die Bitzuweisung auf der Basis der PSD, der SSMC und der Variablen bestimmt wird, und zwar mit Bitzuweisungsadressverweisen bzw. -Pointern, die für nur einen aktuellen Datenblock erzeugt und gespeichert werden.The method of claim 1, which comprises assigning bits for the Encoding mantissa values of the frequency coefficients, with bit allocation based on PSD, SSMC and variables is determined, with bit allocation address pointers or pointers, the for only a current data block can be generated and saved. Verfahren nach Anspruch 2, wobei der Bitzuweisung eine Quantisierung der Mantissewerte gemäß den Bitzuweisungspointern und Packen der quantisierten Werte in einen Datenrahmen folgt, wobei die quantisierten Werte im Speicher anstelle der ursprünglichen nicht-quantisierten Koeffizienten gespeichert werden.The method of claim 2, wherein the bit allocation a quantization of the mantissa values according to the bit allocation pointers and packing the quantized values into a data frame, where the quantized values in memory instead of the original ones non-quantized coefficients can be saved. Verfahren nach Anspruch 1, wobei die Frequenzkoeffizienten anfänglich in Exponent- und Mantissekomponenten getrennt werden, und wobei die Exponentenkomponenten mit der PSD überschrieben werden.The method of claim 1, wherein the frequency coefficients initially be separated into exponent and mantissa components, and where the exponent components are overwritten with the PSD. Verfahren nach Anspruch 1, wobei der Codierer die Funktion des Rematrixing und des Koppelns aufweist, wobei das Rematrixing und das Koppeln, sofern nötig, an Ort und Stelle durchgeführt werden, wobei ein Kopplungskanal einer oberen Hälfte eines ersten gekoppelten Kanals überlagert wird, um so den Bedarf für das Erzeugen eines neuen Speicherbereichs für den Kopplungskanal zu eliminieren.The method of claim 1, wherein the encoder comprises the Has function of rematrixing and coupling, the rematrixing and pairing if necessary performed on the spot be, wherein a coupling channel of an upper half of a first coupled Channel superimposed will, so the need for that Generate a new memory area for the coupling channel to eliminate. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Eingabesignal in Rahmen von sechs Blöcken einer Stereoeingabe verarbeitet wird, die in einem Speicher X bei Stellen X07–X12 gespeichert werden, wobei ein letzter Block eines vorangegangenen Rahmens bei X06 vorangestellt festgelegt ist, so dass kontinuierlich sechs Blöcke mit überlappenden 512 Samples pro Eingabekanal Transientendetektions- und Frequenztransformationsmodulen des Codierers präsentiert bzw. dargeboten werden, und wobei die Koeffizienten durch 256 32-Bit-Koeffizienten pro Kanal repräsentiert werden, die in X00–X11 gespeichert sind.Method according to one of the preceding claims, wherein processes the input signal in the context of six blocks of stereo input which are stored in a memory X at locations X07-X12, where preceded by a last block of a previous frame at X06 is set so that six blocks with overlapping 512 samples per Input channel transient detection and frequency transformation modules presented by the encoder or are presented, and the coefficients by 256 32-bit coefficients represented per channel in X00 – X11 are saved. Verfahren nach Anspruch 6, wobei 32-Bit-Frequenzkoeffizienten jeweils umgewandelt werden in 16-Bit-Mantissen und -Exponenten.The method of claim 6, wherein 32-bit frequency coefficients are each converted into 16-bit mantissas and exponents. Verfahren nach Anspruch 7, wobei die Exponenten codiert werden gemäß einer ausgewählten Codierstrategie unter Nutzung eines doppelten Indexierungsverfahrens.The method of claim 7, wherein the exponent is encoded according to a chosen Coding strategy using a double indexing process. Verfahren nach Anspruch 2 oder 3, wobei die Mantissen Quantisierungswerten zugeordnet werden auf der Basis der Bitzuweisungspointer, wobei die Quantisierungswerte anstelle der PSD gespeichert werden.The method of claim 2 or 3, wherein the mantissa Quantization values are assigned based on the bit allocation pointer, the quantization values being stored in place of the PSD.
DE69908433T 1999-10-30 1999-10-30 METHOD FOR REDUCING MEMORY IN AN AC-3 AUDIO ENCODER Expired - Lifetime DE69908433T2 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/SG1999/000111 WO2001033556A1 (en) 1999-10-30 1999-10-30 A method of reducing memory requirements in an ac-3 audio encoder

Publications (2)

Publication Number Publication Date
DE69908433D1 DE69908433D1 (en) 2003-07-03
DE69908433T2 true DE69908433T2 (en) 2004-04-08

Family

ID=20430245

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69908433T Expired - Lifetime DE69908433T2 (en) 1999-10-30 1999-10-30 METHOD FOR REDUCING MEMORY IN AN AC-3 AUDIO ENCODER

Country Status (3)

Country Link
EP (1) EP1228507B1 (en)
DE (1) DE69908433T2 (en)
WO (1) WO2001033556A1 (en)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0749647B1 (en) * 1995-01-09 2003-02-12 Koninklijke Philips Electronics N.V. Method and apparatus for determining a masked threshold
TW316302B (en) * 1995-05-02 1997-09-21 Nippon Steel Corp
US5819215A (en) * 1995-10-13 1998-10-06 Dobson; Kurt Method and apparatus for wavelet based data compression having adaptive bit rate control for compression of digital audio or other sensory data

Also Published As

Publication number Publication date
EP1228507B1 (en) 2003-05-28
EP1228507A1 (en) 2002-08-07
WO2001033556A1 (en) 2001-05-10
DE69908433D1 (en) 2003-07-03

Similar Documents

Publication Publication Date Title
DE60004814T2 (en) QUANTIZATION IN PERCEPTUAL AUDIO ENCODERS WITH COMPENSATION OF NOISE LUBRICATED BY THE SYNTHESIS FILTER
DE69633633T2 (en) MULTI-CHANNEL PREDICTIVE SUBBAND CODIER WITH ADAPTIVE, PSYCHOACOUS BOOK ASSIGNMENT
DE69401514T2 (en) EFFICIENT ADAPTIVE BIT ALLOCATION FOR CODING METHODS AND CODING DEVICE IN COMPUTER EFFICIENCY
DE69006011T2 (en) LOW BITRATE TRANSFORMATION ENCODERS, DECODERS AND ENCODERS / DECODERS FOR HIGH QUALITY AUDIO APPLICATIONS.
DE60318835T2 (en) PARAMETRIC REPRESENTATION OF SPATIAL SOUND
DE69107841T2 (en) TRANSFORMATION ENCODER AND DECODER WITH ADAPTIVE BLOCK LENGTH, ADAPTIVE TRANSFORMATION AND ADAPTIVE WINDOW FOR HIGH QUALITY SOUND SIGNALS.
DE69924431T2 (en) Apparatus and method for dynamic bit distribution for audio coding
DE602004004168T2 (en) COMPATIBLE MULTICHANNEL CODING / DECODING
DE60310716T2 (en) SYSTEM FOR AUDIO CODING WITH FILLING OF SPECTRAL GAPS
DE602005006385T2 (en) DEVICE AND METHOD FOR CONSTRUCTING A MULTI-CHANNEL OUTPUT SIGNAL OR FOR PRODUCING A DOWNMIX SIGNAL
DE69210064T2 (en) Subband encoder and transmitter using this encoder
DE602004010885T2 (en) AUDIO-TRANS CODING
DE69333394T2 (en) Highly effective coding method and device
DE60303214T2 (en) PROCEDURE FOR REDUCING ALIASING FAILURES CAUSED BY THE ADAPTATION OF THE SPECTRAL CURVE IN REAL-VALUE FILTER BANKS
DE602005005640T2 (en) MULTI-CHANNEL AUDIOCODING
DE69826529T2 (en) FAST DATA FRAME OPTIMIZATION IN AN AUDIO ENCODER
DE4320990B4 (en) Redundancy reduction procedure
EP1609084B1 (en) Device and method for conversion into a transformed representation or for inversely converting the transformed representation
DE10345995B4 (en) Apparatus and method for processing a signal having a sequence of discrete values
WO2004021710A2 (en) Device and method for scalable coding and device and method for scalable decoding
DE602005005441T2 (en) AUDIOCODING BASED ON BLOCK GROUPING
EP1397799B1 (en) Method and device for processing time-discrete audio sampled values
EP0611516B1 (en) Process for reducing data in the transmission and/or storage of digital signals from several dependent channels
DE60024729T2 (en) SYSTEM AND METHOD FOR EFFICIENT TIRE ANTI-DIALING (TDAC)
EP1825356A2 (en) Method for producing a representation of a calculation result that is linearly dependent on the square of a value

Legal Events

Date Code Title Description
8364 No opposition during term of opposition