Patent Description:
The invention as defined in the claims to which reference is directed with preferred feature set out in the dependent claims.

Aspects of the disclosure are illustrated by way of example.

Several illustrative embodiments will now be described with respect to the accompanying drawings, which form a part hereof. While particular embodiments, in which one or more aspects of the disclosure may be implemented, are described below, other embodiments may be used and various modifications may be made without departing from the scope of the disclosure.

<FIG> presents a simplified diagram of a system <NUM> that may incorporate one or more embodiments of the disclosure. System <NUM> illustrates a one-way path of audio signal propagation comprising a transmit side and a receive side. While only a one-way path is illustrated, in many applications another path in the opposite direction is simultaneously implemented, resulting in a bi-directional arrangement. As shown, system <NUM> comprises, on the transmit side, a microphone <NUM>, a sample and analog-to-digital (A/D) conversion unit <NUM>, a codec encoder <NUM>, an optional channel encoder <NUM>, and transmitter <NUM>. The output of transmitter is sent to a channel <NUM>, which may represent a transmission channel or storage channel. System <NUM> further comprises, on the receive side, a receiver <NUM>, an optional channel decoder <NUM>, a codec decoder <NUM>, a digital-to-analog (D/A) conversion and signal reconstruction unit <NUM>, and a speaker <NUM>.

On the transmit side, microphone <NUM> captures sound from an 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 <NUM>, which samples the analog electrical signal according to a sampling frequency and quantizes each sample, by utilizing a sample and quantization scheme such as pulse code modulation (PCM). This results in digitized samples representing the original audio signal. The sample and A/D conversion unit <NUM> may apply filtering and other signal conditioning techniques to the signal before and/or after A/C conversion. The sample and A/D conversion unit <NUM> sends the digitized samples to the codec encoder <NUM>. The codec encoder <NUM> performs lossy compression on the digitized samples, to generate compressed digital data. The compressed digital data is sent to the optional channel encoder <NUM>, which may perform channel coding using the compressed digital data, to generate channel bits or symbols. Different types of channel coding techniques may be implemented, including forward error correction (FEC) coding. The optional channel encoder <NUM> sends the channel bits/symbols to the transmitter <NUM>. Alternatively, no channel encoder is used. In that case, the compressed digital data may be sent directly to the transmitter <NUM> without performing any channel encoding, and the compressed digital data may be used as channel bits/symbols. The transmitter <NUM> processes the channel bits/symbols in a manner appropriate for the channel <NUM>. For example, the transmitter <NUM> may modulate the channel bits/symbols onto a carrier signal prior to sending the modulated carrier signal over the channel.

Channel <NUM> may represent a transmission channel, storage channel, or other channel. A transmission channel may be a wired or wireless channel, such as an over-the-air channel. The transmitter <NUM> may use a transmit antenna to send the modulated carrier signal over the air. A storage channel may comprise a storage medium on which the channel bits/symbols may be "written" and later retrieved. For instance, the transmitter <NUM> may utilize a writing device to write the channel bits/symbols to the storage medium, where the channel bits/symbols may be retained. Channel <NUM> may subject the channel bits/symbols to noise, interference, and other degradations, introducing errors.

On the receive side, the receiver <NUM> receives the channel bits/symbols from the channel <NUM>. The receiver <NUM> de-modulates or otherwise processes the signal received from the channel <NUM>, to generate received channel bits/symbols. For example, the receiver <NUM> may utilize an antenna to receive a modulated carrier signal and perform demodulation to produce the received channel bits/symbols. In another example, the receiver <NUM> may utilize a reading device for reading the channel bits/symbols from the channel <NUM> as a storage channel. The received channel bits/symbols are sent to the optional channel decoder <NUM>, which may perform channel decoding, e.g., FEC decoding, to convert the received channel bits/symbols to compressed digital data. The compressed digital data is sent to the codec decoder <NUM>. Alternatively, no channel decoder is used. In that case, the channel bits/symbols are sent directly to the codec decoder <NUM> without performing any channel decoding, and the channel bits/symbols may be used as the compressed digital data. The codec decoder <NUM> performs de-compression 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 <NUM>, which performs digital-to-analog conversion and reconstruction, such as filtering and/or interpretation, to generate an analog electrical signal. The analog electrical signal is sent to the speaker <NUM>, which may produce and project sound waves into an environment, based on the analog electrical signal.

<FIG> presents a block diagram of the codec encoder <NUM>, according to various embodiments of the present disclosure. As shown, the codec encoder <NUM> comprises a discrete cosine transform (DCT) encoder <NUM> and a quantizer unit <NUM>. Digitized samples are obtained, e.g., from the sample and A/D conversion unit <NUM> shown in <FIG>, and sent to the DCT encoder <NUM>. While a DCT encoder is shown, transform encoders based on different types of transforms may be used in other embodiments. The DCT encoder <NUM> performs DCT transform on the digitized samples, to transform the digitized audio data from the time domain to the frequency domain. The output of the DCT transform comprises transform coefficients, generally referred to herein as "spectral lines. " Each spectral line comprises a numerical value reflecting the magnitude of the digitized audio data within a corresponding frequency bin. The number of frequency bins may vary depending on implementation. In some embodiments, the DCT encoder <NUM> generates up to <NUM> spectral lines (i.e., for <NUM> different frequency bins) in each transform operation.

In practice, the DCT encoder <NUM> performs such transform operations on time-limited blocks of the digitized samples. In some embodiments, successive blocks of digitized samples may overlap in time. The DCT encoder <NUM> may perform the transform operation on each block of digitized samples to generate, e.g., up to <NUM> (or more) spectral lines for each block of digitized samples. The DCT encoder <NUM> may perform such an operation for a first block of digitized samples, then a second block of digitized samples, then a third block of digitized samples, and so on, to generate a first set of spectral lines, a second set of spectral lines, a third set of spectral lines, and so on.

Just as an example, a modified discrete cosine transform (MDCT) implementation is described below. Here, for a block t, 2N time domain samples xt(k), k = <NUM>,. , <NUM>N - <NUM> are used to calculate N spectral lines Xt(m);m = <NUM>,. , N - <NUM>. In this example, two succeeding blocks overlap by <NUM>%, so each block processes N new time domain samples. A windowing function w(k), k = <NUM>,. , 2N-<NUM> may be used to smooth the overlapping blocks of digitized samples. The MDCT in this example may be expressed as: <MAT>.

In the present disclosure, the term "spectral lines" generally refers to transform outputs based on audio signals and is not limited to the particular definition provided as an example in Eq. <NUM> above. Other definitions of spectral lines may be adopted for a DCT transform or MDCT transform. Furthermore, other definitions of spectral lines may be adopted for non-DCT type transforms.

