This document contains a detailed description of both the encoder and the decoder, along with a reference implementation. In most circumstances, and unless otherwise stated, the calculations in other implementations do NOT need to produce results that are bit-identical with the reference implementation, so alternate algorithms can sometimes be used. However, there are a few (clearly identified) cases where bit-exactness is required. An implementation is considered to be compatible if, for any valid bit-stream, the decoder's output is perceptually very close to the output produced by the reference decoder.
This document contains a detailed description of both the encoder and the decoder, along with a reference implementation. In most circumstances, and unless otherwise stated, the calculations
do <spanxstyle="strong">not</spanx> need to produce results that are bit-identical with the reference implementation, so alternate algorithms can sometimes be used. However, there are a few (clearly identified) cases, such as the bit allocation, where bit-exactness with the reference
implementation is required. An implementation is considered to be compatible if, for any valid bit-stream, the decoder's output is perceptually indistinguishable from the output produced by the reference decoder.
</t>
<t>
...
...
@@ -189,10 +192,10 @@ following parameters (in order):
<t>
The CELT bit-stream is "octet-based" in the sense that the encoder always produces an
integer number of octets when encoding a frame. Also, the bit-rate used by CELT can
<spanxstyle="strong">only</spanx> be determined by the number of octets produced by
the encoder. In many cases, the transport layer already encodes the data length, so
no extra information is used to signal the bit-rate. In cases where this is not true,
integer number of octets when encoding a frame. Also, the bit-rate used by the CELT encoder can
<spanxstyle="strong">only</spanx> be determined by the number of octets produced.
In many cases (e.g. UDP/RTP), the transport layer already encodes the data length, so
no extra information is necessary to signal the bit-rate. In cases where this is not true,
or when there are multiple compressed frames per packet, the size of each compressed
frame MUST be signalled in some way.
</t>
...
...
@@ -259,8 +262,8 @@ in bits per Bark band, and assuming 256-sample frames. These rows must be projec
current frame size and sample rate, using exact integer calculations. The reference
implementation
pre-computes these projections in compute_allocation_table() (<xref
target="modes.c">modes.c</xref>) but implementations are free to use any
approach which produces bit-identical allocation results.
target="modes.c">modes.c</xref>) and any other implementation