Stream-Compatible Bit Error Tolerance

The stream-conformant bit error resilience technique addresses the challenges of bit errors and latency in audio data compression by using a special rounding operation to force group parity values, enhancing error detection and correction while maintaining compatibility with existing standards.

JP7689986B2Active Publication Date: 2025-06-09QUALCOMM INC
View PDF 9 Cites 0 Cited by

Patent Information

Application Number
JP2022574808
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-06-11
Filing Date
2021-04-02
Publication Date
2025-06-09
Estimated Expiration
2041-04-02

AI Technical Summary

Technical Problem

Existing audio data compression and decompression techniques face challenges in reducing bit errors and latency while maintaining compatibility with existing standards, especially in applications like live audio transmission where delay is undesirable.

Method used

A stream-conformant bit error resilience technique that modifies encoded audio data streams without altering their structure, using a special rounding operation to force group parity values to predetermined values, thereby enhancing error detection and correction capabilities.

Benefits of technology

The technique effectively reduces bit errors and latency in audio data compression and decompression, ensuring compatibility with existing standards and improving the reliability of audio transmission applications.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007689986000003
    Figure 0007689986000003
  • Figure 0007689986000004
    Figure 0007689986000004
  • Figure 0007689986000005
    Figure 0007689986000005
Patent Text Reader

Abstract

A method, device, non-transitory computer-readable medium, and system for compressing audio data are described. The technique includes obtaining a sequence of digitized samples of an audio signal, performing a transform using the sequence of digitized samples to generate a plurality of spectral lines, obtaining a group of spectral lines from the plurality of spectral lines, and quantizing the group of spectral lines to generate a group of quantized values. Quantizing the group of spectral lines to generate the group of quantized values ​​may include performing a special rounding operation on selected spectral lines from the group of spectral lines, and using the special rounding operation to force a group parity value calculated for the group of quantized values ​​to a predetermined parity value. One or more data frames based on the group of quantized values ​​may be output.
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001]

[0001] Aspects of the present disclosure relate to the compression and decompression of audio data. Modern encoders and decoders for audio signals generally employ efficient transform-based techniques for the lossy compression / decompression of audio data. For example, some codec encoders and decoders are based on transforms such as the modified discrete cosine transform (MDCT). The encoded output is generally provided to a channel such as a transmission channel or a storage channel. On the opposite side of the channel, the encoded output is decoded to produce a reproduction of the original audio signal. The channel is typically coupled to noise and can introduce bit errors, which can degrade the quality of the reproduced audio signal. One approach to removing such bit errors is to re-transmit the encoded output. However, re-transmission is associated with delay, which is undesirable in applications such as live audio transmission, particularly in contexts such as video conferencing, multimedia streaming, voice calls, etc. Furthermore, standards for the compression and decompression of audio data already exist. Many devices incorporating the existing standards are already deployed in this field. New devices adopting an entirely new compression / decompression scheme may not be able to interoperate with such existing devices, which reduces the usefulness of the new compression / decompression scheme. Therefore, there is a significant need for improved techniques for reducing bit errors and latency in the compression and decompression of audio data in a manner that is compatible with devices implementing existing audio data compression / decompression standards.

Summary of the Invention

[0002]

[0002] Some embodiments are described in detail with respect to techniques for compressing audio data, and more particularly with respect to stream conformant bit error resilience. A stream conformant technique may modify a stream of encoded audio data without changing the nature or structure of the stream, and thus enables any decoder implementation based on the specification that determines the stream to decode that stream. Bit error resilience refers to the ability to detect and correct errors, such as the ability to tolerate bit errors. According to various embodiments, a data compression technique may include obtaining a sequence of digitized samples of an audio signal, performing a transform using the sequence of digitized samples to generate a plurality of spectral lines, obtaining a group of spectral lines from the plurality of spectral lines, and quantizing the group of spectral lines to generate a group of quantized values. Quantizing the group of spectral lines to generate a group of quantized values may include performing a specialized rounding operation on a spectral line selected from the group of spectral lines and using the specialized rounding operation to force a group parity value calculated for the group of quantized values to a predetermined parity value. The data compression technique may further include outputting one or more data frames based on the group of quantized values.

[0003]

[0003] A special rounding operation can be performed on a pre-rounding value associated with a selected spectral line. The pre-rounding value can comprise a floating-point value or a fixed-point value. The group of quantized values can comprise a group of integers or fixed-point values. The special rounding operation can flip the rounding direction used to round the pre-rounding value associated with the selected spectral line in order to force a group parity value calculated for the group of quantized values to a predetermined parity value.

[0004]

[0004] The selected spectral line can be selected because it is associated with a pre-rounding value having a minimal distance to a midpoint between two nearest possible quantized values compared to other spectral lines within a group of spectral lines. The selected spectral line can be selected based on a selection bias that selects higher frequency spectral lines. For example, when there is a tie between a first spectral line associated with a first pre-rounding value having a first distance to a midpoint between two nearest possible quantized values and a second spectral line associated with a second pre-rounding value having a second distance to a midpoint between two nearest possible quantized values, the first distance is equal to the second distance, and the first spectral line can be selected because it is associated with a higher frequency bin of the transform than the second spectral line.

[0005]

[0005] In one embodiment, the group of spectral lines may include a first spectral line associated with a first frequency bin and a first pre-rounding value, and a second spectral line associated with a second frequency bin and a second pre-rounding value. The first frequency bin may correspond to a higher conversion frequency bin than the second frequency bin. The first pre-rounding value may correspond to a first distance between two closest possible quantization values, and the second pre-rounding value may correspond to a second distance between two closest possible quantization values, where the second distance is smaller than the first distance. Nevertheless, the first spectral line may be selected over the second spectral line.

[0006]

[0006] One or more data frames may comprise a group of codewords based on a group of quantization values. The group of codewords may be generated from the group of quantization values using arithmetic encoding. One or more data frames may further comprise a rounding residual value for at least one quantization value within the group of quantization values. One or more data frames may further comprise a parity residual value for at least one quantization value within the group of quantization values. The rounding residual value and the parity residual value may be inserted instead of padding bits within one or more data frames.

[0007]

[0007] A special rounding operation may be used so that a sequence of groups of quantized values from a sequence of groups of spectral lines from multiple spectral lines has a sequence of predetermined parity values forcedly. The sequence of predetermined parity values may be used as a watermark. The watermark may indicate the use of the special rounding operation. The watermark may also indicate the presence of one or more parity residual values within one or more data frames. Further, the watermark may be associated with a specific provider of a device that implements a method for compressing audio data.

[0008]

[0008] One or more data frames may maintain compatibility with existing standards for audio data compression.

[0009]

[0009] Some embodiments are also described with respect to techniques for restoring audio data. The data restoration technique includes obtaining one or more data frames, obtaining a group of quantization values based on the one or more data frames, where the group of quantization values results from a compression-side quantization process that includes a special rounding operation performed on the spectral lines to force a parity value calculated for the group of quantization values to a predetermined parity value, calculating a receive-side parity value for the group of quantization values, comparing the calculated receive-side parity value with a predetermined parity value for the group of quantization values, performing a bit error operation to detect or correct at least one bit error in the one or more data frames in response to detecting a difference between the calculated receive-side parity value and the predetermined parity value for the group of quantization values, estimating a group of spectral lines based on the group of quantization values in consideration of the detection or correction of at least one bit error in the one or more data frames, performing an inverse transform using a plurality of spectral lines including the group of spectral lines to generate a sequence of digitized samples, and outputting the sequence of digitized samples as a digital representation of the audio signal. The one or more data frames may comprise a group of codewords, and the bit error operation may be performed to detect or correct at least one bit error in the group of codewords by utilizing multiple transmissions of the group of codewords.At least one bit error within a group of codewords can be corrected by obtaining a plurality of transmissions of the group of codewords, generating a plurality of reconstructed versions of the group of codewords, and selecting one reconstructed version of the group of codewords from the plurality of reconstructed versions of the group of codewords based on a match between (1) a calculated received parity value associated with one reconstructed version of the group of codewords and (2) a predetermined parity value.

[0010] A weak bit mask indicating the position of a possible bit error can be generated by comparing multiple transmissions of a group of codewords. Each of the multiple reconstructed versions of the group of codewords can be reconstructed by changing a bit at one of the bit positions indicated by the weak bit mask. The multiple transmissions of the group of codewords can comprise (1) an original transmission of the group of codewords and (2) one or more retransmissions of the group of codewords. One or more data frames can include one or more cyclic redundancy check (CRC) values for the group of codewords. Each of the one or more retransmissions of the group of codewords can be triggered by a failed CRC associated with a previous transmission of the group of codewords. A group of quantization values can be generated from the group of codewords using arithmetic decoding. One or more data frames can further comprise a rounding residual value for at least one quantization value within the group of quantization values. One or more data frames can further comprise a parity residual value for at least one quantization value within the group of quantization values. The rounding residual value and the parity residual value can be extracted from the positions of padding bits within one or more data frames. By considering the rounding residual value and the parity residual value, spectral lines from a group of spectral lines can be estimated with improved resolution. The rounding residual value may indicate a first estimated range of values of a spectral line, and the parity residual value may indicate a second estimated range of values of a spectral line adjacent to the first estimated range. The spectral line can be estimated based on the second estimated range of values.

[0011]

[0011] Aspects of the present disclosure are described by way of example.

Brief Description of the Drawings

[0012]

Figure 1

[0012] Schematic diagram of a system that can incorporate one or more embodiments of the present disclosure.

Figure 2

[0013] Block diagram of a codec encoder according to various embodiments of the present disclosure.

Figure 3

[0014] Diagram showing examples of some internal components of a quantizer unit according to an embodiment of the present disclosure.

Figure 4

[0015] Table showing an example of quantization error resulting from spectral line quantization performed using standard rounding rules.

Figure 5

[0016] Table showing the generation of parity residual values according to an embodiment of the present disclosure.

Figure 6

[0017] Block diagram of a codec decoder according to various embodiments of the present disclosure.

Figure 7

[0018] Diagram showing examples of some internal components of a de - quantizer unit according to an embodiment of the present disclosure.

Figure 8A

[0019] Diagram showing an exemplary code book that maps possible quantization values of spectral lines to corresponding codewords.

Figure 8B

[0020] Table showing details of how the transmitting side of a channel can quantize four spectral lines corresponding to four different frequency bins.

Figure 9A

[0021] Flowchart showing a process and sub - processes for compressing audio data according to an embodiment of the present disclosure.

Figure 9B

[0022] Flowchart showing a process for restoring audio data according to an embodiment of the present disclosure.

Figure 10

[0023] A block diagram of one embodiment of a user equipment (“UE”) that can be utilized as described in the embodiments described herein in connection with FIGS. 1-9.

Best Mode for Carrying Out the Invention

[0013]

[0024] Next, some exemplary embodiments will be described with respect to the accompanying drawings that form a part of this application. Specific embodiments in which one or more aspects of the present disclosure can be implemented are described below, but other embodiments may be used and various modifications can be made without departing from the scope of the present disclosure or the spirit of the appended claims.

[0014] Overall System

