cwrs documentation
authorJean-Marc Valin <jean-marc.valin@octasic.com>
Tue, 9 Jun 2009 18:17:05 +0000 (14:17 -0400)
committerJean-Marc Valin <jean-marc.valin@octasic.com>
Tue, 9 Jun 2009 18:17:15 +0000 (14:17 -0400)
doc/ietf/draft-valin-celt-codec.xml

index c31b5c3..927ddab 100644 (file)
@@ -370,7 +370,14 @@ The search is performed by alg_quant() (<xref target="vq.c">vq.c</xref>).
 
 <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>