The quantizer unit <NUM> obtains each set of spectral lines from the DCT encoder <NUM> and generates data frames comprising compressed audio data. The quantizer unit <NUM> performs quantization on each set of spectral lines, in order to compress the audio data. The greater the degree of quantization, the more compression that is achieved. The term "data frames" is used herein generally to refer to an organization or arrangement of the compressed audio data. The data frame can but does not necessarily relate to how the compressed audio data may be packetized or otherwise arranged for downstream transport. While particular examples of data frames are described in accordance with specific embodiments of the disclosure, the organization of compressed data within a data frame needs not be restricted to the format shown in the embodiments presented. Illustrative operation of the quantizer unit <NUM> is described in more detail below.

<FIG> illustrates an example of certain internal components of the quantizer unit <NUM>, according to an embodiment of the present disclosure. Quantization is performed by rounding values representing spectral lines, in order to generate quantized values. A value prior to rounding may be referred to as a "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. A value after rounding may be referred to as a "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 illustrative examples below, 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 enforce parity requirements may be used for pre-rounding values expressed as fixed-point values and/or quantized values expressed as fixed-point values. Returning to <FIG>, the quantizer unit <NUM> may comprise a division unit <NUM>, a rounding unit <NUM>, and an arithmetic encoder <NUM>. Here, the quantizer unit <NUM> performs quantization by scaling each spectral line using a global gain and then rounding the resulting gain-adjusted value, which may be expressed as a floating-point value, to generate a quantized value. Here, each quantized value is an integer. For example, a spectral line may be sent to the division unit <NUM>. A global gain value, e.g., <NUM>, may also be sent to the division unit <NUM>. The division unit <NUM> performs a division operation. In this example, the spectral line value is divided by <NUM>. The division unit <NUM> may output a floating-point value representing the gain-adjusted spectral line value. The floating-point value is sent to the rounding unit <NUM>, which performs a rounding operation on the floating-point value to generate an integer value. The rounding operation may be performed using a standard rounding rule - e.g., rounding a floating-point value x to the nearest integer value y. If the floating-point value x falls exactly halfway between two integer values, y and y+<NUM>, a tie-breaking convention may be used such as always rounding up in case of a tie, i.e., y = x + <NUM> (or always rounding down in case of a tie, i.e., y = x - <NUM>). The rounding unit <NUM> generates an integer value resulting from performing the rounding operation on the floating-point value. The rounding unit <NUM> may also generate a rounding residual value, as well as a parity residual value (described in later sections), associated with the rounding operation.

<FIG> presents a table <NUM> showing examples of quantization errors resulting from spectral line quantization performed using a standard rounding rule. Four examples of spectral line quantization are shown. The four spectral lines have values of <NUM>, <NUM>, <NUM>, and <NUM>, respectively. Each spectral line value is divided by a global gain value of <NUM>. The division generates four floating-point values of <NUM>, <NUM>, <NUM>, and <NUM>. The four floating-point values are quantized via rounding, using a standard rounding rule, to generate four integers having the values of <NUM>, <NUM>, <NUM>, and <NUM>, respectively. Each quantization is associated with a quantization error, which are <NUM>, <NUM>, <NUM>, and <NUM>, respectively. Also shown in table <NUM> are four rounding residual values, which are -<NUM>, +<NUM>, +<NUM>, and -<NUM>, respectively. Each rounding residual value, shown as either a -<NUM> or +<NUM> value, indicates a direction that the actual floating-point value is positioned, along a real number line, relative to the integer value obtained as result of the rounding operation. In other words, the rounding residual value indicates whether the quantized value (i.e., integer value) is above or below the actual value (i.e., floating-point value). Each rounding residual value may be optionally sent, along with each integer value (or a codeword representative of the integer value), through the transmission or storage channel. Doing so provides additional information on the quantized values, which add extra resolution to each spectral line when it is reconstructed at the codec decoder on the other side of the channel.

Returning back to <FIG>, after performing quantization to generate quantized values representing the spectral lines, the quantizer unit <NUM> may perform source coding to encode the quantized values. The source encoding operation may convert the quantized values into codewords according to an appropriate source coding scheme. In one embodiment of the disclosure, an arithmetic code is used as the source encoding scheme. Arithmetic coding refers to a class of coding schemes that encodes an entire message into a code string which represents a fractional value q, where <NUM> ≤ q < <NUM>. The coding algorithm is symbol-wise recursive, i.e., it operates upon and encodes (decodes) one data symbol per iteration or recursion. On each recursion, the algorithm successively partitions an interval of the number line between <NUM> and <NUM>, and retains one of the partitions as the new interval. The size of a symbol's subinterval is proportional to the estimated probability that the symbol will be the next symbol in the message. As shown in <FIG>, the arithmetic encoder <NUM> obtains the quantized values, each representing a quantized spectral line, from the rounding unit <NUM>. The arithmetic encoder <NUM> outputs encoded codewords based on the quantized values. Because each quantized value may have a different probability of occurrence, the total length of the concatenation of the encoded codewords (i.e., the code string) is variable. Padding bits may be appended to the variable length arithmetic code string, in order to form a fixed length data frame (if a fixed-length data frame is desired).

<FIG> further illustrates the construction of a data frame by the quantizer unit <NUM>. In the example shown, a data frame may comprise, for each spectral line, the arithmetically encoded codeword corresponding to the quantized value representing the spectral line. The data frame may optionally comprise, for each spectral line, the rounding residual value associated with the quantization performed on the spectral line. The rounding residual value may take on a value of +<NUM> or -<NUM>, which may be represented using a "<NUM>" bit or "<NUM>" bit, respectively. If extra space is available in the data frame (i.e., if padding bits are present), the rounding residual value may be added in the place of one or more padding bits, in order to provide extra resolution to the reconstruction of the spectral line on the receive side of the channel. In addition, the data frame may optionally comprise, for a group of spectral lines, a parity residual value. Sections below describe in more detail the generation of such a parity residual value. The data frame may further comprise additional padding bits, one or more sign bits indicating a positive or negative sign for each spectral line, and a header, which may include information such as various control parameters used in the data compression operation.

In the embodiment shown in <FIG>, the quantizer unit <NUM> performs both a quantization function and a data frame-construction function. In other embodiments, a separate frame assembly unit, apart from the quantizer unit, may be used to construct the data frame.

Error resilience is provided by adding a low-cost parity check to each group of quantized spectral lines, according to various embodiments of the disclosure. The low-cost parity check may be achieved by utilizing a specialized rounding operation on one spectral line in a group of spectral lines. The specialized rounding operation may be used to force a group parity value computed for the group of quantized spectral lines to a predetermined parity value.

