ref: b469e601f635bf55ce6cdbd16c713638f1c0d4fd
parent: 24c25a23d139d82efe4a7a1d0c656512e92db6bb
author: Jean-Marc Valin <[email protected]>
date: Tue Jun 9 10:17:05 EDT 2009
cwrs documentation
--- a/doc/ietf/draft-valin-celt-codec.xml
+++ b/doc/ietf/draft-valin-celt-codec.xml
@@ -370,7 +370,14 @@
<section anchor="Index Encoding" title="Index Encoding">
<t>
-Derf?? The index is encoded by encode_pulses() (<xref target="cwrs.c">cwrs.c</xref>).
+The best PVQ codeword is encoded by encode_pulses() (<xref target="cwrs.c">cwrs.c</xref>).
+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.
</t>
</section>