[CELT-dev] Variable frame size and API changes

Pascal Charest c.lacsap at gmail.com
Thu May 20 13:17:50 PDT 2010

Hi Jean-Marc,

When the CELT over DAB protocol was designed, this web page was used
as one of the reference:

On the graphs representing quality/bitrate/delay trade-offs, we can
observe that for a given bitrate, the quality increases with longer
frame size. It was then decided that the protocol would allow to pack
from 1 to 4 CELT frames per DAB frame. This packing ratio is not fixed
and the user can select any of these configurations (except for 1
frame at 48kHz that is not allowed) when starting the encoder. A
checksum is added to every CELT frames. So, each configuration offer
an error resilience/quality trade-off. For the encoder delay, in our
case, it is not so important because the logical DAB frames are build
on a 24 ms basis. As long as it stays below 24 ms, not additional
delay is added to the system and the system delay doesn't decrease
with lower CELT delay.


2010/5/19 Jean-Marc Valin <Jean-Marc.Valin at usherbrooke.ca>:
> Hi Pascal,
> I think you would get much better performance if you were to pack multiple CELT
> frames together inside your "DAB frames". For example, you could easily do 24
> ms at 48 kHz by concatenating 2 frames of 12 ms (576 samples) or 3 frames of 8
> ms (384 samples). There's nothing that forces you to have one CELT frame per
> DAB frame.
> Cheers,
>    Jean-Marc
> Quoting Pascal Charest <c.lacsap at gmail.com>:
>> Hi Jean-Marc,
>> If celtenc framesize parameter is the number of samples per frame, I
>> can get 24 ms frame with 32kHz, 24kHz and 16kHz source. It is not
>> possible with 48kHz input as only 64 to 1024 framesize are supported.
>> For example, to obtain a 24ms framesize, I can use a 32kHz input with
>> the following command:
>> celtenc --framesize 768 input-32kHz.wav output.oga
>> I've tested the previous command it with celt version 0.7.1 and 0.6.1
>> and had no problem encoding and decoding.
>> For CELT over DAB, CELT can be configured to use 48, 32, 24 and 16 kHz
>> source. The allowed CELT framesize is 24, 12, 8 and 6 ms. Any mix of
>> these parameters can be used, except for 48 kHz / 24 ms that is not
>> supported by the CELT codec code. Once the channel is configured, we
>> don't plan to change its parameters real-time.
>> Pascal

More information about the celt-dev mailing list