[Speex-dev] Adding robustness to Speex on wireless networks.

Jean-Marc Valin jean-marc.valin at usherbrooke.ca
Fri Jun 8 22:51:13 PDT 2007


marzullo maio a écrit :
> I've not so much bandwidth to add channel coding but i've few bytes
> to spare for error detection. With a polynomial CRC-8 i've already
> more than 99.6 % to detect a burst error in a frame. So let's suppose
> the critical fields of Speex are:
> 
> Wideband bit Mode ID LSP OL pitch OL pitch gain OL Exc gain
> 
> So my plans are to calculate a CRC on these fields for each frame i
> send, then if i detect an error on the receiver side, i would replace
> the bad frame header with the last good frame header received. I
> remember this was supposed to work (a guess), i'll try it out on the
> CSD channel then. I hope this will slightly rise the quality
> expecially in bad signal conditions when i've more than 5% of frame
> loss. Is this approach better than just passing NULL for each frame
> lost? I could add interleaving too but i would double the "packet
> build latency" so i'm not convinced, latency is crucial for me.

The "replace with previous known good value" approach is only
recommended if you do it on a field-by-field basis (e.g. detect error in
LSPs, keep last LSP value, use newer values for the rest). If your CRC
is only at the frame level, you should consider the frame lost and use
the LPC instead (passing NULL to speex_decode).

	Jean-Marc


More information about the Speex-dev mailing list