diff --git a/Doxyfile b/Doxyfile index eac017589b1d92485f88fe6e60196c85acf2ca46..e309b62be15ed37dfb93a9871e8d4d86aa789cec 100644 --- a/Doxyfile +++ b/Doxyfile @@ -5,7 +5,7 @@ #--------------------------------------------------------------------------- DOXYFILE_ENCODING = UTF-8 PROJECT_NAME = CELT -PROJECT_NUMBER = 0.5.2 +PROJECT_NUMBER = 0.6.0 OUTPUT_DIRECTORY = doc/API CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English diff --git a/Doxyfile.devel b/Doxyfile.devel index 39ef5134d902fd0277255093c401f88084edeb9f..569e83db4527ee942a5e9a085f9a4d30c7581309 100644 --- a/Doxyfile.devel +++ b/Doxyfile.devel @@ -5,7 +5,7 @@ #--------------------------------------------------------------------------- DOXYFILE_ENCODING = UTF-8 PROJECT_NAME = CELT -PROJECT_NUMBER = 0.5.0 +PROJECT_NUMBER = 0.6.0 OUTPUT_DIRECTORY = doc/devel CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English diff --git a/doc/ietf/draft-valin-celt-codec.xml b/doc/ietf/draft-valin-celt-codec.xml index 8d3e1f0a33057d5195f95995543f9001bccecbdd..bbe56e06f242c84760c1303f8f634d0efb704637 100644 --- a/doc/ietf/draft-valin-celt-codec.xml +++ b/doc/ietf/draft-valin-celt-codec.xml @@ -244,19 +244,21 @@ bands is computed in compute_pbands() (<xref target="modes.c">modes.c</xref>). <section anchor="CELT Encoder" title="CELT Encoder"> <t> +The top-level function for encoding a CELT frame in the reference implementation is +celt_encode() (<xref target="celt.c">celt.c</xref>). The basic block diagram of the CELT encoder is illustrated in <xref target="encoder-diagram"></xref>. The encoder contains most of the building blocks of the decoder and can, with very little extra computation, compute the signal that would be decoded by the decoder. -The top-level function for encoding a CELT frame in the reference implementation is -celt_encode() (<xref target="celt.c">celt.c</xref>). +CELT has three main quantizers denoted Q1, Q2 and Q3 and that apply to band energies, pitch gains +and normalised MDCT bins, respectively. </t> <figure anchor="encoder-diagram"> <artwork> <![CDATA[ - +-----------+ +--+ - +--| Energy |-+---->|Q1|--------------+ - | |computation| | +--+ | + +-----------+ +--+ + +--| Energy |-+----->|Q1|-------------+ + | |computation| | +--+ | | +-----------+ | | | +-----+ | | v v @@ -625,10 +627,10 @@ The best PVQ codeword is encoded by encode_pulses() (<xref target="cwrs.c">cwrs. The codeword is converted to a unique index in the same way as specified in <xref target="PVQ"></xref>. The indexing is based on the calculation of V(N,K) (denoted N(L,K) in <xref target="PVQ"></xref>), which is the number of possible combinations of K pulses in N samples. The number of combinations can be computed recursively as -V(N,K) = V(N+1,K) + V(N,K+1) + V(N+1,K+1), with V(N,0) = 1 and V(0,K) = 0 for K != 0. -There are many different ways to compute V(N,K), including pre-compute tables and direct -use of the recursive formulation. The reference implementation applies the recursive -formulation one line (or column) at a time to save on memory use. +V(N,K) = V(N+1,K) + V(N,K+1) + V(N+1,K+1), with V(N,0) = 1 and V(0,K) = 0, K != 0. +There are many different ways to compute V(N,K), including pre-computed tables and direct +use of the recursive formulation. To save on memory use, the reference implementation applies the recursive +formulation one line (or column) at a time. </t> </section>