From 8a670b19e14ef727a2500d251fae63d4e1ac40da Mon Sep 17 00:00:00 2001 From: Jean-Marc Valin Date: Fri, 2 Sep 2011 18:47:13 -0400 Subject: [PATCH] Some doc on spreading --- doc/draft-ietf-codec-opus.xml | 39 ++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/doc/draft-ietf-codec-opus.xml b/doc/draft-ietf-codec-opus.xml index 25ea705e..bcb81a32 100644 --- a/doc/draft-ietf-codec-opus.xml +++ b/doc/draft-ietf-codec-opus.xml @@ -4259,12 +4259,49 @@ they are equivalent to the mathematical definition. The decoding of the codeword from the index is performed as specified in , as implemented in function -decode_pulses() (cwrs.c). +decode_pulses() (cwrs.c). The decoded codeword is then normalised such that it's +L2-norm equals one.
+The normalised vector decoded in is then rotated +for the purpose of avoiding tonal artefacts. The rotation gain is equal to +
+ +
+ +where N is the number of dimensions, K is the number of pulses, and f_r depends on +the value of the "spread" parameter in the bit-stream. +
+ + +Spread value +f_r + 0 infinite (no rotation) + 1 15 + 2 10 + 3 5 + + + +The rotation angle is then calculated as +
+ +
+ +
+ + + If the decoded vector represents more +than one time block, then the following process is applied separately on each time block.