[0025] FIG. 1 shows a simplified diagram of a system 100 that can incorporate one or more embodiments of the present disclosure. System 100 shows a one-way path for audio signal propagation with a transmitting side and a receiving side. Although only a one-way path is shown, in many applications, another path in the opposite direction is implemented simultaneously, resulting in a two-way configuration. As shown, system 100 includes, on the transmitting side, a microphone 102, a sample and analog-to-digital (A / D) conversion unit 104, a codec encoder 106, an optional channel encoder 108, and a transmitter 110. The output of the transmitter is sent to a channel 112 that can represent a transmission channel or a storage channel. System 100 further includes, on the receiving side, a receiver 114, an optional channel decoder 116, a codec decoder 118, a digital-to-analog (D / A) conversion and signal reconstruction unit 120, and a speaker 122.

[0015]

[0026] On the transmitting side, the microphone 102 captures sound from the environment and converts the sound waves into an analog electrical signal. The analog electrical signal is sent to the sample and A / D conversion unit 104, which samples the analog electrical signal according to the sampling frequency and quantizes each sample by using a sample and quantization method such as pulse code modulation (PCM). This results in digitized samples representing the original audio signal. The sample and A / D conversion unit 104 may apply filtering and other signal conditioning techniques to the signal before and / or after A / D conversion. The sample and A / D conversion unit 104 sends the digitized samples to the codec encoder 106. The codec encoder 106 performs irreversible compression on the digitized samples to generate compressed digital data. The compressed digital data is sent to an optional channel encoder 108, which may perform channel coding on the compressed digital data to generate channel bits or symbols. Various types of channel coding techniques, including forward error correction (FEC) coding, may be implemented. The optional channel encoder 108 sends the channel bits / symbols to the transmitter 110. Alternatively, no channel encoder is used. In that case, the compressed digital data may be sent directly to the transmitter 110 without performing any channel coding, and the compressed digital data may be used as channel bits / symbols. The transmitter 110 processes the channel bits / symbols in a manner suitable for the channel 112. For example, the transmitter 110 may modulate the channel bits / symbols onto a carrier signal before sending the carrier signal modulated via the channel.

[0016]

[0027] Channel 112 may represent a transmission channel, a storage channel, or some other channel. The transmission channel can be a wired channel such as an over-the-air channel or a wireless channel. Transmitter 110 may use a transmission antenna to send a carrier signal modulated over the air. The storage channel may include a storage medium in which channel bits / symbols can be "written" and later retrieved. For example, transmitter 110 may utilize a writing device to write channel bits / symbols to the storage medium, where the channel bits / symbols can be retained. Channel 112 may expose the channel bits / symbols to noise, interference, and other degradations, resulting in errors.

[0017]

[0028] On the receiving side, the receiver 114 receives channel bits / symbols from the channel 112. The receiver 114 demodulates or otherwise processes the signal received from the channel 112 to generate the received channel bits / symbols. For example, the receiver 114 may utilize an antenna to receive the modulated carrier signal and perform demodulation to generate the received channel bits / symbols. In another example, the receiver 114 may utilize a reading device to read channel bits / symbols from the channel 112 as a memory channel. The received channel bits / symbols are sent to an optional channel decoder 116, which may perform channel decoding, such as FEC decoding, to convert the received channel bits / symbols into compressed digital data. The compressed digital data is sent to the codec decoder 118. Alternatively, no channel decoder is used. In that case, the channel bits / symbols are sent directly to the codec decoder 118 without performing any channel decoding, and the channel bits / symbols may be used as compressed digital data. The codec decoder 118 performs restoration on the compressed digital data to generate digitized samples of the audio data. The digitized samples are sent to the D / A and reconstruction unit 120, which performs digital-to-analog conversion and reconstruction, such as filtering and / or interpolation, to generate an analog electrical signal. The analog electrical signal is sent to the speaker 122, which may generate and project sound waves into the environment based on the analog electrical signal.

[0018] DCT / MDCT Transform

[0029] Figure 2 shows a block diagram of codec encoder 106 according to various embodiments of the present disclosure. As shown, codec encoder 106 includes a discrete cosine transform (DCT) encoder 202 and a quantizer unit 204. The digitized samples are obtained, for example, from the samples shown in FIG. 1 and A / D conversion unit 104 and sent to DCT encoder 202. Although a DCT encoder is shown, in other embodiments, a conversion encoder based on a different type of conversion may be used. DCT encoder 202 performs a DCT transform on the digitized samples to convert the digitized audio data from the time domain to the frequency domain. The output of the DCT transform comprises transform coefficients, which are generally referred to herein as "spectral lines". Each spectral line comprises a numerical value that reflects the magnitude of the digitized audio data within the corresponding frequency bin. The number of frequency bins may vary depending on the implementation. In some embodiments, DCT encoder 202 generates up to 400 spectral lines (i.e., for 400 different frequency bins) in each conversion operation.

[0019]

[0030] In practice, DCT encoder 202 performs such a conversion operation on a time-limited block of digitized samples. In some embodiments, consecutive blocks of digitized samples may overlap in time. DCT encoder 202 may perform a conversion operation on each block of digitized samples to generate up to 400 (or more) spectral lines for each block of digitized samples. DCT encoder 202 may perform such an operation on a first block of digitized samples, then a second block of digitized samples, then a third block of digitized samples, etc., to generate a first set of spectral lines, a second set of spectral lines, a third set of spectral lines, etc.

[0020]

[0031] As an example, an implementation form of the modified discrete cosine transform (MDCT) is described below. Here, for block t, to calculate N spectral lines X t (m); m = 0, ..., N - 1, 2N time-domain samples x t (k), k = 0, ..., 2N - 1 are used. In this example, since two subsequent blocks overlap by 50%, each block processes N new time-domain samples. To smooth the overlapping blocks of digitized samples, a windowing function w(k), k = 0, ..., 2N - 1 can be used. The MDCT in this example can be expressed as follows.

[0021]

Equation

[0022]

[0032] In the present disclosure, the term "spectral line" generally refers to the conversion output based on an audio signal and is not limited to the specific definition provided as an example in Equation 1 above. Other definitions of spectral lines may be adopted for DCT conversion or MDCT conversion. Furthermore, other definitions of spectral lines may be adopted for non-DCT type conversions.

[0023] Quantization and Data Frame Assembly

[0033] The quantizer unit 204 obtains each set of spectral lines from the DCT encoder 202 and generates a data frame comprising the compressed audio data. The quantizer unit 204 performs quantization on each set of spectral lines in order to compress the audio data. The greater the degree of quantization, the more compression is achieved. The term "data frame" is generally used herein to refer to the organization or configuration of the compressed audio data. The data frame may or may not be related to how the compressed audio data is packetized or otherwise configured for downstream conveyance. Specific examples of data frames according to particular embodiments of the present disclosure are described, but the organization of the compressed data within the data frame need not be limited to the formats shown in the presented embodiments. Exemplary operations of the quantizer unit 204 are described in more detail below.

[0024]

[0034] Figure 3 shows an example of some internal components of the quantizer unit 204 according to an embodiment of the present disclosure. To generate quantized values, quantization is performed by rounding the values representing the spectral lines. The value before rounding may be referred to as the "pre-rounding" value. In some embodiments, each pre-rounding value may be a floating-point value. In other embodiments, each pre-rounding value may be a fixed-point value. The value after rounding may be referred to as the "quantized" value. In some embodiments, each quantized value may be an integer. In other embodiments, each quantized value may be a fixed-point value. In the following exemplary examples, each pre-rounding value is shown as a floating-point value and each quantized value is shown as an integer. However, the techniques disclosed herein for leveraging rounding to apply parity requirements may be used for pre-rounding values represented as fixed-point values and / or quantized values represented as fixed-point values. Returning to Figure 3, the quantizer unit 204 may include a division unit 302, a rounding unit 304, and an arithmetic encoder 306. Here, the quantizer unit 204 performs quantization by scaling each spectral line using a global gain and then rounding the resulting gain-adjusted value to generate a quantized value, where the gain-adjusted value may be represented as a floating-point value. Here, each quantized value is an integer. For example, a spectral line may be sent to the division unit 302. A global gain value, such as 10, may also be sent to the division unit 302. The division unit 302 performs a division operation. In this example, the spectral line value is divided by 10. Also, the division unit 302 may output a floating-point value representing the gain-adjusted spectral line value. The floating-point value is sent to the rounding unit 304, and the rounding unit performs a rounding operation on the floating-point value to generate an integer value. The rounding operation may be performed using standard rounding rules, for example, rounding a floating-point value x to the nearest integer value y.When the floating-point value x is exactly in the middle between two integer values y and y + 1, a type-break convention such as always rounding up in the case of Thai, i.e., y = x + 0.5 (or always rounding down in the case of Thai, i.e., y = x - 0.5) can be used. The rounding unit 304 generates an integer value resulting from performing a rounding operation on the floating-point value. The rounding unit 304 can also generate a rounding residual value related to the rounding operation, and a parity residual value (described in a later section).

[0025]

[0035] FIG. 4 shows a table 400 illustrating an example of quantization error resulting from spectral line quantization performed using standard rounding rules. Four examples of spectral line quantization are shown. The four spectral lines have values 105, 201, 174, and 139, respectively. Each spectral line value is divided by a global gain value of 10. The division generates four floating-point values of 10.5, 20.1, 17.4, and 13.9. The four floating-point values are quantized via rounding using standard rounding rules to generate four integers having values 11, 20, 17, and 14, respectively. Each quantization is associated with a quantization error that is 0.5, 0.1, 0.4, and 0.1, respectively. Also shown in table 400 are four rounding residual values, which are -1, +1, +1, and -1, respectively. Each rounding residual value shown as either -1 or +1 indicates the direction in which the actual floating-point value lies along the real number line with respect to the integer value obtained as a result of the rounding operation. In other words, the rounding residual value indicates whether the quantized value (i.e., the integer value) is greater than or less than the actual value (i.e., the floating-point value). Each rounding residual value can, in some cases, be sent through a transmission channel or a memory channel along with each integer value (or the sign word representing the integer value). Doing so provides additional information regarding the quantized values, and these quantized values add extra resolution to each spectral line when each spectral line is reconstructed in a codec decoder on the opposite side of the channel.

[0026]

[0036] Returning to FIG. 3, after performing quantization to generate quantization values representing spectral lines, quantization unit 204 may perform source coding to encode the quantization values. The source coding operation may convert the quantization values into codewords according to an appropriate source coding method. In one embodiment of the present disclosure, arithmetic coding is used as the source coding method. Arithmetic coding refers to a class of coding methods that encode an entire message into a code sequence representing a fractional value q (where 0.0 ≦ q < 1.0). The coding algorithm is recursive with respect to symbols, that is, it operates on and encodes (decodes) one data symbol for each iteration or recursion. For each recursion, this algorithm continuously divides the interval on the number line between 0.0 and 1.0 and retains one of the divided parts as the new interval. The size of the sub-interval of a symbol is proportional to the estimated probability that the symbol will be the next symbol in the message. As shown in FIG. 3, arithmetic encoder 306 obtains from rounding unit 304 quantization values each representing a quantized spectral line. Arithmetic encoder 306 outputs an encoded codeword based on the quantization values. Since each quantization value may have a different occurrence probability, the total length of the concatenated part of the encoded codeword (i.e., the code sequence) is variable. Padding bits may be added to the variable-length arithmetic code sequence to form a fixed-length data frame (if a fixed-length data frame is desired).