Referring again to <FIG>, the quantization of four spectral lines are shown. In a simple example, a group of spectral lines may consist of these four spectral lines, which correspond to floating-point values of <NUM>, <NUM>, <NUM>, and <NUM>. A specialized rounding operation is used to quantize one particular spectral line selected from the group of spectral lines. A standard rounding operation may be used to quantize the remaining spectral lines in the group. Such use of a specialized rounding operation on a select spectral line forces a parity value computed for the entire group of quantized spectral lines to a predetermined value. The specialized rounding operation does this by flipping the rounding direction used for rounding the floating-point number. That is, by choosing to "round up" instead of "round down" (or "round down" instead of "round up"), the specialized rounding operation changes the resulting quantized value to be an even integer instead of an odd integer (or odd integer instead of an even integer), thus flipping the resulting parity value computed for the entire group of quantized spectral lines. In this manner, the specialized rounding operation may be used to force the group parity value to the predetermined value, (e.g., "<NUM>" or "<NUM>").

For example, the spectral line having a floating-point value of <NUM> may be rounded (according to a standard rounding operation) to the integer value <NUM>, resulting in a quantization error of <NUM>. If the floating-point value of <NUM> were instead rounded to <NUM> (according to a specialized rounding operation), in order to force the group parity value to a particular predetermined value, the quantization error would still be <NUM>. Thus, the floating-point value of <NUM> is an excellent candidate for applying the specialized rounding operation. There is zero additional cost associated with using the specialized rounding operation instead of the standard rounding operation in this case. Either way, the rounding error is <NUM>.

Taking a different example, the spectral line having a floating-point value of <NUM> may be rounded (according to a standard rounding operation) to the integer value <NUM>, resulting in a quantization error of <NUM>. If the floating-point value <NUM> were instead rounded to <NUM> (according to a specialized rounding operation), in order to force the group parity value a particular predetermined value, the quantization error would be <NUM>. Thus, the floating-point value of <NUM> is a less desirable candidate (compared to <NUM>) for applying the specialized rounding operation. In this case, an extra cost associated with using the specialized rounding operation instead of the standard rounding operation corresponds to the additional amount of quantization error incurred, i.e., <NUM>, which is the difference between <NUM> and <NUM>.

According to an embodiment, the spectral line whose floating-point value is closest to a midpoint between two nearest possible quantized values (two nearest integers, in this case), as compared to other spectral lines in the group, is selected as the spectral line on which the specialized rounding operation is performed. Put another way, the spectral line whose quantization leads to the largest quantization error is selected to receive the specialized rounding operation. In the illustrative group of spectral lines shown in <FIG>, the spectral line having the floating-point value <NUM>, which has the largest quantization error, is selected to receive the specialized rounding operation.

For the group of four spectral lines shown in <FIG>, the group parity value may be computed as the parity value of the sum of the four integer values <NUM>, <NUM>, <NUM>, <NUM>. This sum corresponds to a group parity value of "<NUM>" (i.e., even parity). If it is decided that the group parity value is to be forced to "<NUM>," no additional step is necessary. However, if it is decided that the group parity value is to be forced to "<NUM>" (i.e., odd parity), then the specialized rounding operation may be performed on the selected spectral line associated with the largest quantization error (in this case, the spectral line having the floating-point value <NUM>). Here, the specialized rounding operation quantizes the floating-point value <NUM> to an integer value of <NUM> instead of <NUM>. This flips the group parity value computed for the entire group of four quantized spectral lines from "<NUM>" to "<NUM>. " The desired group parity value is thus achieved.

According to an additional embodiment, the selection of a particular spectral line on which the specialized rounding operation is performed may be further refined by introducing a selection bias that favors higher frequency spectral lines. The bias may lead to improved performance, because rounding error introduced in higher frequency spectral lines may result in better audio quality, as compared the same magnitude rounding error introduced in lower frequency spectral lines. In a specific embodiment, such frequency bias can serve as a "tie breaker" in the previously described spectral line selection process based on rounding error magnitude.

Suppose in a group of spectral lines, there is a tie between a first spectral line and a second spectral line in terms of the magnitude of their respective rounding errors. For example, the first spectral line may have a floating-point value of <NUM>, and the second spectral line may have a floating-point value <NUM>. In both cases, the distance to the midpoint (i.e., <NUM> and <NUM>, respectively) between two nearest possible quantized values (two nearest integers, in this case) is <NUM>. Both spectral lines are equally close to the ideal midpoint between two nearest integers. The first spectral line and the second spectral line would have the same magnitude of quantization error and would be tied in terms of which is a better candidate for being selected as the spectral line on which the specialized rounding operation is performed. In such a situation, frequency bias may be used to break the tie. As mentioned previously, when a transform such as a MDCT is performed, the resulting spectral lines correspond to frequency bins. Each spectral line comprises a numerical value reflecting the magnitude of the digitized audio data within a corresponding frequency bin of the transform. Continuing with the same example, the first spectral line is associated with a bin corresponding to a first frequency, and the second spectral line is associated with a bin corresponding to a second frequency. If the first frequency is higher than the second frequency along the frequency spectrum, then the first spectral line may be chosen over the second spectral line as the selected spectral line on which the specialized rounding operation is performed. Such a technique can further improve the system for enforcing a group parity value and lead to better audio performance.

In other examples, the selection bias favoring higher frequency spectral lines might be introduced in a more complex way. In some instances, a spectral line associated with a larger rounding error but a higher frequency bin may be selected, in order to improve overall audio performance. Thus, a tradeoff can be made between the audio performance gain associated with selecting a spectral line for its higher frequency versus the performance loss associated selecting the spectral line for its lower rounding error magnitude. In one implementation, such performance gains and losses are quantified into concrete values, and an evaluation is performed based on such values to settle audio performance tradeoffs. For example, a first spectral line may be associated with a first frequency bin and a first floating-point value that is at a first distance between a midpoint between two nearest integers. A second spectral line may be associated with a second frequency bin and a second floating-point value that is at a second distance between a midpoint between two nearest possible quantized values. In the frequency spectrum, the first frequency bin may be Δf KHz higher than the second frequency bin. However, the second floating-point number may be ΔM closer to the ideal midpoint value between nearest possible quantized values than the first floating-point number, as compared to the first floating-point value. By using a look-up table, for instance, the selection process may determine that, at the relevant frequency ranges, a difference in frequency of Δf KHz translates to a difference in rounding-related audio performance of P1. At the same time, another table look-up may reveal that, at the relevant frequency ranges, a difference in rounding error of ΔM translates to a difference in audio performance of P2. If P1 > P2, the selection process may choose the first spectral line, over the second spectral line, as the spectral line in the group on which the specialized rounding operation is applied. Otherwise, the selection process may choose the second spectral line, over the first spectral line, as the spectral line in the group on which the specialized rounding operation is applied.

