Channel Coding: approximation instead of correction

Started by dudelmann December 17, 2009
Hi all

I am implementing an ADPCM codec for use in wireless transmissions (as
frequent blog visitors may already know :). I have a question regarding
channel coding for the wireless channel.

All the codes I know have error detection and (some) error correction
capabilities. So far so good. But for audio transmission I don't really
need to get the exact transmitted values. I don't care if the LSB falls
from time to time. I do care if a MSB or a sign falls. This leads to my
question:

Are there channel codes that provide something like a soft decision on the
transmitted value? Say I transmit an 8 bit value - I transmit the value
113. I need a channel code that tells me "there were errors, but the value
is probably larger than 100 and smaller than 130, so 115 would be a good
guess"

Do you know of any way to implement something like this or are there codes
doing this?

Markus
dudelmann <dtdestiny@gmx.de> wrote:

>I am implementing an ADPCM codec for use in wireless transmissions (as >frequent blog visitors may already know :). I have a question regarding >channel coding for the wireless channel.
>All the codes I know have error detection and (some) error correction >capabilities. So far so good. But for audio transmission I don't really >need to get the exact transmitted values. I don't care if the LSB falls >from time to time. I do care if a MSB or a sign falls. This leads to my >question:
>Are there channel codes that provide something like a soft decision on the >transmitted value? Say I transmit an 8 bit value - I transmit the value >113. I need a channel code that tells me "there were errors, but the value >is probably larger than 100 and smaller than 130, so 115 would be a good >guess"
Look into UEP (unequal errro protection. Steve
>Look into UEP (unequal errro protection. > >Steve
Aha - didn't know that one. Thx a bunch. Markus
dudelmann wrote:
> Hi all > > I am implementing an ADPCM codec for use in wireless transmissions (as > frequent blog visitors may already know :). I have a question regarding > channel coding for the wireless channel. > > All the codes I know have error detection and (some) error correction > capabilities. So far so good. But for audio transmission I don't really > need to get the exact transmitted values. I don't care if the LSB falls > from time to time. I do care if a MSB or a sign falls. This leads to my > question: > > Are there channel codes that provide something like a soft decision on the > transmitted value? Say I transmit an 8 bit value - I transmit the value > 113. I need a channel code that tells me "there were errors, but the value > is probably larger than 100 and smaller than 130, so 115 would be a good > guess" > > Do you know of any way to implement something like this or are there codes > doing this? >
There are several possibilities, First you could use RCPC (Rate Compatible Punctured Convolutional) Codes by Hagenauer (Digital Object Identifier: 10.1109/26.2763) Another possibility is to use soft-decision source decoding which estimates the current parameter based on the transition probabilities, this can be combined with a soft-out channel decoder to estimate a value which is close to the one you are trying to decode but still might be different. Take a look at T. Fingscheidt and P. Vary, "Softbit speech decoding: a new approach to error concealment", IEEE Trans. Speech Audio Proc. (Digital Object Identifier: 10.1109/89.905998) Further possibilities exist, but besides looking at UEP (based on RCPC codes) I suggest you take a look at the Fingscheidt paper. Regards, Laurent

dudelmann wrote:
> Hi all > > I have a question regarding > channel coding for the wireless channel. > > All the codes I know have error detection and (some) error correction > capabilities. So far so good. But for audio transmission I don't really > need to get the exact transmitted values. I don't care if the LSB falls > from time to time. I do care if a MSB or a sign falls.
Standard solution: encode MSBs with stonger code, and encode LSBs with weaker code or don't encode them at all. This can be optimized for any given error rate.
> This leads to my > question: > > Are there channel codes that provide something like a soft decision on the > transmitted value? Say I transmit an 8 bit value - I transmit the value > 113. I need a channel code that tells me "there were errors, but the value > is probably larger than 100 and smaller than 130, so 115 would be a good > guess" > > Do you know of any way to implement something like this or are there codes > doing this?
Since your ADPCM data is probably 3 or 4 bits per sample, the best solution would be encode entire symbol (or a pack of few symbols) as non-uniform QPSK constellation. So the bigger is the error, more bits are affected. Vladimir Vassilevsky DSP and Mixed Signal Design Consultant http://www.abvolt.com

Steve Pope wrote:

> dudelmann <dtdestiny@gmx.de> wrote: > > >>I am implementing an ADPCM codec for use in wireless transmissions (as >>frequent blog visitors may already know :). I have a question regarding >>channel coding for the wireless channel. > >>Are there channel codes that provide something like a soft decision on the >>transmitted value?
> > Look into UEP (unequal errro protection.
Nooo. APDCM is essentially an analog signal: companded residual of LPC. So transmit it as analog signal. Vladimir Vassilevsky DSP and Mixed Signal Design Consultant http://www.abvolt.com
On 12/17/2009 2:24 AM, dudelmann wrote:
> Hi all > > I am implementing an ADPCM codec for use in wireless transmissions (as > frequent blog visitors may already know :). I have a question regarding > channel coding for the wireless channel. > > All the codes I know have error detection and (some) error correction > capabilities. So far so good. But for audio transmission I don't really > need to get the exact transmitted values. I don't care if the LSB falls > from time to time. I do care if a MSB or a sign falls. This leads to my > question: > > Are there channel codes that provide something like a soft decision on the > transmitted value? Say I transmit an 8 bit value - I transmit the value > 113. I need a channel code that tells me "there were errors, but the value > is probably larger than 100 and smaller than 130, so 115 would be a good > guess" > > Do you know of any way to implement something like this or are there codes > doing this? > > Markus
Maybe I'm missing something, but if you have bits you don't need or don't care about you may want to consider not transmitting them. Usually one way to address this from a system perspective is to apply some sort of compression algorithm that makes all the bits transmitted of reasonably uniform importance and reclaims the unneeded bandwidth. This eliminates the problem of applying UEP and the overhead/complexity associated with it. Just another approach to consider. If one takes a system approach and weighs the complexity/delay/bandwidth/reliability implications of how it all works together it sometimes helps to home in on what the best solution might be for a particular application given the requirements for that application. -- Eric Jacobsen Minister of Algorithms Abineau Communications http://www.abineau.com
Vladimir Vassilevsky  <nospam@nowhere.com> wrote:

>Steve Pope wrote:
>> dudelmann <dtdestiny@gmx.de> wrote:
>>>I am implementing an ADPCM codec for use in wireless transmissions (as >>>frequent blog visitors may already know :). I have a question regarding
>> >>>Are there channel codes that provide something like a soft decision on the >>>transmitted value?
>> Look into UEP (unequal errro protection.
>Nooo.
>APDCM is essentially an analog signal: companded residual of LPC. So >transmit it as analog signal.
That would work -- analog residual, and digital LPC coefficients. I can't says that I've ever heard of anyone doing it this way though. Steve

Steve Pope wrote:

> Vladimir Vassilevsky <nospam@nowhere.com> wrote: >
>>APDCM is essentially an analog signal: companded residual of LPC. So >>transmit it as analog signal. > > > That would work -- analog residual, and digital LPC coefficients.
LPC is computed from the past. No need to transmit the coefficients.
> I can't says that I've ever heard of anyone doing it this way though.
The concept is similar to that of noise reduction systems with variable frequency response, like Dolby-ABC, etc. Vladimir Vassilevsky DSP and Mixed Signal Design Consultant http://www.abvolt.com