[0027]

[0037] Figure 3 further shows the constitution of the data frame by the quantizer unit 204. In the illustrated example, the data frame may include, for each spectral line, an arithmetically encoded codeword corresponding to the quantization value representing the spectral line. The data frame may optionally include, for each spectral line, a rounding residual value associated with the quantization performed on the spectral line. The rounding residual value may take a value of +1 or -1, and these values may be represented using a "1" bit or a "0" bit, respectively. When extra space is available within the data frame (i.e., when padding bits exist), rounding residual values may be added instead of one or more padding bits to provide extra resolution for the reconstruction of the spectral lines at the receiving side of the channel. Further, the data frame may optionally include a parity residual value for a group of spectral lines. The following section describes in more detail the generation of such parity residual values. The data frame may further include additional padding bits, one or more sign bits indicating positive or negative signs for each spectral line, and a header that may include information such as various control parameters used in the data compression operation.

[0028]

[0038] In the embodiment shown in FIG. 3, the quantizer unit 204 performs both the quantization function and the data frame constitution function. In other embodiments, another frame assembly unit other than the quantizer unit may be used to constitute the data frame.

[0029] Error Resilience Using Parity

[0039] According to various embodiments of the present disclosure, error tolerance is provided by adding low-cost parity checks to each group of quantized spectral lines. The low-cost parity check can be achieved by utilizing a special rounding operation on one spectral line within the group of spectral lines. A special rounding operation can be used to force the group parity value calculated for the group of quantized spectral lines to a predetermined parity value.

[0030]

[0040] Referring again to FIG. 4, the quantization of four spectral lines is shown. In a simple example, the group of spectral lines can consist of these four spectral lines corresponding to the floating-point values of 10.5, 20.1, 17.4, and 13.9. A special rounding operation can be used to quantize one particular spectral line selected from the group of spectral lines. A standard rounding operation can be used to quantize the remaining spectral lines within the group. Such use of the special rounding operation for the selected spectral line can force the parity value calculated for the entire group of quantized spectral lines to a predetermined value. The special rounding operation does this by reversing the rounding direction used to round the floating-point number. That is, by choosing to "round up" instead of "round down" (or "round down" instead of "round up"), the special rounding operation changes the resulting quantized value to be an even integer instead of an odd integer (or an odd integer instead of an even integer), and thus reverses the result of the parity value calculated for the entire group of quantized spectral lines. In this way, a special rounding operation can be used to force the group parity value to a predetermined value (e.g., "0" or "1").

[0031]

[0041] For example, a spectral line having a floating-point value of 10.5 is rounded to the integer value 11 (in accordance with a standard rounding operation), resulting in a quantization error of 0.5. In order to force the group parity value to a specific predetermined value, instead, if the floating-point value of 10.5 is rounded to 10 (in accordance with a special rounding operation), the quantization error is still 0.5. Therefore, the floating-point value of 10.5 is an excellent candidate for applying a special rounding operation. In this case, the additional cost associated with using a special rounding operation instead of a standard rounding operation is 0. Either way, the rounding error is 0.5.

[0032]

[0042] Taking a different example, a spectral line having a floating-point value of 17.4 is rounded to the integer value 17 (in accordance with a standard rounding operation), resulting in a quantization error of 0.4. In order to force the group parity value to a specific predetermined value, instead, if the floating-point value 17.4 is rounded to 18 (in accordance with a special rounding operation), the quantization error becomes 0.6. Therefore, the floating-point value 17.4 is a less desirable candidate for applying a special rounding operation (compared to 10.5). In this case, the extra cost associated with using a special rounding operation instead of a standard rounding operation corresponds to the additional amount of the quantization error that occurred, i.e., 0.2, which is the difference between 0.4 and 0.6.

[0033]

[0043] According to one embodiment, a spectral line for which the floating-point value is closest to the midpoint between the two closest possible quantization values (in this case, the two closest integers) compared to other spectral lines in the group is selected as the spectral line for which the special rounding operation is performed. In other words, the spectral line for which quantization leads to the largest quantization error is selected to undergo the special rounding operation. In the exemplary group of spectral lines shown in FIG. 4, the spectral line having the floating-point value 10.5, which has the largest quantization error, may be selected to undergo the special rounding operation.

[0034]

[0044] For the group of four spectral lines shown in FIG. 4, the group parity value can be calculated as the parity value of the sum of the four integer values 11, 20, 17, 14. This sum corresponds to a group parity value of "0" (i.e., even parity). If it is determined that the group parity value is to be forced to "0", no additional steps are necessary. However, if it is determined that the group parity value is to be forced to "1" (i.e., odd parity), a special rounding operation can be performed on the selected spectral line associated with the largest quantization error (in this case, the spectral line having a floating-point value of 10.5). Here, the special rounding operation quantizes the floating-point value 10.5 to 10 instead of the integer value 11. This inverts the group parity value calculated for the entire group of four quantized spectral lines from "0" to "1". Thus, the desired group parity value is achieved.

[0035]

[0045] According to an additional embodiment, the selection of the particular spectral line on which the special rounding operation is performed can be further refined by introducing a selection bias that favors higher-frequency spectral lines. This bias can lead to an improvement in performance because the rounding error introduced into a higher-frequency spectral line can result in better audio quality compared to the same magnitude of rounding error introduced into a lower-frequency spectral line. In a particular embodiment, such a frequency bias can function as a "tiebreaker" in the spectral line selection process described previously, based on the magnitude of the rounding error.

[0036]

[0046] In a group of spectral lines, assume that between a first spectral line and a second spectral line, they are tied with respect to the magnitude of their respective rounding errors. For example, the first spectral line may have a floating-point value of 10.6, and the second spectral line may have a floating-point value of 8.6. In both cases, the distance to the midpoint between the two closest possible quantization values (in this case the two closest integers), i.e., 10.5 and 8.5 respectively, is 0.1. Both spectral lines are equally close to the ideal midpoint between the two closest integers. The first spectral line and the second spectral line have quantization errors of the same magnitude and are tied with respect to which is a better candidate to be selected as the spectral line for which a special rounding operation is performed. In such a situation, a frequency bias can be used to break the tie. As described above, when a transform such as MDCT is performed, the resulting spectral lines correspond to frequency bins. Each spectral line has a numerical value that reflects the magnitude of the digitized audio data within the corresponding frequency bin of the transform. Continuing with the same example, the first spectral line is associated with the bin corresponding to the first frequency, and the second spectral line is associated with the bin corresponding to the second frequency. If the first frequency is higher than the second frequency along the frequency spectrum, the first spectral line may be selected over the second spectral line as the selected spectral line for which a special rounding operation is performed. Such a technique can further improve the system for enforcing group parity values and can result in better audio performance.

[0037]

[0047] In other examples, a selection bias in favor of higher frequency spectral lines may be introduced in a more complicated manner. In some cases, spectral lines associated with larger rounding errors but higher frequency bins may be selected to improve overall audio performance. Thus, a trade-off may be made between the audio performance gain associated with selecting higher frequency spectral lines and the performance loss associated with selecting spectral lines with a lower magnitude of rounding errors. In one implementation, such performance gains and losses are quantified into specific values, and an evaluation is performed based on such values ​​to resolve the audio performance trade-off. For example, a first spectral line may be associated with a first frequency bin and a first floating-point value that is a first distance from the midpoint between the two nearest integers. A second spectral line may be associated with a second frequency bin and a second floating-point value that is a second distance from the midpoint between the two nearest possible quantized values. In a frequency spectrum, a first frequency bin may be associated with a first frequency bin that is a first floating-point value that is a first distance from the midpoint between the two nearest possible quantized values. In some cases, a first frequency bin may be associated with a second frequency bin that is a second floating-point value that is a second ... f However, the second floating point number may be ΔKHz higher than the first floating point value, since the second floating point number is closer to the ideal midpoint between the closest possible quantized values ​​than the first floating point number. M For example, by using a look-up table, the selection process can select Δ f It may be determined that the frequency difference in KHz translates into a difference in audio performance associated with the rounding of P1. At the same time, another look-up table may be used to determine the difference in frequency in the relevant frequency range, Δ M It may be evident that a difference in rounding error of P1 translates into a difference in audio performance of P2. If P1>P2, the selection process may select the first spectral line over the second spectral line as the spectral line in the group to which the special rounding operation is applied. Otherwise, the selection process may select the second spectral line over the first spectral line as the spectral line in the group to which the special rounding operation is applied.

[0038]

[0048] According to further additional embodiments of the present disclosure, the size of each group, i.e., the number of spectral lines included in each group, can be determined and selected in advance based on a balance of competing considerations. On the one hand, the smaller the group size, the greater the bit error tolerance protection provided. This is because as the group size decreases, the number of codewords generated decreases, which means that there are fewer bit positions to detect or correct bit errors using knowledge of the group parity value. Therefore, bit error detection or correction provided by the group parity value is expected to be stronger for groups with a smaller group size compared to groups with a larger group size. On the other hand, the smaller the group size, the lower the likelihood of finding large quantization errors within the group. Thus, a smaller group size means that the extra cost associated with using special rounding operations for the selected spectral lines can be greater. In other words, the smaller the group size, the lower the likelihood of finding ideal candidates (or candidates close to ideal), such as the spectral line with the floating-point value 10.5 shown in FIG. 4, for which a special rounding operation with little or no penalty is applied.

[0039]

[0049] Data frames generated using the bit error tolerance techniques disclosed herein can maintain compatibility with one or more existing standards for audio data compression. Such existing standards may be based on quantization of spectral lines using only standard rounding operations. For example, a data frame generated using a special rounding operation to enforce a particular group parity value may differ only with respect to one selected spectral line having a quantization value resulting from a "round up" (or "round down" instead of "round up") selection instead of "round down". Typically, this results in a small difference in quantization error for one selected spectral line within a group of spectral lines. A codec decoder constructed according to an existing audio data compression standard using standard rounding operations can receive and recover data frames transmitted from a transmitter incorporating the techniques for forced group parity values disclosed herein. Similarly, a codec decoder incorporating the techniques disclosed herein can receive and recover a data frame transmitted from a transmitter constructed according to an existing audio data compression standard using standard rounding operations. Thus, the techniques of the present disclosure for bit error tolerance can facilitate interoperability with devices constructed based on existing audio data compression standards.

[0040]

[0050] The benefits of the bit error tolerance techniques disclosed herein relate to cumulative parity. A characteristic of an arithmetically encoded stream is that the data may need to be read in order. The encoding scheme used in a codec encoder may cause a change in the length of the encoded symbol / codeword when an error occurs. When this happens, the parity check after the error may fail. The parity check method disclosed herein may guarantee the integrity of all data before the current group of spectral lines and all data including that group. Thus, the parity check method can protect against two or more bit errors in each group of spectral lines, except for the last group.

[0041]