According to yet an additional embodiment of the disclosure, the size of each group, i.e., the number of spectral lines contained in each group, may be predetermined and chosen based on a balance of competing considerations. On one hand, the smaller the group size, the more bit error resilience protection that is provided. This is because a smaller group size generates fewer codewords, which means that there are fewer bit positions in which to detect or correct bit errors using knowledge of the group parity value. The bit error detection or correction afforded by the group parity value is thus expected to be stronger for a group having a smaller group size, as compared to a group having a larger group size. On the other hand, the smaller the group size, the lower the chance of finding a large quantization error in the group. Thus, a smaller group size means the extra cost associated with using the specialized rounding operation on the selected spectral line may be greater. Put another way, the smaller the group size, the lower the chance of finding an ideal candidate, such as the spectral line having the floating-point value <NUM> illustrated in <FIG>, (or a close-to-ideal candidate) for applying the specialized rounding operation with little or no penalty.

Data frames generated using the bit error resilience techniques disclosed herein may 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 a standard rounding operation. A data frame generated using the specialized rounding operation, e.g., in order to force a particular group parity value, may only differ in terms of one selected spectral line having a quantized value that results from a choice to "round up" instead "round down" (or "round down" instead of "round up"). Typically, this amounts to a small difference in quantization error for one select spectral line in a group of spectral lines. A codec decoder built according to an existing audio data compression standard using a standard rounding operation can receive and decompress data frames originating from a transmitter incorporating the techniques for forced group parity value disclosed herein. Similarly, a codec decoder incorporating the techniques disclosed herein may receive and decompress data frame originating from a transmitter built according to an existing audio data compression standard using a standard rounding operation. Thus, the presently disclosed techniques for bit error resilience may facilitate interoperability with devices built based on existing audio data compression standards.

A benefit of the bit error resilience techniques disclosed herein relates to cumulative parity. A feature of an arithmetically encoded stream is that the data may need to be read in order. The encoding scheme used in the codec encoder can result in a change in the length of the encoded symbols/codewords when an error occurs. When this occurs, the parity checks after the error are likely to fail. The parity check scheme disclosed here may ensure the integrity of all data before and including the current group of spectral lines. Therefore, the parity check scheme can protect more than one bit error in each group of spectral lines, except for the last group.

More generally speaking, the parity check scheme can be applied to a group of data that includes other types of information besides spectral lines. As long as groups of data are sent, and there are values to be quantized within each group, the use of a specialized rounding rule to enforce a parity value for each group can be employed. Indeed, the specialized operation may be performed on data that is not a spectral line but is part of the group of data being sent.

In the aforementioned embodiments, scalar quantization of the spectral lines is described for easy of illustration. In other embodiments, more advanced quantization techniques may be utilized. For example, a non-linear quantization look-up table, vector quantization (e.g., Pyramid Vector Quantization), quantization by synthesis, dictionary lookups, etc. may be used instead of simple scalar quantization. More advance quantization techniques may add complexity but may also improve compression, e.g., in terms of providing better audio performance. Just as an example, in the case of vector quantization, a sequence of k spectral lines may be viewed as an k-dimensional vector, [x<NUM>, x<NUM>,. , xk] and quantized by choosing the nearest matching vector from a set of k-dimensional vectors [y<NUM>, y<NUM>,. , yn], with n<k. The disclosed parity check scheme can be applied to the quantized values obtained using such advanced quantization techniques.

Furthermore, in the aforementioned embodiments, spectral line quantization and source coding (i.e., entropy coding) are described as two separate steps for easy of illustration. In other embodiments, spectral line quantization and source/entropy coding may be merged into a combined step. For instance, a set of valid codewords constituting an alphabet may be created. Spectral line values may map directly onto the codewords, such that quantized values are reflected in the alphabet (e.g., through use of convolutional codes). The various considerations for quantization, such as quantization error and frequency bias, etc., may be taken into account in constructing the codewords and mapping.

In addition, in the aforementioned embodiments, parity has been described in terms of a choice between an even versus an odd bit value. In other embodiments, parity can be more broadly defined as a choice to select among multiple possible source/entropy encoded symbols (e.g., codewords). The choice to select one particular source/entropy encoded symbol reflects the "parity" being enforced. A cost function may be used to select the source/entropy encoded symbol that minimizes the quantization error, achieve frequency bias, etc., yet maintain the desired parity value. Such techniques may be well-suited to implementations involving Huffman coding, asymmetric numeral systems (ANS) coding, and the like, as the source/entropy coding scheme.

<FIG> presents a table <NUM> illustrating the generation of a parity residual value, according to an embodiment of the disclosure. The example shown in <FIG> is based on a scenario in which a different spectral line is selected for applying the specialized rounding operation, in order to force a group parity value. For example, an alternative group of spectral lines having floating-point values of <NUM>, <NUM>, <NUM>, and <NUM> may be considered. In this alternative group of spectral lines, quantizing the floating-point values results in quantized values of <NUM>, <NUM>, <NUM>, and <NUM>, respectively. The quantization errors are <NUM>, <NUM>, <NUM>, and <NUM>, respectively. The spectral line having the greatest quantization error is the spectral line corresponding to the floating-point value <NUM>, and it is selected as the spectral line on which the specialized rounding operation is performed. The sum of the quantized values <NUM>, <NUM>, <NUM>, and <NUM> corresponds to a group parity value of "<NUM>" (i.e., odd parity). If it is decided that the group parity value is to be forced to be "<NUM>" (i.e., even parity), then the specialized rounding operation may be applied to the floating-point value <NUM>.

Referring to <FIG>, using a standard rounding operation, the floating-point value <NUM> would be rounded to a quantized value of <NUM>. This corresponds to a quantization error of <NUM> and a rounding residual value of +<NUM>. The rounding residual value of +<NUM> indicates that the actual floating-point value is located in a positive direction, along a real number line, relative to the quantized value of <NUM>. Specifically, the rounding residual value of +<NUM> indicates an estimated range of [<NUM>, <NUM>) for the spectral line. The rounding residual value of +<NUM> may be included in the data frame, to support added resolution in the reconstruction of the spectral line performed at the codec decoder on the other side of the channel.

However, in order to force the group parity value to "<NUM>," the specialized rounding operation is used instead. As a result, the floating-point value <NUM> is rounded to a quantized value of <NUM>. This corresponds to a quantization error of <NUM>, with a rounding residual error of -<NUM>. The rounding residual value of -<NUM> indicates that the actual floating-point value is located in a negative direction, along a real number line, relative to the quantized value of <NUM>. Specifically, the rounding residual value of -<NUM> indicates an estimated range of [<NUM>, <NUM>) for the spectral line.

Also shown in <FIG> is a parity residual value. A parity residual value of <NUM> indicates that the specialized rounding operation has not been used. In such a case, the estimated range indicated by the rounding residual remains valid. By contrast, a parity residual value of <NUM> indicates that the specialized rounding operation has been used. In that case, the estimate range indicated by the rounding residual may no longer be valid. Instead, the parity residual value of <NUM>, in conjunction with the rounding residual value of -<NUM>, indicates a new estimated range of [<NUM>,<NUM>) for the spectral line.

