![]() |
![]() |
UIT-T J52 recommendation
now available on ATA HiFiSCOOP Audio Codecs
Since Audio standards such as ISO MPEG layer 1,2,3 are now available on many equipments, interoperability on public digital networks is not assumed between codecs from different vendors using the same "standard"because of the lack of telecommunications specifications such as error protection and framing information for 64 kbit/s digital channels synchronization. The UIT-T J52 defines these points:
This point is critical as ISO MPEG encoding is very sensitive to the transmission errors of the digital networks, a single error may cause a major degradation
In addition to the error detection CRC defined in the ISO MPEG Audio specification (which is not appropriate to real time audio transmission), a powerful Reed Solomon Error Correction code, allowing real time correction of huge burst of errors, is used. This method is widely used in telemetry space telecommunications as well as on Audio CD for correcting errors due to mechanical damage of the disk.
For non expert, curious readers let us try to explain how error correction works: Error correction relies on "Hamming distance" within all possible values (called codes) of the transmitted information. If any code transmitted is different from any other by at least 3 bits, any single bit error will give an "impossible " code and that it will be easy to find the original code as it is the only one which differs from one bit. In this case, we would say that the "Hamming distance: d" is 3 bits and that it has a correction capability of 1 bit. In general the correction capability c is c < d/2. What is true for bit is also true for bytes.
As most of the time, the information to be transmitted uses all the possible values ( "Hamming distance = 0), there is no possible correction . The trick is to compute, according some clever algorithm, and to add an extra information called redundancy which will not change the meaning of the original information but will create a "Hamming distance" allowing correction in the code word transmitted (code word = information + redundancy)
It is easy to understand that the correction capability will depend on the power of the algorithm (called later FEC for Forward Error Correction) and on the amount of redundancy. Some FECs are oriented to single errors correction, some others to burst of errors. In the UIT-T J52 the FEC selected (Reed Solomon called later RS) is working on bytes belongs to the second type.
The redundancy will be included in the ancillary data field of the frame, thus reducing the number of bytes used for encoding audio. The frame is divided into several parts called "code words ". Each code word includes the data to be protected ( variable length : L) and the redundancy which is always 4 bytes for each code word.in J52. The redundancy ratio will be 4 / L + 4. In J52 the maximum is about 10%.
Four redundancy bytes in a code word allow correction of up to 2 false bytes anywhere in each code word, not depending of the number of false bits in the wrong bytes! One bit wrong or all wrong are equally corrected! By interleaving N codes words in the frame the capability will be 2N bytes
For instance in layer 2 ( 384 kbit/s) with only 10 % redundancy ( 90% of the information is used for encoding the audio ) the correction capability is 58 bytes anywhere and in case of a single large burst of errors up to 464 bits ! This shows the extreme power of these codes. In J52 several modes of correction exist. In unequal error correction mode only one part of the information is protected (the most sensitive to errors such as header,scale factors). In equal error correction mode the whole frame is protected.
The principle used for Reed Solomon Error correction is to consider the n bytes of a code word (n < 256) of the frame (Bn, Bn-1,..Bi,..B1,B0) as the coefficients ( value from 0 to 255) of a polynom.P(X) as described below..
P(X) = Bn*X**n + ..+...+Bi*X**i+ ..+ B4*X**4.+ B3*X**3 + B2*X**2 + B1*X.B0
<------------Data protected = I (X)---------------> <-------Redundancy = R (X)----->
When n > 256, several RS codes must be used. Usualy interleaving is used for better burst correction capability. The symbol "*" is used for multiplication and "**" for exponential operation. One can see that P(X) = I(X) + R(X)
The Redundancy is the remainder of the division of I(X) by G(X) : R(X) = I(X) /G(X)
.
G(X) is a special polynom, called the generator polynom of the RS code, its degree is 4 ( so the degree of the remainder is 3). The division of 2 polynoms is very simple and similar to the division of integer number, just with an additional trick in the case of the RS code.
The 4 operations ( + , - , * , / ) are not defined in the classical integer domain but in a GF(2**8 ) Galois Field. Why to work in Galois field ? This may look strange to non experts.
The reason is that we have the same mathematical capabilities of the classical mathematics but in a finite Field (255 elements) and that the result of any operation between 2 elements of the Galois field (one element can be represented as a byte) ( addition, subtraction, multiplication and division ) is also an element belonging to the same field (represented by one byte). The Galois field is compliant with all axioms defining a mathematical Field structure. One can see immediately the interest of such properties.
To Come back to P(X) built by adding the remainder R(X) to the information to be protected I(X), it is easy to check that this polynom is a multiple of G(X) according Galois Field operations. This imply that the value of P(X) is "0" for the Four roots of the generator polynom G(X). Then P(X) is transmitted.
The receiver compute the value of the received polynom called PR(X) for the 4 roots of G(X). These values are called "Syndromes" (We have four Syndromes in J52). If this value is 0 for all, that means that no errors (or errors beyond the correction capability) have be added . In this case PR(X) = P(X) and we are in a perfect word. If not, errors have been added and we will have to locate and to compute them.
The methods to solve the problem (several exist ) is not obvious and needs some good mathematical background. Typically, most the method divide the problem in 2 problems. They define a locating polynom allowing to locate the position of errors (but not their value) and an evaluating polynom allowing computation of the value of the located errors. By using the relations between the locating polynom, the evaluating polynom and the syndromes, algorithms can solve the problem in an efficient way. Among the most popular methods are Berlekamp-Massey algorithm, Euclide extended algorithm.
ATA has used a method derived from these algorithms but optimized for DSP processing.
| HOME | PROFILE | PRODUCTS | NEWS | DEALERS | TECH. SUPPORT | CONTACT | SITE MAP |
| © Copyright 2007 ATA Audio Corporation, Inc.. All rights reserved. |