[CELT-dev] bit error robustness

Timothy B. Terriberry tterribe at xiph.org
Tue Jul 31 11:34:12 PDT 2012

Heiko.Zeuner at Sennheiser.com wrote:
> But the Celt decoder stops decoding with the first bit I manipulated
> even if this bit is not in the header.

celtenc encodes stores the result in an Ogg container, which contains 
checksums, so changing the bits without changing the checksums will 
cause it to reject the entire page the data is on.

> So is there a way to do the test from the command line?

a) You should probably be looking at Opus, not CELT. libcelt is no 
longer being maintained. Opus is a complete superset of CELT, and 
libopus contains many important bug fixes that libcelt does not.

b) If you use, for example, opus_demo from the libopus source 
distribution, you can avoid Ogg and its checksums, however it still 
stores raw 4-byte packet length fields in front of each packet, (see the 
if(encode_only) block around line 666 of opus_demo.c). Any real 
transport subject to bit errors would do a better job of recovering from 
errors to that field.

More information about the opus mailing list