The logic behind the new estimated range may be described as follows. According to the present embodiment, the rounding residual value of -<NUM> merely indicates that the actual-floating point value is located in a negative direction, along a real number line, relative to the quantized value of <NUM>. In other words, the floating-point value was "rounded up" to reach the quantized value of <NUM>. However, without more information, it is unclear whether the floating-point value was "rounded up" to the quantized value of <NUM> as result of:.

Knowing the parity residual value revolves this ambiguity. Specifically, a parity residual value of <NUM> indicates that the specialized rounding operation was used. Thus, the new estimated range for the value of the spectral line is determined to be [<NUM>,<NUM>). The above illustrates an example of a rounding residual value indicating a first estimated range of values for the spectral line, and the parity residual value indicating a second estimated range of values for the spectral line adjacent to the first estimated range.

As discussed previously, the data frame may optionally include one or both of the rounding residual value and the parity residual value, depending on whether there is space available in the padding bits of the data frame. In the example shown in <FIG>, the floating-point value <NUM> is rounded to the quantized value <NUM> using the specialized rounding operation. If neither the rounding residual value nor the parity residual value is included in the data frame, then the codec decoder may only be able to estimate the value of the spectral line based on the range of [<NUM>, <NUM>). If only the rounding residual value but not the parity residual value is included in the data frame, then the codec decoder may estimate the value of the spectral line based on the range [<NUM>, <NUM>). Finally, if both the rounding residual value and the parity residual value are included in the data frame, then the codec decoder may estimate the value of the spectral line based on the range of [<NUM>, <NUM>) - i.e., with greater resolution.

A sequence of groups of quantized spectral lines may be parity-adjusted in this manner to achieve a sequence of predetermined parity values. For example, it may be decided that every group of quantized spectral lines is to be forced to have a group parity value of "<NUM>" (i.e., even parity). By forcing every group of quantized spectral lines to have a group parity value of "<NUM>," the transmit side of the channel provides an expected pattern of group parity values (all "<NUM>'s" in this example) in the compressed data. The receive side of the channel, having knowledge of the expected pattern of group parity values, may use such knowledge to detect or correct bit errors, as discussed in more detail in sections below.

The expected pattern of group parity values may be used as a watermark. The watermark may serve various functions. In one embodiment, the watermark signifies use of the specialized rounding operation. In response to detecting such a watermark, the receive side of the channel may utilize group parity to detect or correct bit errors. Additionally or alternatively, the watermark may signify the presence of one or more parity residual values in the data frame. In response to detecting such a watermark, the receiver side of the channel may retrieve a parity residual value from the data frame and use the parity residual value to reconstruct the selected spectral line with added resolution. Additionally or alternatively, the watermark may be associated with a specific provider of an audio data compression methodology. Presence of such a watermark may indicate the manufacturing or design origin of the device generating the compressed audio data bearing the watermark.

<FIG> presents a block diagram of the codec decoder <NUM>, according to various embodiments of the present disclosure. As shown, the codec decoder <NUM> comprises a de-quantizer unit <NUM> and an inverse discrete cosine transform (Inverse DCT) unit <NUM>. Data frames are obtained, e.g., from the optional channel decoder <NUM> shown in <FIG> and sent to the de-quantizer unit <NUM>. Alternatively, if no channel decoder is implemented, data frames may be obtained directly from the receiver <NUM> shown in <FIG>. The de-quantizer unit <NUM> obtains data frames comprising compressed audio data and generates sets of spectral lines. A more detailed description of de-quantizer unit <NUM> is presented below.

<FIG> illustrates an example of certain internal components of the de-quantizer unit <NUM>, according to an embodiment of the present disclosure. As shown, the de-quantizer unit <NUM> may comprise an arithmetic decoder <NUM> and a spectral estimator <NUM>. The de-quantizer unit <NUM> extracts various portions of data from each data frame in order to estimate the sets of spectral lines representing the compressed audio data. Arithmetically encoded codewords may be extracted from the data frame and forwarded to the arithmetic decoder <NUM>. The arithmetic decoder <NUM> converts the codewords into quantized values (e.g., integers or fixed-point numbers). Each quantized value may represent a quantized spectral line.

Prior to performing de-quantization, the de-quantizer unit <NUM> may utilize knowledge of the group parity value for each group of quantized values, to detect or correct bit errors. Specifically, the de-quantizer unit <NUM> may compute a receive-side parity value for a group of quantized values obtained from the data frame. The de-quantizer unit <NUM> may compare the receive-side parity value for the group of quantized values to a known, predetermined parity value for the group of quantized values. The de-quantizer unit <NUM> may perform one or more bit error operations to detect or correct at least one bit error in the data frame, in response to detecting a difference between the computed receive-side group parity value for the group of quantized values and the predetermined group parity value for the group of quantized values.

<FIG> and <FIG> illustrate simplified examples of error detection and correction using a group parity value, according to one embodiment of the present disclosure. Here, a group of four quantized spectral lines are sent with a predetermined group parity value. <FIG> shows an example code book <NUM> mapping the possible quantized values of spectral lines to corresponding codewords. For simplicity of illustration, fixed-length codewords are presented. In a different implementation, variable-length codewords may be used, as mentioned previously in the case of arithmetic codes. In particular, the length of the codewords may vary based on the probability of occurrence of each codeword. Codebook <NUM> contains four codewords, 0x42, 0x67, 0xC3, and 0xD3, which correspond to the four possible quantized spectral line values, i.e., integers <NUM>, <NUM>, <NUM>, and <NUM>, respectively. <FIG> presents a table <NUM> showing details of how the transmit side of the channel quantizes the four spectral lines, which correspond to four different frequency bins. Each spectral line is quantized to one of the four possible quantized values, <NUM>, <NUM>, <NUM>, or <NUM> found in the code book <NUM>. For each spectral line, table <NUM> shows the global gain, value after division by global gain, quantized value, new quantized value to enforce parity, codeword, and binary version of the codeword. In addition, table <NUM> shows the sum of the column of the four quantized values (i.e., integers) as being <NUM>, which has odd parity. Also, table <NUM> shows the sum of the column of four new quantized values to enforce group parity as being <NUM>, which as even parity.

Here, it is assumed that the predetermined group parity value is "<NUM>" (i.e., even parity). That is, on the transmit side of the channel, the group parity value is forced to be even parity. As seen in table <NUM>, the spectral line having a floating-point value of <NUM> is selected for the specialized rounding operation, in order to force the group parity value to even parity. Instead of rounding the floating-point value of <NUM> to a quantized value of <NUM>, the floating-point value is rounded to a new quantized value of <NUM>. This forces the sum of the four new quantized values to <NUM>, which has even parity, satisfying the predetermined group parity value requirement.