[0051] More generally, the parity check method may be applied to groups of data that include other types of information than spectral lines. As long as groups of data are sent and there are values quantized within each group, the use of special rounding rules to enforce a parity value on each group may be employed. In fact, special operations may be performed on data that is part of a group of data being sent but is not a spectral line.

[0042]

[0052] In the above embodiments, for ease of explanation, scalar quantization of spectral lines was described. In other embodiments, more advanced quantization techniques may be utilized. For example, non-linear quantization lookup tables, vector quantization (e.g., pyramid vector quantization), quantization by synthesis, dictionary lookups, etc. may be used instead of simple scalar quantization. More advanced quantization techniques may add complexity but may also improve compression, for example, in terms of providing better audio performance. As just one example, in the case of vector quantization, a sequence of k spectral lines is viewed as a k-dimensional vector [x 1 ,x 2 ,...,x k , and a k-dimensional vector [y 1 ,y 2 ,...,y nIt can be quantized by selecting the closest matching vector from a set of . The disclosed parity check method can be applied to the quantization values obtained using such advanced quantization techniques.

[0043]

[0053] Further, in the above-described embodiments, for ease of explanation, spectral line quantization and source coding (i.e., entropy coding) were described as two separate steps. In other embodiments, spectral line quantization and source / entropy coding can be incorporated into a combined step. For example, a set of valid codewords that make up an alphabet can be created. The spectral line values may be directly mapped onto the codewords such that the quantization values are reflected in the alphabet (e.g., through the use of convolutional codes). Various considerations regarding quantization, such as quantization error and frequency bias, can be taken into account when constructing and mapping the codewords.

[0044]

[0054] Further, in the foregoing embodiments, parity was described with respect to the selection between even-bit values and odd-bit values. In other embodiments, parity can be more broadly defined as an option for selection from among a plurality of possible source / entropy coding symbols (e.g., codewords). The option of selecting one particular source / entropy coding symbol reflects the imposed "parity". A cost function can be used to select the source / entropy coding symbol that minimizes the quantization error, achieves things such as frequency bias, and further maintains the desired parity value. Such techniques can be suitable for implementations including Huffman coding, asymmetric numeral system (ANS) coding, etc. as source / entropy coding methods.

[0045] Parity Residual

[0055] FIG. 5 shows Table 500 illustrating the generation of parity residual values according to an embodiment of the present disclosure. The example shown in FIG. 5 is based on a scenario where different spectral lines are selected for applying special rounding operations to enforce group parity values. For example, another group of spectral lines having floating-point values of 20.1, 17.4, 13.9, and 12.3 can be considered. In this other group of spectral lines, quantizing the floating-point values results in quantization values of 20, 17, 14, and 12, respectively. The quantization errors are 0.1, 0.4, 0.1, and 0.3, respectively. The spectral line having the largest quantization error is the spectral line corresponding to the floating-point value 17.4, and this is selected as the spectral line on which a particular rounding operation is performed. The sum of the quantization values 20, 17, 14, and 12 corresponds to a group parity value of "1" (i.e., odd parity). If it is determined that the group parity value is to be forced to "0" (i.e., even parity), the special rounding operation can be applied to the floating-point value 17.4.

[0046]

[0056] Referring to FIG. 5, using a standard rounding operation, the floating-point value 17.4 is rounded to the quantization value 17. This corresponds to a quantization error of 0.4 and a rounding residual value of +1. The rounding residual value of +1 indicates that the actual floating-point value is in the positive direction along the real number line with respect to the quantization value 17. Specifically, the rounding residual value of +1 indicates the estimated range [17, 17.5) for that spectral line. To support additional resolution in the reconstruction of the spectral line performed at the codec decoder on the opposite side of the channel, the rounding residual value of +1 can be included in the data frame.

[0047]

[0057] However, to force the group parity value to "0", a special rounding operation is used instead. As a result, the floating-point value 17.4 is rounded to the quantization value 18. This corresponds to a quantization error of 0.6 with a rounding residual error of -1. The rounding residual value of -1 indicates that the actual floating-point value is in the negative direction along the real number line with respect to the quantization value 18. Specifically, the rounding residual value of -1 indicates the estimated range [17.5, 18) for that spectral line.

[0048]

[0058] Figure 5 also shows the parity residual values. A parity residual value of 0 indicates that no special rounding operation is used. In such a case, the estimated range indicated by the rounding residual remains valid. In contrast, a parity residual value of 1 indicates that a special rounding operation is used. In that case, the estimated range indicated by the rounding residual may become invalid. Instead, the parity residual value of 1, together with the rounding residual value of -1, indicates the new estimated range [17, 17.5) for the spectral line.

[0049]

[0059] The logic behind the new estimated range can be explained as follows. According to this embodiment, the rounding residual value of -1 only indicates that the actual floating-point value is in the negative direction along the real number line with respect to the quantization value 18. In other words, the floating-point value is "rounded up" to reach the quantization value 18. However, without further information, as a result of the following, it is unclear whether the floating-point value was "rounded up" to the quantization value 18.

[0050] (1) Quantization using the standard rounding operation. That is, in this case, the estimated range for the floating-point number is [17.5, 18). Or, (2) Quantization using the special rounding operation. That is, in this case, the estimated range for the floating-point number is [17, 17.5).

[0051]

[0060] Knowing the parity residual value solves this ambiguity. Specifically, a parity residual value of 1 indicates that a special rounding operation was used. Thus, the new estimated range for the value of the spectral line is determined to be [17, 17.5). The above shows an example of a rounding residual value indicating the first estimated range of the value of the spectral line and a parity residual value indicating the second estimated range of the value of the spectral line adjacent to the first estimated range.

[0052]

[0061] As previously explained, the data frame may contain one or both of the rounding residual value and the parity residual value depending on whether there is available space within the padding bits of the data frame in some cases. In the example shown in FIG. 5, the floating-point value 17.4 is rounded to the quantization value 18 using a special rounding operation. If neither the rounding residual value nor the parity residual value is included in the data frame, the codec decoder may only be able to estimate the value of the spectral line based on the range [17.5, 18.5). If only the rounding residual value is included in the data frame but the parity residual value is not, the codec decoder may estimate the value of the spectral line based on the range [17.5, 18). Finally, if both the rounding residual value and the parity residual value are included in the data frame, the codec decoder may estimate the value of the spectral line based on the range [17, 17.5), that is, with higher resolution.

[0053] Watermarking

[0062] In this way, the sequence of groups of quantized spectral lines can be parity-adjusted to achieve a sequence of predetermined parity values. For example, it may be determined that all groups of quantized spectral lines are forced to have a group parity value of "0" (i.e., even parity). By forcing all groups of quantized spectral lines to have a group parity value of "0", the transmitting side of the channel provides an expected pattern of group parity values (all "0" in this example) in the compressed data. The receiving side of the channel having knowledge of the expected pattern of group parity values can use such knowledge to detect or correct bit errors, as will be described in more detail in the following sections.

[0054]

[0063] The expected pattern of group parity values can be used as a watermark. The watermark can serve various functions. In one embodiment, the watermark indicates the use of a special rounding operation. In response to detecting such a watermark, the receiving side of the channel can utilize group parity to detect or correct bit errors. Additionally or alternatively, the watermark can indicate the presence of one or more parity residual values within a data frame. In response to detecting such a watermark, the receiving side of the channel can extract the parity residual value from the data frame and use this parity residual value to reconstruct the selected spectral lines at an additional resolution. Additionally or alternatively, the watermark can be associated with a particular provider of an audio data compression method. The presence of such a watermark can indicate the manufacturer or designer of the device that generated the compressed audio data having the watermark.

[0055] Data Frame De-assembly and De-quantization

[0064] FIG. 6 shows a block diagram of codec decoder 118 according to various embodiments of the present disclosure. As shown, codec decoder 118 includes an inverse quantizer unit 602 and an inverse discrete cosine transform (inverse DCT) unit 604. A data frame is obtained, for example, from an arbitrary channel decoder 116 shown in FIG. 1 and sent to inverse quantizer unit 602. Alternatively, if a channel decoder is not implemented, the data frame can be obtained directly from receiver 114 shown in FIG. 1. Inverse quantizer unit 602 obtains a data frame comprising compressed audio data and generates a set of spectral lines. A more detailed description of inverse quantizer unit 602 is shown below.

[0056]

[0065] FIG. 7 shows an example of some internal components of inverse quantizer unit 602 according to an embodiment of the present disclosure. As shown, inverse quantizer unit 602 may include an arithmetic decoder 702 and a spectrum estimator 704. Inverse quantizer unit 602 extracts various portions of data from each data frame to estimate a set of spectral lines representing compressed audio data. Arithmetically encoded codewords can be extracted from the data frame and transferred to arithmetic decoder 702. Arithmetic decoder 702 converts the codewords into quantization values (e.g., integers or fixed-point numbers). Each quantization value can represent a quantized spectral line.

[0057]

[0066] Before performing inverse quantization, the inverse quantizer unit 602 may utilize knowledge of group parity values for each group of quantization values to detect or correct bit errors. Specifically, the inverse quantizer unit 602 may calculate a received-side parity value for a group of quantization values obtained from a data frame. The inverse quantizer unit 602 may compare the received-side parity value for the group of quantization values with a known predetermined parity value for the group of quantization values. In response to detecting a difference between the calculated received-side group parity value for the group of quantization values and the predetermined group parity value for the group of quantization values, the inverse quantizer unit 602 may perform one or more bit error operations to detect or correct at least one bit error within the data frame.

[0058] Bit Error Detection and Correction

[0067] Figures 8A and 8B show a simplified example of error detection and correction using group parity values according to one embodiment of the present disclosure. Here, a group of four quantized spectral lines is sent along with a predetermined group parity value. FIG. 8A shows an exemplary codebook 800 that maps possible quantization values of the spectral lines to corresponding codewords. For ease of explanation, fixed-length codewords are shown. In different implementations, variable-length codewords may be used, as described above in the case of arithmetic coding. In particular, the length of the codewords may vary based on the occurrence probability of each codeword. The codebook 800 includes four codewords 0x42, 0x67, 0xC3, and 0xD3 corresponding to four possible quantized spectral line values, namely the integers 8, 4, 11, and 14, respectively. FIG. 8B shows a table 810 that details how the transmitting side of the channel quantizes four spectral lines corresponding to four different frequency bins. Each spectral line is quantized to one of four possible quantization values 8, 4, 11, or 14 found in the codebook 800. For each spectral line, table 810 shows the global gain, the value after division by the global gain, the quantization value, the new quantization value for forcing parity, the codeword, and the binary version of the codeword. Further, table 810 shows that the sum of the column of four quantization values (i.e., integers) is 33, indicating an odd parity. Also, table 810 shows the sum of the column of four new quantization values that forces the group parity to be 34, which is an even parity.

[0059]

[0068] Here, it is assumed that the predetermined group parity value is "0" (i.e., even parity). That is, on the transmission side of the channel, the group parity value is forced to be even parity. As can be seen in Table 810, the spectral line with a floating-point value of 10.5 is selected for a special rounding operation to force the group parity value to be even parity. Instead of rounding the floating-point value 10.5 to the quantization value 10, the floating-point value is rounded to the new quantization value 11. This forces the sum of the four new quantization values to 34, which has even parity and meets the requirements of the predetermined group parity value.

[0060]

[0069] A simple data packet generated in the transmitter can be as follows. 11000011110000110100001001100111+CRC

[0070] Here, the packet comprises concatenations of various codewords taken from a codebook 800 corresponding to quantization values of groups of spectral lines. Further, a Cyclic Redundancy Check (CRC) value is also added to and transmitted with the packet. In conventional codec techniques, data packets may be sent several times, such as three times, five times, or seven times. Due to the benefit of having a very large number of transmissions of a packet, the receiving hardware (e.g., within the receiver 114 shown in FIG. 1) may be able to repair the packet using majority voting. That is, if the majority of the transmissions (e.g., four out of seven transmissions) result in the same column of codewords, the repeated column of codewords may be selected as the repaired packet. In contrast, through the use of a predetermined group parity value according to an embodiment of the present disclosure, packet repair may be possible with fewer transmissions. In the example described below, the data packet is first transmitted and retransmitted only once, which does not enable the receiving hardware to repair the packet alone. However, the receiving hardware generates a “weak bit mask” and transfers it to the codec decoder. Using the weak bit mask and the knowledge of the predetermined parity value for the group of quantized spectral lines, the codec decoder can repair the packet and restore the correct values for the quantized spectral lines.

[0061]

[0071] For illustration, some basic scenarios are shown below. A simple data packet generated at the transmitter is sent over a channel. The channel has noise and may introduce bit errors. Here, the first transmission of the data packet experiences a bit error. The next packet is seen at the receiver (underlined bit errors). 1100001111000011010000100110 1 111+CRC

[0072] When the receiving hardware decodes this packet, the CRC fails. This triggers a retransmission of the packet. At this time, the retransmission of the packet introduces bit errors at different bit positions (underlined bit errors). 110 1 0011110000110100001001100111 + CRC

[0073] Also, when the hardware on the receiving side decodes the packet, the CRC fails. Accordingly, the hardware on the receiving side generates a weak bit mask. The weak bit mask indicates all bit positions where two transmissions of the packet differ. The weak bit mask is sent to the codec decoder together with one of the received packets. In this example, the weak bit mask is shown below. 00010000000000000000000000001000

[0062] Repair Example 1: Using Last Received Packet

[0074] In the first repair example, the last received packet (i.e., the second transmission) is used to reconstruct the original packet. Also, the last received packet is as follows. 11010011110000110100001001100111

[0075] This corresponds to the following decoded codeword. 0xD3 0xC3 0x42 0x67

[0076] Referencing these decoded codewords using codebook 800 results in the following group of quantized spectral values. 14, 11, 8, 4 (parity = odd) → incorrect

[0077] This group of quantized spectral values has an odd parity, and the odd parity is not the expected group parity value. As a first step, the codec decoder may attempt to change the first bit of the weak bit mask. Doing so results in a new packet. 11000011110000110100001001100111

[0078] This corresponds to the following decoded codeword. 0xC3 0xC3 0x42 0x67

[0079] Referring to these decoded codewords using codebook 800 results in the following groups of quantized spectral values. 11, 11, 8, 4 (parity = even) → correct

[0080] This group of quantized spectral values has an even parity, and the even parity is the expected group parity value. This confirms that the group of quantized spectral values is correct.

[0063]

[0081] Example 2: Using First Received Packet

[0082] In the second repair example, the first received packet (i.e., the first transmission) is used to reconstruct the original packet. Similarly, the first received packet is as follows. 11000011110000110100001001101111

[0083] This corresponds to the following decoded codeword. 0xC3 0xC3 0x42 0x6F

[0084] Note that 0x6F is not a valid codeword (i.e., 0x6F does not exist within codebook 800). This indicates that an error exists. As a first step, the codec decoder may attempt to change the first bit of the weak bitmask. Doing so results in a new packet. 11010011110000110100001001101111

[0085] This corresponds to the following decoded codeword. 0xD3 0xC3 0x42 0x6F

[0086] 0x6F is not yet a valid codeword, indicating that an error still exists. Next, the codec decoder may attempt to change the next bit within the weak bitmask. Doing so results in a different new packet. 11000011110000110100001001100111

[0087] This corresponds to the next decoded codeword. 0xC3 0xC3 0x42 0x67

[0088] Referencing these decoded codewords using codebook 800 results in the following group of quantized spectral values. 11, 11, 8, 4 (parity = even) → correct

[0089] This group of quantized spectral values has an even parity, and the even parity is the expected group parity value. This confirms that the group of quantized spectral values is correct.

[0064]

[0090] The above example shows that the codec decoder may generate multiple reconstructed versions of a group of codewords and select one of the reconstructed versions of the group of codewords based on the match between (1) the calculated received parity value associated with the reconstructed version of the group of codewords and (2) a predetermined group parity value. Bit error detection and correction techniques may utilize additional information such as a weak bitmask generated from the comparison of multiple transmissions, CRC results, knowledge of the codebook used to encode the quantized spectral lines. Referring again to FIG. 7, the inverse quantizer unit 602 may use techniques such as those described above to detect or correct bit errors to generate a corrected version of each group of quantized spectral lines.

[0065]

[0091] In some of the embodiments described above, CRC is used to identify and / or otherwise process errors. However, the techniques of the present disclosure are not limited to implementations that employ the use of CRC. Alternatively or in addition, other types of error correction coding schemes may be used, including Reed Solomon codes, turbo codes, Viterbi algorithms, and the like.

[0066]

[0092] Next, inverse quantization is described in more detail. According to one embodiment of the present disclosure, the spectrum estimator 704 within the inverse quantizer unit 602 receives quantization values representing spectral lines, round-off residue values, and parity residue values (if available), as well as a global gain value (e.g., 10). Based on these values, the spectrum estimator 704 estimates an inverse quantized version of the set of spectral lines. The inverse quantized spectral lines may be represented as floating point values or fixed point values according to various embodiments. The spectrum estimator 704 may do so using operations such as interpolation, filtering, etc. to construct the set of spectral lines. Basically, the spectrum estimator 704 attempts to perform the inverse of the quantization step performed by the quantizer unit 204 on the transmit side of the channel.

[0067] Inverse DCT / MDCT Transform

[0093] Returning to FIG. 6, the inverse DCT unit 604 receives the inverse quantized spectral lines generated by the inverse quantizer unit 602. As described, the set of spectral lines representing the full range of frequency bins may comprise up to 400 (or more) spectral lines. Each spectral line may correspond to a particular frequency bin and may reflect the magnitude of the digitized audio data within the corresponding frequency bin. The inverse DCT unit 604 may perform an inverse transform operation on each set of spectral lines to generate a time-limited block of digitized samples of the audio data. For example, the inverse modified discrete cosine transform (inverse MDCT) may be represented as follows.

[0068]

Number

[0069]

[0094] The inverse MDCT operation shown in Equation 2 corresponds to the MDCT operation shown in Equation 1 described above. The digitized samples of the restored audio data generated by the inverse DCT unit 604 are sent to the D / A and reconstruction unit 120 shown in FIG. 1.

[0070]

[0095] As previously described with reference to FIG. 1, the D / A and reconstruction unit 120 receives the digitized samples of the restored audio data and performs digital-to-analog conversion and reconstruction such as filtering and / or interpolation to generate an analog electrical signal. The analog electrical signal is sent to the speaker 122, and the speaker can generate and project sound waves into the environment based on the analog electrical signal.

[0071]

[0096] Figure 9A shows a flowchart illustrating process 900 and sub-process 920 for compressing audio data according to an embodiment of the present disclosure. Process 900 includes steps 902, 904, 906, 908, and 910. Sub-process 920 includes steps 922 and 924. In step 902, a sequence of digitized samples of an audio signal is obtained. The digitized samples can be obtained, for example, from the samples shown in FIG. 1 and the A / D unit 104. In step 904, a transform is performed using the sequence of digitized samples to generate a plurality of spectral lines. This transform can be, for example, an MDCT performed by the DCT unit 202 of FIG. 2. In step 906, a group of spectral lines is obtained from the plurality of spectral lines. An exemplary group is shown in FIG. 4. In step 908, the group of spectral lines is quantized to generate a group of quantization values. Here, quantizing the group of spectral lines to generate a group of quantization values can include steps within sub-process 920. More specifically, in step 922, a special rounding operation is performed on the spectral lines selected from the group of spectral lines. In step 924, a special rounding operation is used to force the group parity value calculated for the group of quantization values to a predetermined parity value. The use of such a special rounding operation to force the group parity value to a predetermined parity value is shown, for example, in the descriptions regarding FIGS. 3 and 4. Returning to process 900, in step 910, one or more data frames based on the group of quantization values are output. An example of such an output data frame is shown in FIG. 3.

[0072]

[0097] Figure 9B shows a flowchart illustrating a process 940 for restoring audio data according to an embodiment of the present disclosure. Process 940 includes steps 942, 944, 946, 948, 950, 952, 954, and 956. In step 942, one or more data frames are acquired. The data frames can be acquired, for example, from the RX unit 114 or the channel decoder unit 116 of FIG. 1. In step 944, a group of quantization values based on the one or more data frames is acquired. The quantization values can be acquired, for example, as the integer values shown in FIG. 7. In step 946, a received parity value is calculated for the group of quantization values. In step 948, the calculated received parity value is compared with a predetermined parity value for the group of quantization values. In step 950, in response to detecting a difference between the calculated received parity value and the predetermined parity value for the group of quantization values, a bit error operation is performed to detect or correct at least one bit error in the one or more data frames. Examples of such parity value calculation, comparison, and use in bit error operations are described in the context of FIGS. 8A and 8B. In step 952, a group of spectral lines is estimated based on the group of quantization values, taking into account the detection or correction of at least one bit error in the one or more data frames. The group of spectral lines can be estimated, for example, by the spectral estimator unit 704 of FIG. 7. In step 954, an inverse transform can be performed using a plurality of spectral lines including the group of spectral lines to generate a sequence of digitized samples. The inverse transform can be performed, for example, by the inverse DCT unit 604 of FIG. 6. In step 956, the sequence of digitized samples can be output as a digital representation of the audio signal. The sequence of digitized samples can be output, for example, by the codec decoder 118 of FIG. 1.

[0073]

[0098] FIG. 10 is a block diagram of one embodiment of a user equipment (“UE”) 1000 that can be utilized as described in the embodiments described herein in connection with FIGS. 1-9. The UE 1000 can implement a portion of the audio path shown by the system 100 of FIG. 1. In a particular audio path, a first instance of the UE 1000 may function as a transmitter side, and a second instance of the UE 1000 may function as a receiver side. In such an example, the first instance of the UE 1000 may implement the transmitter side components of the system 100, including the microphone 102, sample and A / D unit 104, codec encoder 106, channel encoder 108, and transmission hardware 110 shown in FIG. 1. The second instance of the UE 1000 may implement the receiver side components of the system 100, including the receiver 114, channel decoder 116, codec decoder 118, D / A and reconstruction unit 120, and speaker 122 shown in FIG. 1. The UE 1000 also supports two-way communication. Thus, a second audio path can be established simultaneously in the reverse direction. In the second audio path, the second instance of the US1000 may function as the transmitter side, and the first instance of the UE 1000 may function as the receiver side, and the components within the two instances of the UE 1000 are utilized in a similar mirrored manner.

[0074]

[0099] FIG. 10 is only intended to provide a generalized view of the various components of the UE 1000, and it should be noted that any or all of these components may be utilized as appropriate. In other words, since the UE can vary greatly in function, the UE may include only a portion of the components shown in FIG. 10. In some cases, the components shown by FIG. 10 may be localized to a single physical device and / or distributed among various networked devices disposed at different physical locations.

[0075]

[0100] UE1000 is shown as comprising hardware elements that can be electrically coupled via bus 1005 (or communicate in other ways as appropriate). The hardware elements may include, without limitation, one or more general-purpose processors, one or more dedicated processors (such as digital signal processing (DSP) chips, graphics acceleration processors, application-specific integrated circuits (ASICs), etc.), and / or other processing structures or means, and may include a processing unit 1010, which may be configured to execute one or more of the methods described herein. As shown in FIG. 10, some embodiments may have another DSP1020 depending on the desired functionality. For example, the processing unit and / or DSP1020 may implement the codec encoder 106, channel encoder 108, channel decoder 116, and codec decoder 118 shown in FIG. 1.

[0076]

[0101] UE1000 may also include one or more input devices 1070, which may include, without limitation, one or more touchscreens, touch pads, microphones, buttons, dials, switches, etc. For example, input device 1070 may include the microphone 102 and sample and A / C unit 104 shown in FIG. 1. Further, UE1000 may also include one or more output devices 1015, which may include, without limitation, one or more displays, light-emitting diodes (LEDs), speakers, etc. For example, output device 1015 may include the D / A and reconstruction unit 120 and speaker 122 shown in FIG. 1.

[0077]

[0102] UE1000 may include a wireless communication interface 1030, which may include, but is not limited to, a modem, a network card, an infrared communication device, a wireless communication device, and / or a chipset (such as a Bluetooth (registered trademark) device, an IEEE802.11 device, an IEEE802.15.4 device, a Wi-Fi (registered trademark) device, a WiMAX (registered trademark) device, cellular communication equipment, etc.), which may enable UE1000 to communicate via the network described in this specification with respect to FIGS. 1-9. The wireless communication interface 1030 may enable data communication with a network, an eNB, an ng-eNB, a gNB, and / or any other network component, computer system, and / or any other electronic device described in this specification. The communication may be performed via one or more wireless communication antennas 1032 that transmit and / or receive wireless signals 1034. According to some embodiments, the wireless communication antenna 1032 may comprise a plurality of individual antennas, an antenna array, or any combination thereof.

[0078]

[0103] Depending on the desired functionality, the wireless communication interface 1030 may comprise another transceiver, receiver, and transmitter, or any combination of a transceiver, transmitter, and / or receiver, to communicate with a base station (e.g., eNB, ng-eNB, and / or gNB), as well as other terrestrial transceivers such as wireless devices and access points. For example, the wireless communication interface 1030 may implement the transmitter 110 and the receiver 114 shown in FIG. 1. The UE 1000 may communicate with various data networks that may comprise various network types. For example, a wireless wide area network (WWAN) may be a code division multiple access (CDMA) network, a time division multiple access (TDMA) network, a frequency division multiple access (FDMA) network, an orthogonal frequency division multiple access (OFDMA) network, a single carrier frequency division multiple access (SC-FDMA) network, WiMAX (IEEE802.16), etc. A CDMA network may implement one or more radio access technologies (RATs) such as cdma2000, wideband CDMA (WCDMA (registered trademark)), etc. Cdma2000 includes the IS-95, IS-2000, and / or IS-856 standards. A TDMA network may implement a global system for mobile communications (GSM (registered trademark)), a digital advanced mobile phone system (D-AMPS), or some other RAT. An OFDMA network may employ LTE (registered trademark), LTE advanced, new radio (NR), etc. 5G, LTE, LTE advanced, NR, GSM, and WCDMA are described in 3GPP (registered trademark) documents. Cdma2000 is described in documents of a group called the "3rd Generation Partnership Project 2" (3GPP2). The 3GPP and 3GPP2 documents are publicly available. A wireless local area network (WLAN) may also be an IEEE802.11x network, and a wireless personal area network (WPAN) may be a Bluetooth network, IEEE802.15x, or some other type of network.Also, the techniques described herein can be used for any combination of WWAN, WLAN, and / or WPAN.

[0079]

[0104] UE1000 can further include sensor 1040. Such sensors can include, but are not limited to, one or more inertial sensors (e.g., accelerometers, gyroscopes, and / or other inertial measurement units (IMUs)), cameras, magnetometers, compasses, altimeters, microphones, proximity sensors, light sensors, barometers, etc., some of which can be used to complement and / or facilitate the functions described herein.

[0080]

[0105] An embodiment of UE1000 may include a GNSS receiver 1080 that is capable of receiving a signal 1084 from one or more GNSS satellites (e.g., SV190) using a GNSS antenna 1082 (which may be combined with antenna 1032 in some implementations). Such positioning may be utilized to complement and / or incorporate the techniques described herein. The GNSS receiver 1080 can use conventional techniques to extract the position of UE1000 from GNSS SVs (e.g., SV190) of GNSS systems such as the Global Positioning System (GPS), Galileo, GLONASS, Compass, the Quasi-Zenith Satellite System (QZSS) over Japan, the Indian Regional Navigation Satellite System (IRNSS) over India, and Beidou over China. Further, the GNSS receiver 1080 may be associated with or otherwise used with one or more global navigation satellite systems and / or regional navigation satellite systems, and various augmentation systems (e.g., satellite-based augmentation systems (SBAS)) that may be enabled for use therewith. By way of non-limiting example, SBAS may include augmentation systems that provide integrity information, differential corrections, etc., such as, for example, the Wide Area Augmentation System (WAAS), the European Geostationary Navigation Overlay Service (EGNOS), the Multi-functional Satellite Augmentation System (MSAS), GPS-aided Geo-Augmented Navigation, or the GPS and Geo-Augmented Navigation System (GAGAN). Thus, GNSS as used herein may include any combination of one or more global navigation satellite systems and / or regional navigation satellite systems, and / or augmentation systems, and GNSS signals may include GNSS signals related to such one or more GNSSs, signals similar to GNSSs, and / or other signals.

[0081]

[0106] UE1000 further includes and / or can communicate with memory 1060. Memory 1060 can comprise, without limitation, solid state storage devices such as local storage and / or network-accessible storage, disk drives, drive arrays, optical storage devices, random access memory (RAM) and / or read-only memory (ROM), which can be programmable, flash updatable, etc. Such storage devices can be configured to implement any suitable data store, including, without limitation, various file systems, database structures, and the like.

[0082]

[0107] The memory 1060 of UE1000 can also comprise software elements (not shown) including other code such as an operating system, device drivers, executable libraries, and / or one or more application programs, where the software elements can comprise computer programs provided by various embodiments and / or can be designed to implement methods provided by other embodiments and / or configure the system as described herein. By way of mere example, one or more procedures described with respect to the functions described above can be implemented as code and / or instructions executable by UE1000 (e.g., using processing unit 1010). In one aspect, such code and / or instructions can then be used to configure and / or adapt a general purpose computer (or other device) to perform one or more operations in accordance with the methods described.

[0083]

[0108] It will be apparent to those skilled in the art that substantial modifications may be made in accordance with specific requirements. For example, customized hardware may be used and / or certain elements may be implemented in hardware, software (including portable software such as applets), or both. Further, connections to other computing devices such as network input / output devices may be employed.

[0084]

[0109] Referring to the accompanying drawings, components that can include memory can include non-transitory machine-readable media. As used herein, the terms "machine-readable medium" and "computer-readable medium" refer to any storage medium involved in providing data that causes a machine to operate in a particular fashion. In the embodiments given above, various machine-readable media may be involved in providing instructions / code to a processing unit and / or other devices for execution. Additionally or alternatively, the machine-readable media may be used to store and / or carry such instructions / code. In many implementations, the computer-readable medium is a physical and / or tangible storage medium. Such a medium can take many forms, including but not limited to non-volatile media, volatile media, and transmission media. Common forms of computer-readable media include, for example, magnetic and / or optical media, punch cards, paper tapes, any other physical medium with patterns of holes, RAM, PROM, EPROM, FLASH-EPROM, any other memory chip or cartridge, carrier waves as described below, or any other medium that a computer can read instructions and / or code from.

[0085]

[0110] The methods, systems, and devices described herein are examples. Various embodiments may omit, substitute, or add various procedures or components as appropriate. For example, the features described with respect to a particular embodiment may be combined in various other embodiments. The various aspects and elements of the embodiments may be combined in a similar manner. The various components of the figures provided herein may be implemented in hardware and / or software. Also, technology evolves, and thus many of the elements are examples that do not limit the scope of the present disclosure to these specific examples.

[0086]

[0111] For mainly reasons of general usage, it has been found that it is sometimes convenient to refer to signals such as bits, information, values, elements, symbols, characters, variables, terms, numbers, digits, etc. However, it should be understood that all of these terms or similar terms should be associated with appropriate physical quantities and are merely convenient labels. Unless otherwise specified, as is apparent from the above description, throughout this specification, descriptions using terms such as "processing", "calculating", "computing", "determining", "confirming", "identifying", "associating", "measuring", "executing", etc. are understood to refer to the operations or processes of a specific device such as a dedicated computer or a similar dedicated electronic computing device. Thus, in the context of this specification, a dedicated computer or a similar dedicated electronic computing device can operate or transform signals typically represented as physical, electronic, electrical, or magnetic quantities within the memory, registers, or other information storage devices, transmission devices, or display devices of the dedicated computer or a similar dedicated electronic computing device.

[0087]

[0112] The terms "and" and "or" as used herein may include various meanings that are also expected to depend at least in part on the context in which such terms are used. Further, the term "one or more" as used herein may be used to describe any feature, structure, or property in the singular or to describe some combination of features, structures, or properties. However, this is merely an exemplary example, and it should be noted that the claimed subject matter is not limited to this example. Further, the term "at least one" may be construed to mean any combination of A, B, or C, such as A, AB, AA, AAB, AABBCCC, etc., when used to associate a list such as A, B, or C.

[0088]

[0113] Although some embodiments have been described, various modifications, alternative configurations, and equivalents may be used without departing from the spirit of the disclosure. For example, the above elements may merely be components of a larger system, where other rules may take precedence over or otherwise modify the application of the invention. Also, some steps may be performed before, during, or after the above elements are considered. Accordingly, the above description does not limit the scope of the disclosure. The invention described in the claims of the present application at the time of initial filing is appended below. [C1] A method for compressing audio data, comprising: obtaining a sequence of digitized samples of an audio signal; performing a transform using said sequence of digitized samples to generate a plurality of spectral lines; obtaining a group of spectral lines from said plurality of spectral lines; quantizing said group of spectral lines to generate a group of quantization values; wherein quantizing said group of spectral lines to generate said group of quantization values comprises: performing a special rounding operation on a selected spectral line from said group of spectral lines; using said special rounding operation to force a group parity value calculated for said group of quantization values to a predetermined parity value; outputting one or more data frames based on said group of quantization values. [C2] Said special rounding operation is performed on a pre-rounding value associated with said selected spectral line, said pre-rounding value comprising a floating-point value or a fixed-point value, said group of quantization values comprising a group of integer or fixed-point values, The method according to C1. [C3] The method according to C2, wherein said special rounding operation is used to round a pre-rounding value associated with said selected spectral line by reversing a rounding direction used to force a group parity value calculated for said group of quantization values to said predetermined parity value. [C4] The method according to C3, wherein said selected spectral line is selected because it is associated with a pre-rounding value having a minimum distance to a midpoint between two closest possible quantization values compared to other spectral lines within said group of spectral lines. [C5] The method according to C4, wherein said selected spectral line is selected based on a selection bias that selects higher frequency spectral lines. The method according to C5, wherein when a first spectral line associated with a first pre-rounded value having a first distance to an intermediate point between two closest possible quantization values and a second spectral line associated with a second pre-rounded value having a second distance to an intermediate point between two closest possible quantization values are tied, the first distance is equal to the second distance, and the first spectral line is selected because it is associated with a higher frequency bin of the transformation than the second spectral line. [C7] The group of spectral lines includes a first spectral line associated with a first frequency bin and a first pre-rounded value, and a second spectral line associated with a second frequency bin and a second pre-rounded value, wherein the first frequency bin corresponds to a higher frequency bin of the transformation than the second frequency bin, the first pre-rounded value corresponds to a first distance between two closest possible quantization values, the second pre-rounded value corresponds to a second distance between two closest possible quantization values, and the second distance is smaller than the first distance, the first spectral line is selected over the second spectral line, The method according to C5. [C8] The method according to C1, wherein the one or more data frames comprise a group of codewords based on the group of quantization values. [C9] The method according to C8, wherein the group of codewords is generated from the group of quantization values using arithmetic coding. [C10] The method according to C8, wherein the one or more data frames further comprise a rounding residual value for at least one quantization value within the group of quantization values. [C11] The method according to C10, wherein the one or more data frames further comprise a parity residual value for the at least one quantization value within the group of quantization values. [C12] The method according to C11, wherein the rounding residual value and the parity residual value are inserted instead of padding bits within the one or more data frames. [C13] The method according to C1, wherein the special rounding operation is used to force a sequence of groups of quantized values quantized from a sequence of groups of spectral lines from the plurality of spectral lines to have a sequence of predetermined parity values. [C14] The method described in C13, wherein the sequence of the predetermined parity values is used as a watermark. [C15] The method described in C14, wherein the watermark indicates the use of the special rounding operation. [C16] The method described in C15, wherein the watermark indicates the presence of one or more parity residual values within the one or more data frames. [C17] The method described in C14, wherein the watermark is associated with a specific provider of a device that implements the method for compressing audio data. [C18] The method described in C1, wherein the one or more data frames maintain compatibility with existing standards for audio data compression. [C19] A method for restoring audio data, comprising: obtaining one or more data frames; obtaining a group of quantization values based on the one or more data frames, wherein the group of quantization values results from a quantization process on the compression side that includes a special rounding operation performed on spectral lines to force a parity value calculated for the group of quantization values to a predetermined parity value; calculating a received-side parity value for the group of quantization values; comparing the calculated received-side parity value with the predetermined parity value for the group of quantization values; performing a bit error operation to detect or correct at least one bit error within the one or more data frames in response to detecting a difference between the calculated received-side parity value and the predetermined parity value for the group of quantization values; estimating a group of spectral lines based on the group of quantization values, taking into account the detection or correction of the at least one bit error within the one or more data frames; performing an inverse transform using a plurality of spectral lines including the group of spectral lines to generate a sequence of digitized samples; outputting the sequence of digitized samples as a digital representation of an audio signal and comprising a method. [C20] The one or more data frames comprise a group of codewords. The bit error operation is performed to detect or correct at least one bit error within the group of codewords, the method according to C19. [C21] The at least one bit error within the group of codewords is obtaining a plurality of transmissions of the group of codewords, generating a plurality of reconstructed versions of the group of codewords, (1) selecting one reconstructed version of the group of codewords from the plurality of reconstructed versions of the group of codewords based on the agreement between (1) the calculated received parity value associated with one reconstructed version of the group of codewords and (2) the predetermined parity value the method according to C20, corrected by. [C22] A weak bit mask indicating the position of a possible bit error is generated by comparing the plurality of transmissions of the group of codewords, each of the plurality of reconstructed versions of the group of codewords is reconstructed by changing a bit at one of the bit positions indicated by the weak bit mask, the method according to C21. [C23] The plurality of transmissions of the group of codewords comprises (1) the original transmission of the group of codewords and (2) one or more retransmissions of the group of codewords, the method according to C22. [C24] Each of the one or more retransmissions of the group of codewords is triggered by a failed CRC associated with a previous transmission of the group of codewords, the method according to C23. [C25] The group of quantization values is generated from the group of codewords using arithmetic decoding, the method according to C20. [C26] The one or more data frames further comprise a rounding residual value for at least one quantization value within the group of quantization values, the method according to C20. [C27] The one or more data frames further comprise a parity residual value for the at least one quantization value within the group of quantization values, the method according to C26. [C28] The rounding residual value and the parity residual value are extracted from the positions of padding bits within the one or more data frames, the method according to C27. [C29] The method according to C27, wherein spectral lines from the group of spectral lines are estimated with improved resolution by taking into account the rounding residual value and the parity residual value. [C30] The rounding residual value indicates a first estimation range of the values of the spectral lines, the parity residual value indicates a second estimation range of the values of the spectral lines adjacent to the first estimation range, and the spectral lines are estimated based on the second estimated value range. The method according to C29. [C31] The method according to C19, wherein a sequence of parity values is calculated from a sequence of groups of quantization values obtained based on the one or more data frames. [C32] The method according to C31, wherein the sequence of predetermined parity values is used as a watermark. [C33] The method according to C32, wherein the watermark indicates the presence of one or more parity residual values within the one or more data frames. [C34] An encoder for compressing audio data, comprising a conversion calculation device configured to receive a sequence of digitized samples of an audio signal and calculate a conversion using the sequence of digitized samples of the audio signal to generate a plurality of spectral lines, and a quantizer configured to obtain a group of spectral lines from the plurality of spectral lines and quantize the group of spectral lines to generate a group of quantization values, wherein the quantizer is configured to quantize the group of spectral lines to generate the group of quantization values by performing a special rounding operation on a spectral line selected from the group of spectral lines, wherein the quantizer is configured to use the special rounding operation to force a group parity value calculated for the group of quantization values to a predetermined parity value, wherein the quantizer is further configured to output one or more data frames based on the group of quantization values. Encoder. [C35] The quantizer is configured to perform the special rounding operation on the value before rounding related to the selected spectral line, wherein the value before rounding comprises a floating point value or a fixed point value. The group of quantization values comprises a group of integer or fixed-point values. The encoder according to C34. [C36] The encoder according to C35, wherein the special rounding operation is used to round the pre-rounding value associated with the selected spectral line in order to force the group parity value calculated for the group of quantization values to the predetermined parity value, and reverses the rounding direction used. [C37] The encoder according to C36, wherein the selected spectral line is selected because it is associated with a pre-rounding value having a minimum distance to the midpoint between the two closest possible quantization values as compared to other spectral lines in the group of spectral lines. [C38] The encoder according to C37, wherein the selected spectral line is selected based on a selection bias that selects higher frequency spectral lines. [C39] When a first spectral line associated with a first pre-rounding value having a first distance to the midpoint between the two closest possible quantization values and a second spectral line associated with a second pre-rounding value having a second distance to the midpoint between the two closest possible quantization values are tied, the first distance is equal to the second distance, and the first spectral line is selected because it is associated with a higher frequency bin of the transform than the second spectral line. The encoder according to C38. [C40] The group of spectral lines includes a first spectral line associated with a first frequency bin and a first pre-rounding value, and a second spectral line associated with a second frequency bin and a second pre-rounding value. The first frequency bin corresponds to a higher frequency bin of the transform than the second frequency bin. The first pre-rounding value corresponds to a first distance between the two closest possible quantization values, the second pre-rounding value corresponds to a second distance between the two closest possible quantization values, the second distance is smaller than the first distance, The first spectral line is selected over the second spectral line. The encoder according to C38. [C41] The encoder according to C34, wherein the one or more data frames comprise a group of codewords based on the group of quantization values. [C42] The quantizer is configured to generate the group of codewords from the group of quantization values using arithmetic coding, the encoder according to C41. [C43] The one or more data frames further comprise a rounding residual value for at least one quantization value within the group of quantization values, the encoder according to C41. [C44] The one or more data frames further comprise a parity residual value for the at least one quantization value within the group of quantization values, the encoder according to C43. [C45] The quantizer is configured to insert the rounding residual value and the parity residual value instead of padding bits within the one or more data frames, the encoder according to C44. [C46] The quantizer is configured to use the special rounding operation to force a sequence of groups of quantized values from a sequence of groups of spectral lines from the plurality of spectral lines to have a sequence of predetermined parity values, the encoder according to C35. [C47] A decoder for restoring audio data, a dequantizer configured to receive one or more data frames and obtain a group of quantization values based on the one or more data frames, wherein the group of quantization values results from a quantization process on the compression side that includes a special rounding operation performed on spectral lines to force a parity value calculated for the group of quantization values to a predetermined parity value, wherein the dequantizer is further configured to calculate a received-side parity value for the group of quantization values, wherein the dequantizer is further configured to compare the calculated received-side parity value with the predetermined parity value for the group of quantization values, wherein the dequantizer is further configured to perform a bit error operation to detect or correct at least one bit error within the one or more data frames in response to detecting a difference between the calculated received-side parity value and the predetermined parity value for the group of quantization values, Here, the inverse quantizer is further configured to estimate a group of spectral lines based on the group of quantization values, taking into account the detection or correction of the at least one bit error within the one or more data frames. An inverse transform calculation device configured to perform an inverse transform using a plurality of spectral lines including the group of spectral lines to generate and output a sequence of digitized samples as a digital representation of an audio signal. A decoder comprising the same. [C48] The one or more data frames comprise a group of codewords. The bit error operation is performed to detect or correct at least one bit error within the group of codewords. The decoder according to C47. [C49] The inverse quantizer obtains a plurality of transmissions of the group of codewords, generates a plurality of reconstructed versions of the group of codewords, and (1) selects one of the plurality of reconstructed versions of the group of codewords from the plurality of reconstructed versions of the group of codewords based on the agreement between the calculated received parity value associated with one of the reconstructed versions of the group of codewords and (2) the predetermined parity value. The decoder according to C48, which is configured to correct the at least one bit error within the group of codewords. [C50] The inverse quantizer is configured to generate a weak bit mask indicating the positions of possible bit errors by comparing the plurality of transmissions of the group of codewords. The inverse quantizer is configured to reconstruct each of the plurality of reconstructed versions of the group of codewords by changing a bit at one of the bit positions indicated by the weak bit mask. The decoder according to C49. [C51] The inverse quantizer is configured to generate a group of integers from the group of codewords using arithmetic decoding. The decoder according to C48. [C52] The one or more data frames further comprise a rounding residual value for at least one quantization value within the group of quantization values. The decoder according to C48. [C53] The decoder according to C52, wherein the one or more data frames further comprise a parity residual value for the at least one quantized value within the group of quantized values. [C54] The decoder according to C53, wherein the inverse quantizer is configured to extract the rounding residual value and the parity residual value from the positions of padding bits within the one or more data frames. [C55] The decoder according to C53, wherein the inverse quantizer is configured to estimate spectral lines from the group of spectral lines with improved resolution by considering the rounding residual value and the parity residual value. [C56] The rounding residual value indicates a first estimation range of the values of the spectral lines, the parity residual value indicates a second estimation range of the values of the spectral lines adjacent to the first estimation range, and the inverse quantizer is configured to estimate the spectral lines based on the second estimation value range. The decoder according to C55. [C57] A non-transitory computer-readable medium storing instructions for execution by one or more processing units, acquiring a sequence of digitized samples of an audio signal; performing a transform using the sequence of digitized samples to generate a plurality of spectral lines; obtaining a group of spectral lines from the plurality of spectral lines; and comprising instructions for quantizing the group of spectral lines to generate a group of quantized values, wherein the instructions for quantizing the group of spectral lines to generate the group of quantized values perform a special rounding operation on spectral lines selected from the group of spectral lines; use the special rounding operation to force a group parity value calculated for the group of quantized values to a predetermined parity value; and output one or more data frames based on the group of quantized values A non-transitory computer-readable medium comprising instructions for performing. [C58] A non-transitory computer-readable medium storing instructions for execution by one or more processing units, acquiring one or more data frames; Obtaining a group of quantization values based on the one or more data frames, wherein the group of quantization values results from a quantization process on the compression side that includes a special rounding operation performed on the spectral lines to force a parity value calculated for the group of quantization values to a predetermined parity value, Calculating a received-side parity value for the group of quantization values, Comparing the calculated received-side parity value with the predetermined parity value for the group of quantization values, Performing a bit error operation to detect or correct at least one bit error in the one or more data frames in response to detecting a difference between the calculated received-side parity value and the predetermined parity value for the group of quantization values, Estimating a group of spectral lines based on the group of quantization values, taking into account the detection or correction of the at least one bit error in the one or more data frames, Performing an inverse transform using a plurality of spectral lines including the group of spectral lines to generate a sequence of digitized samples, Outputting the sequence of digitized samples as a digital representation of an audio signal A non-transitory computer-readable medium comprising instructions for performing the above. [C59] A system for compressing audio data, Means for obtaining a sequence of digitized samples of an audio signal, Means for performing a transform using the sequence of digitized samples to generate a plurality of spectral lines, Means for obtaining a group of spectral lines from the plurality of spectral lines, Means for quantizing the group of spectral lines to generate a group of quantization values, wherein the means for quantizing the group of spectral lines to generate a group of quantization values Comprises means for performing a special rounding operation on a spectral line selected from the group of spectral lines, And means for using the special rounding operation to force a group parity value calculated for the group of quantization values to a predetermined parity value And, Means for outputting one or more data frames based on the group of quantization values A system comprising A system for restoring [C60] audio data, means for obtaining one or more data frames, means for obtaining a group of quantization values based on the one or more data frames, where the group of quantization values results from a quantization process on the compression side that includes a special rounding operation performed on spectral lines to force a parity value calculated for the group of quantization values to a predetermined parity value, means for calculating a received-side parity value for the group of quantization values, means for comparing the calculated received-side parity value with the predetermined parity value for the group of quantization values, means for performing a bit error operation to detect or correct at least one bit error in the one or more data frames in response to detecting a difference between the calculated received-side parity value and the predetermined parity value for the group of quantization values, means for estimating a group of spectral lines based on the group of quantization values, taking into account the detection or correction of the at least one bit error in the one or more data frames, means for performing an inverse transform using a plurality of spectral lines including the group of spectral lines to generate a sequence of digitized samples, means for outputting the sequence of digitized samples as a digital representation of an audio signal A system comprising

Claims

A method for compressing audio data by an encoder, comprising: obtaining a sequence of digitized samples of an audio signal; performing a transform using the sequence of digitized samples to generate a plurality of spectral lines; obtaining a group of spectral lines from the plurality of spectral lines; quantizing the group of spectral lines to generate a group of quantization values; wherein quantizing the group of spectral lines to generate the group of quantization values comprises: performing a special rounding operation on a spectral line selected from the group of spectral lines; using the special rounding operation to force a group parity value calculated for the group of quantization values to a predetermined parity value; outputting one or more data frames based on the group of quantization values; wherein the special rounding operation is performed on a pre-rounding value associated with the selected spectral line; the pre-rounding value comprises a floating-point value or a fixed-point value; the group of quantization values comprises a group of integer or fixed-point values, and wherein the special rounding operation reverses a rounding direction used to round the pre-rounding value associated with the selected spectral line in order to force the group parity value calculated for the group of quantization values to the predetermined parity value; A method as claimed in claim 1. Claim 2 The method according to claim 1, wherein the selected spectral line is selected because it has a pre-rounding value having a minimum distance to a midpoint between two closest possible quantization values compared to other spectral lines within the group of spectral lines. Claim 3 The method according to claim 2, wherein the selected spectral line is selected based on a selection bias that selects higher frequency spectral lines. Claim 4 The first pre-rounded value having a first distance to the midpoint between the two closest possible quantization values, and the second pre-rounded value having a second distance to the midpoint between the two closest possible quantization values. When the second spectral line is tied, the first distance is equal to the second distance, and the first spectral line is selected because it is associated with a higher frequency bin of the transformation than the second spectral line. The method according to claim 3.

5. The group of spectral lines includes a first spectral line associated with a first frequency bin and a first pre-rounded value, and a second spectral line associated with a second frequency bin and a second pre-rounded value. The first frequency bin corresponds to a higher frequency bin of the transformation than the second frequency bin. The first pre-rounded value corresponds to a first distance between two closest possible quantization values, the second pre-rounded value corresponds to a second distance between two closest possible quantization values, and the second distance is smaller than the first distance. The first spectral line is selected over the second spectral line. The method according to claim 3.

6. The one or more data frames comprise a group of codewords based on the group of quantization values. The method according to claim 1.

7. The group of codewords is generated from the group of quantization values using arithmetic coding. The method according to claim 6.

8. The one or more data frames further comprise a rounding residual value for at least one quantization value within the group of quantization values. The method according to claim 6.

9. The one or more data frames further comprise a parity residual value for the at least one quantization value within the group of quantization values. The method according to claim 8.

10. The rounding residual value and the parity residual value are inserted in place of padding bits in the one or more data frames. The method according to claim 9.

11. The special rounding operation is used to force a sequence of groups of quantized values quantized from a sequence of groups of spectral lines from the plurality of spectral lines to have a sequence of predetermined parity values. The method according to claim 1. A method for restoring audio data by a decoder, comprising: obtaining one or more data frames; obtaining a group of quantization values based on the one or more data frames, wherein the group of quantization values results from a quantization process on the compression side including a special rounding operation performed on spectral lines to force a parity value calculated for the group of quantization values to a predetermined parity value, and wherein the special rounding operation reverses a rounding direction used to round a pre-rounding value associated with the spectral line to force the parity value calculated for the group of quantization values to the predetermined parity value; calculating a received-side parity value for the group of quantization values; comparing the calculated received-side parity value with the predetermined parity value for the group of quantization values; performing a bit error operation to detect or correct at least one bit error in the one or more data frames in response to detecting a difference between the calculated received-side parity value and the predetermined parity value for the group of quantization values; estimating a group of spectral lines based on the group of quantization values, taking into account detection or correction of the at least one bit error in the one or more data frames; performing an inverse transform using a plurality of spectral lines including the group of spectral lines to generate a sequence of digitized samples; outputting the sequence of digitized samples as a digital representation of an audio signal A method comprising the above steps. Claim 13 An encoder for compressing audio data, comprising: a transform calculation device configured to receive a sequence of digitized samples of an audio signal and calculate a transform using the sequence of digitized samples of the audio signal to generate a plurality of spectral lines; a quantizer configured to obtain a group of spectral lines from the plurality of spectral lines and quantize the group of spectral lines to generate a group of quantization values Here, the quantizer is configured to quantize the group of spectral lines to generate the group of quantization values by performing a special rounding operation on the spectral lines selected from the group of spectral lines, Here, the quantizer is configured to use the special rounding operation to force the group parity value calculated for the group of quantization values to a predetermined parity value, Here, the quantizer is further configured to output one or more data frames based on the group of quantization values, Here, the special rounding operation is performed on the value before rounding related to the selected spectral line, The value before rounding comprises a floating-point value or a fixed-point value, The group of quantization values comprises a group of integer or fixed-point values, where the special rounding operation reverses the rounding direction used to round the value before rounding related to the selected spectral line in order to force the group parity value calculated for the group of quantization values to the predetermined parity value, Encoder.

14. A decoder for restoring audio data, An inverse quantizer configured to receive one or more data frames and obtain a group of quantization values based on the one or more data frames, where the group of quantization values results from a quantization process on the compression side that includes a special rounding operation performed on spectral lines to force the parity value calculated for the group of quantization values to a predetermined parity value, where the special rounding operation reverses the rounding direction used to round the value before rounding related to the spectral line in order to force the parity value calculated for the group of quantization values to the predetermined parity value, Here, the inverse quantizer is further configured to calculate a received-side parity value for the group of quantization values, Here, the inverse quantizer is further configured to compare the calculated received-side parity value with the predetermined parity value for the group of quantization values, Here, in response to detecting a difference between the calculated received-side parity value and the predetermined parity value for the group of quantization values, the inverse quantizer is further configured to perform a bit error operation to detect or correct at least one bit error in the one or more data frames. Here, the inverse quantizer is further configured to estimate a group of spectral lines based on the group of quantization values, taking into account the detection or correction of the at least one bit error in the one or more data frames. An inverse transform calculation device configured to perform an inverse transform using a plurality of spectral lines including the group of spectral lines to generate and output a sequence of digitized samples as a digital representation of an audio signal. A decoder comprising the same. **Claim 15** A non-transitory computer-readable medium storing instructions for execution by one or more processing units, the instructions comprising instructions for performing the method according to any one of claims 1 to 12.

Citation Information

Patent Citations

  • Method and apparatus for encoding / decoding and watermarking a data stream

    EP1104969A1

  • Method and device for bit allocation for audio encoding

    JP2005265865A

  • Apparatus and method for encoding time-discrete audio signals and apparatus and method for decoding encoded audio data

    JP2005527851A

  • Method and apparatus for scalable encoding and method and apparatus for scalable decoding

    JP2005535940A

  • Apparatus and method for processing at least two input values

    JP2007508605A