A simple data packet generated at the transmitter might be: <MAT>.

Here, the packet comprises the concatenation of various codewords, taken from the code book <NUM>, that correspond to the quantized values of the group of spectral lines. In addition, a cyclic redundancy check (CRC) value is also appended to the packet and transmitted. In a traditional codec approach, the data packet might have been sent several times, such as <NUM>, <NUM>, or <NUM> times. With the benefit of having so many transmissions of the packet, the receive hardware (e.g., in receiver <NUM> shown in <FIG>) may be able to repair the packet using majority voting. That is, if a majority of the transmissions (e.g., <NUM> out of <NUM> transmission) result in the same string of codewords, the repeated string of codewords may be chosen as the repaired packet. By contrast, through the use of a predetermined group parity value according to embodiments of the present disclosure, packet repair may be possible with fewer transmissions. In the examples described below, the data packet is transmitted initially and retransmitted only once, which does not allow the receive hardware to repair the packet on its own. However, the receive hardware generates and forwards a "weak bit mask" to the codec decoder. Using a weak bit mask and knowledge of the predetermined parity value for the group of quantized spectral lines, the codec decoder is able to repair the packet and recover correct values for the quantized spectral lines.

Some basic scenarios are presented below for illustrative purposes. The simple data packet generated at the transmitter is sent over the channel. The channel can have noise and introduce bit errors. Here, an initial transmission of the data packet experiences a bit error. The following packet is seen at the receiver (bit error underlined): <MAT>.

When the receive side hardware decodes this packet, the CRC fails. This triggers a retransmission of the packet. This time, the retransmission of the packet introduces a bit error at a different bit position (bit error underlined): <MAT>.

Once again, the CRC fails when the receive side hardware decodes the packet. In response, the receive side hardware generates a weak bit mask. The weak bit mask shows all bit positions where the two transmissions of the packet are different. The weak bit mask is sent to the codec decoder along with one of the received packets. The weak bit mask for this example is shown below:
<NUM>.

In a first repair example, the last received packet (i.e., second transmission) is used to reconstruct the original packet. Again, the last received packet is:
<NUM>.

This corresponds to decoded codewords: <MAT>.

Looking up these decoded codewords using the code book <NUM> yields the group of quantized spectral values: <MAT>.

This group of quantized spectral values has odd parity, which is not the expected group parity value. As a first step, the codec decoder may try changing the first bit in the weak bit mask. Doing so results in a new packet:
<NUM>.

This group of quantized spectral values has even parity, which is the expected group parity value. This confirms that the group of quantized spectral values is correct.

In a second repair example, the first received packet (i.e., initial transmission) is used to reconstruct the original packet. Again, the first received packet is:
<NUM>.

This corresponds to the decoded codewords: <MAT>.

Note that 0x6F is not a valid codeword (i.e., it does not exist in the code book <NUM>). This indicates that an error exists. As a first step, the codec decoder may try changing the first bit in the weak bit mask. Doing so results in a new packet:
<NUM>.

0x6F is still not a valid codeword, indicating that an error still exists. Now the codec decoder may try changing the next bit in the weak bit mask. Doing so results in a different new packet:
<NUM>.

The above examples illustrate that the codec decoder may generate a plurality of reconstructed versions of the group of codewords and select one of the reconstructed versions of the group of codewords, based on a match between (<NUM>) the computed receive-side parity value associated with the reconstructed version of the group of codewords and (<NUM>) the predetermined group parity value. The bit error detection and correction technique may exploit additional information such as a weak bit mask generated from comparison of multiple transmissions, CRC results, knowledge of the code book used to encode the quantized spectral lines, etc. Referring again <FIG>, the de-quantizer unit <NUM> may use techniques such as those described above to detect or correct bit errors, in order to generate a corrected version of each group of quantized spectral lines.

In certain embodiments described above, a CRC is used to identify and/or otherwise handle errors. However, the techniques of the present disclosure are not limited to implementations adopting use of a CRC. Alternatively or additionally, other types of error correction coding schemes may be used, including Reed-Solomon codes, turbo codes, the Viterbi algorithm, etc..

De-quantization is now described in more detail. According to an embodiment of the disclosure, the spectral estimator <NUM> in the de-quantizer unit <NUM> receives the quantized values representing the spectral lines, the rounding residual value and the parity residual value (if they are available), and a global gain value (e.g., <NUM>). Based on these values, the spectral estimator <NUM> estimates a de-quantized version of the sets of spectral lines. The de-quantized spectral lines may be represented as floating-point values or fixed-point values, according to various embodiments. The spectral estimator <NUM> may do so using operations such as interpolation, filtering, etc. to construct the sets of spectral lines Essentially, the spectral estimator <NUM> attempts to perform the inverse of the quantization step performed by the quantizer unit <NUM> on the transmit side of the channel.

Returning to <FIG>, the inverse DCT unit <NUM> receives the de-quantized spectral lines generated by the de-quantizer unit <NUM>. As discussed, a set of spectral lines representing a full range of frequency bins may comprise up to <NUM> (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 <NUM> may perform an inverse transform operation on each set of spectral lines, to generate a time limited block of digitized samples of audio data. For example, an inverse modified discrete cosine transform (inverse MDCT) may be expressed as: <MAT>.

The inverse MDCT operation presented in Eq. <NUM> corresponds a the MDCT operation presented in Eq. <NUM>, discussed previously. The digitized samples of decompressed audio data generated by the inverse DCT unit <NUM> are sent to the D/A and reconstruction unit <NUM> shown in <FIG>.

As discussed previously with reference to <FIG>, the D/A and reconstruction unit <NUM> receives the digitized samples of decompressed audio data and performs digital-to-analog conversion and reconstruction, such as filtering and/or interpretation, to generate an analog electrical signal. The analog electrical signal is sent to the speaker <NUM>, which may produce and project sound waves into an environment, based on the analog electrical signal.

<FIG> presents a flowchart illustrating a process <NUM> and a sub-process <NUM> for compressing audio data according to an embodiment of the present disclosure. Process <NUM> includes steps <NUM>, <NUM>, <NUM>, <NUM>, and <NUM>. Sub-process <NUM> includes steps <NUM> and <NUM>. In step <NUM>, a sequence of digitized samples of an audio signal are obtained. The digitized samples may be obtained, for example, from the sample and A/D unit <NUM> shown in <FIG>. In step <NUM>, a transform is performed using the sequence of digitized samples, to generate a plurality of spectral lines. The transform may be, for example, a MDCT performed by the DCT unit <NUM> in <FIG>. In step <NUM>, a group of spectral lines is obtained from the plurality of spectral lines. An illustrative group is shown in <FIG>. In step <NUM>, the group of spectral lines is quantized to generate a group of quantized values. Here, quantizing the group of spectral lines to generate the group of quantized values may comprise steps in sub-process <NUM>. More specifically, in step <NUM>, a specialized rounding operation is performed on a spectral line selected from the group of spectral lines. In step <NUM>, the specialized rounding operation is used to force a group parity value, computed for the group of quantized values, to a predetermined parity value. The use of such a specialized rounding operation to force a group parity value to a predetermined parity value, for example, is illustrated in the descriptions relating to <FIG> and <FIG>. Returning to process <NUM>, in step <NUM>, one or more data frames based on the group of quantized values is outputted. An example of such an outputted data frame is shown in <FIG>.

<FIG> presents a flowchart illustrating a process <NUM> for de-compressing audio data according to an embodiment of the present disclosure. Process <NUM> includes steps <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, and <NUM>. In step <NUM>, one or more data frames are obtained. The data frame may be obtained, for example, from the RX unit <NUM> or channel decoder unit <NUM> in <FIG>. In step <NUM>, a group of quantized values based on the one or more data frames are obtained. The quantized values may be obtained, for example, as the integer values shown in <FIG>. In step <NUM>, a receive-side parity value for the group of quantized values is computed. In step <NUM>, the computed receive-side parity value is compared to the predetermined parity value for the group of quantized values. In step <NUM>, a bit error operation is performed to detect or correct at least one bit error in the one or more data frames, in response to detecting a difference between the computed receive-side parity value and the predetermined parity value for the group of quantized values. Examples of such parity value computation, comparison, and use in a bit error operation are described in the context of <FIG> and <FIG>. In step <NUM>, a group of spectral lines are estimated based on the group of quantized values, taking into account detection or correction of the at least one bit error in the one or more data frames. The group of spectral lines may be estimated, for example, by the spectral estimator unit <NUM> in <FIG>. In step <NUM>, an inverse transform may be performed using a plurality of spectral lines, including the group of spectral lines, to generate a sequence of digitized samples. The inverse transform may be performed, for example, by the inverse DCT unit <NUM> in <FIG>. In step <NUM>, the sequence of digitized samples may be outputted as a digital representation of an audio signal. The sequence of digitized samples may be outputted, for example, by the codec decoder <NUM> in <FIG>.

<FIG> is a block diagram of an embodiment of a user equipment ("UE") <NUM>, which can be utilized as described in the embodiments described herein and in association with <FIG>. UE <NUM> may implement parts of an audio path demonstrated by system <NUM> in <FIG>. In a particular audio path, a first instance of UE <NUM> may server as the transmit side, and a second instance of UE <NUM> may serve as the receive side. In such an example, the first instance of UE <NUM> may implement the transmit-side components of system <NUM>, including microphone <NUM>, sample and A/D unit <NUM>, codec encoder <NUM>, channel encoder <NUM>, and transmit hardware <NUM> shown in <FIG>. The second instance of UE <NUM> may implement the receive-side components of system <NUM>, including receiver <NUM>, channel decoder <NUM>, codec decoder <NUM>, D/A and reconstruction unit <NUM>, and speaker <NUM> shown in <FIG>. The UE <NUM> also supports bi-directional communications. Thus, a second audio path can be simultaneously established in the reverse direction. In the second audio path, the second instance of US <NUM> may serve as the transmit side, and the first instance of the UE <NUM> may serve as the receive side, utilizing components within the two instances of UE <NUM> in a similar and mirrored way.

It should be noted that <FIG> is meant only to provide a generalized illustration of various components of the UE <NUM>, any or all of which may be utilized as appropriate. In other words, because UEs can vary widely in functionality, they may include only a portion of the components shown in <FIG>. In some instances, components illustrated by <FIG> can be localized to a single physical device and/or distributed among various networked devices, which may be disposed at different physical locations.

The UE <NUM> is shown as comprising hardware elements that can be electrically coupled via a bus <NUM> (or may otherwise be in communication, as appropriate). The hardware elements may include a processing unit(s) <NUM> which may comprise without limitation one or more general-purpose processors, one or more special-purpose processors (such as digital signal processing (DSP) chips, graphics acceleration processors, application specific integrated circuits (ASICs), and/or the like), and/or other processing structure or means, which can be configured to perform one or more of the methods described herein. As shown in <FIG>, some embodiments may have a separate DSP <NUM>, depending on desired functionality. For example, the processing unit(s) and/or DSP <NUM> may implement the codec encoder <NUM>, channel encoder <NUM>, channel decoder <NUM>, and code decoder <NUM> shown in <FIG>.

The UE <NUM> also may comprise one or more input devices <NUM>, which may comprise without limitation one or more touch screens, touch pads, microphones, buttons, dials, switches, and/or the like. For example, the input device(s) <NUM> may include microphone <NUM> and sample and A/C unit <NUM> shown in <FIG>. In addition, the UE <NUM> may also comprise one or more output devices <NUM>, which may comprise without limitation, one or more displays, light emitting diodes (LEDs), speakers, and/or the like. For example, the output device(s) <NUM> may include D/A and reconstruction unit <NUM> and speaker <NUM> shown in <FIG>.

The UE <NUM> might also include a wireless communication interface <NUM>, which may comprise without limitation a modem, a network card, an infrared communication device, a wireless communication device, and/or a chipset (such as a Bluetooth® device, an IEEE <NUM> device, an IEEE <NUM>. <NUM> device, a Wi-Fi device, a WiMAX™ device, cellular communication facilities, etc.), and/or the like, which may enable the UE <NUM> to communicate via the networks described herein with regard to <FIG>. The wireless communication interface <NUM> may permit data to be communicated with a network, eNBs, ng-eNBs, gNBs, and/or other network components, computer systems, and/or any other electronic devices described herein. The communication can be carried out via one or more wireless communication antenna(s) <NUM> that send and/or receive wireless signals <NUM>. According to some embodiments, the wireless communication antenna(s) <NUM> may comprise a plurality of discrete antennas, antenna arrays, or any combination thereof.

Depending on desired functionality, the wireless communication interface <NUM> may comprise separate transceiver, receiver and transmitter, or any combination of transceivers, transmitters, and/or receivers to communicate with base stations (e.g., eNBs, ng-eNBs and/or gNBs) and other terrestrial transceivers, such as wireless devices and access points. For example, wireless communication interface <NUM> may implement a transmitter <NUM> and receiver <NUM> shown in <FIG>. The UE <NUM> may communicate with different 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, a WiMax (IEEE <NUM>), and so on. A CDMA network may implement one or more radio access technologies (RATs) such as cdma2000, Wideband-CDMA (WCDMA), and so on. Cdma2000 includes IS-<NUM>, IS-<NUM>, and/or IS-<NUM> standards. A TDMA network may implement Global System for Mobile Communications (GSM), Digital Advanced Mobile Phone System (D-AMPS), or some other RAT. An OFDMA network may employ LTE, LTE Advanced, New Radio (NR) and so on. <NUM>, LTE, LTE Advanced, NR, GSM, and WCDMA are described in documents from 3GPP. Cdma2000 is described in documents from a consortium named "3rd Generation Partnership Project <NUM>" (3GPP2). 3GPP and 3GPP2 documents are publicly available. A wireless local area network (WLAN) may also be an IEEE <NUM>. 11x network, and a wireless personal area network (WPAN) may be a Bluetooth network, an IEEE <NUM>. 15x, or some other type of network. The techniques described herein may also be used for any combination of WWAN, WLAN and/or WPAN.

The UE <NUM> can further include sensor(s) <NUM>. Such sensors may comprise, without limitation, one or more inertial sensors (e.g., accelerometer(s), gyroscope(s), and or other Inertial Measurement Units (IMUs)), camera(s), magnetometer(s), compass, altimeter(s), microphone(s), proximity sensor(s), light sensor(s), barometer, and the like, some of which may be used to complement and/or facilitate the functionality described herein.

Embodiments of the UE <NUM> may also include a GNSS receiver <NUM> capable of receiving signals <NUM> from one or more GNSS satellites (e.g., SVs <NUM>) using an GNSS antenna <NUM> (which may be combined in some implementations with antenna(s) <NUM>). Such positioning can be utilized to complement and/or incorporate the techniques described herein. The GNSS receiver <NUM> can extract a position of the UE <NUM> , using conventional techniques, from GNSS SVs (e.g. SVs <NUM>) of an GNSS system, such as Global Positioning System (GPS), Galileo, GLONASS, Compass, Quasi-Zenith Satellite System (QZSS) over Japan, Indian Regional Navigational Satellite System (IRNSS) over India, Beidou over China, and/or the like. Moreover, the GNSS receiver <NUM> can use various augmentation systems (e.g., a Satellite Based Augmentation System (SBAS)) that may be associated with or otherwise enabled for use with one or more global and/or regional navigation satellite systems. By way of example but not limitation, an SBAS may include an augmentation system(s) that provides integrity information, differential corrections, etc., such as, e.g., Wide Area Augmentation System (WAAS), European Geostationary Navigation Overlay Service (EGNOS), Multi -functional Satellite Augmentation System (MSAS), GPS Aided Geo Augmented Navigation or GPS and Geo Augmented Navigation system (GAGAN), and/or the like. Thus, as used herein a GNSS may include any combination of one or more global and/or regional navigation satellite systems and/or augmentation systems, and GNSS signals may include GNSS, GNSS-like, and/or other signals associated with such one or more GNSS.

The UE <NUM> may further include and/or be in communication with a memory <NUM>. The memory <NUM> may comprise, without limitation, local and/or network accessible storage, a disk drive, a drive array, an optical storage device, a solid-state storage device, such as a random access memory ("RAM"), and/or a read-only memory ("ROM"), which can be programmable, flash-updateable, and/or the like. Such storage devices may be configured to implement any appropriate data stores, including without limitation, various file systems, database structures, and/or the like.

The memory <NUM> of the UE <NUM> also can comprise software elements (not shown), including an operating system, device drivers, executable libraries, and/or other code, such as one or more application programs, which may comprise computer programs provided by various embodiments, and/or may be designed to implement methods, and/or configure systems, provided by other embodiments, as described herein. Merely by way of example, one or more procedures described with respect to the functionality discussed above might be implemented as code and/or instructions executable by the UE <NUM> (e.g., using processing unit(s) <NUM>). In an aspect, then, such code and/or instructions can be used to configure and/or adapt a general purpose computer (or other device) to perform one or more operations in accordance with the described methods.

With reference to the appended figures, components that can include memory can include non-transitory machine-readable media. The term "machine-readable medium" and "computer-readable medium" as used herein, refer to any storage medium that participates in providing data that causes a machine to operate in a specific fashion. In embodiments provided hereinabove, various machine-readable media might be involved in providing instructions/code to processing units and/or other device(s) for execution. Additionally or alternatively, the machine-readable media might be used to store and/or carry such instructions/code. In many implementations, a computer-readable medium is a physical and/or tangible storage medium. Such a medium may 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, punchcards, papertape, any other physical medium with patterns of holes, a RAM, a PROM, EPROM, a FLASH-EPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer can read instructions and/or code.

The methods, systems, and devices discussed herein are examples. Various embodiments may omit, substitute, or add various procedures or components as appropriate. For instance, features described with respect to certain embodiments may be combined in various other embodiments. Different aspects and elements of the embodiments may be combined in a similar manner. The various components of the figures provided herein can be embodied in hardware and/or software. Also, technology evolves and, thus, many of the elements are examples that do not limit the scope of the disclosure to those specific examples.

It has proven convenient at times, principally for reasons of common usage, to refer to such signals as bits, information, values, elements, symbols, characters, variables, terms, numbers, numerals, or the like. It should be understood, however, that all of these or similar terms are to be associated with appropriate physical quantities and are merely convenient labels. Unless specifically stated otherwise, as is apparent from the discussion above, it is appreciated that throughout this Specification discussions utilizing terms such as "processing," "computing," "calculating," "determining," "ascertaining," "identifying," "associating," "measuring," "performing," or the like refer to actions or processes of a specific apparatus, such as a special purpose computer or a similar special purpose electronic computing device. In the context of this Specification, therefore, a special purpose computer or a similar special purpose electronic computing device is capable of manipulating or transforming signals, typically represented as physical electronic, electrical, or magnetic quantities within memories, registers, or other information storage devices, transmission devices, or display devices of the special purpose computer or similar special purpose electronic computing device.

Claim 1:
A method for compressing audio data comprising:
obtaining (<NUM>) a sequence of digitized samples of an audio signal;
performing (<NUM>) a transform using the sequence of digitized samples, to generate a plurality of spectral lines;
obtaining (<NUM>) a group of spectral lines from the plurality of spectral lines;
quantizing (<NUM>) the group of spectral lines to generate a group of quantized values;
wherein quantizing the group of spectral lines to generate the group of quantized values comprises:
performing (<NUM>) a specialized rounding operation on a spectral line selected from the group of spectral lines; and
using (<NUM>) the specialized rounding operation to force a group parity value, computed for the group of quantized values, to a predetermined parity value; and
outputting one or more data frames based on the group of quantized values wherein:
the specialized 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, and
the group of quantized values comprise a group of integers or fixed-point values and wherein the specialized rounding operation flips a rounding direction used for rounding the pre-rounding value associated with the selected spectral line, to force the group parity value computed for the group of quantized values to the predetermined parity value.