From c57475b48037204df8851bd52089742174856e5c Mon Sep 17 00:00:00 2001
From: Jean-Marc Valin
Date: Tue, 30 Jun 2009 15:27:06 -0400
Subject: [PATCH] ietf doc: range coder
---
doc/ietf/draft-valin-celt-codec.xml | 46 ++++++++++++++++++++++++++++++++++---
1 file changed, 43 insertions(+), 3 deletions(-)
diff --git a/doc/ietf/draft-valin-celt-codec.xml b/doc/ietf/draft-valin-celt-codec.xml
index 409562cb..9da03249 100644
--- a/doc/ietf/draft-valin-celt-codec.xml
+++ b/doc/ietf/draft-valin-celt-codec.xml
@@ -194,7 +194,7 @@ following parameters:
The operation of both the encoder and decoder depend on the mode data. A mode
-definition can be created by celt_create_mode() (modes.h)
+definition can be created by celt_create_mode() (modes.c)
based on three parameters:
frame size (number of samples)
@@ -227,7 +227,17 @@ The bands used for coding in CELT are based on the Bark scale. The Bark band edg
2700, 3150, 3700, 4400, 5300, 6400, 7700, 9500, 12000, 15500, 20000]. The actual bands used by the codec
depend on the sampling rate and the frame size being used. The mapping from Hz to MDCT bins is done by
multiplying by sampling_rate/(2*frame_size) and rounding to the nearest value. An exception is made for
-the lower frequencies to ensure that all bands contain at least 3 MDCT bins.
+the lower frequencies to ensure that all bands contain at least 3 MDCT bins. The definition of the Bark
+bands is computed in compute_ebands() (modes.c).
+

+
+
+CELT includes a pitch predictor for which the gains are defined over
+a set of pitch bands. The pitch bands are defined
+(in Hz) as [0, 345, 689, 1034, 1378, 2067, 3273, 5340, 6374]. The Hz values
+are converted to MDCT bins in the same was as for the Bark bands. The pitch
+bands boundaries are aligned to Bark band boundaries. The definition of the pitch
+bands is computed in compute_pbands() (modes.c).
@@ -314,8 +324,30 @@ on the non-pre-emphasised signal. The inverse of the pre-emphasis is applied at
-()
+CELT uses an entropy coder based upon ,
+which is itself a rediscovery of the FIFO arithmetic code introduced by .
+It is very similar to arithmetic encoding, except that encoding is done with
+digits in any base, instead of with bits, and so it is faster when using
+larger bases (i.e.: a byte).
+
+
+
+The range coder also acts as the bit-packer for CELT. It is
+used in three different ways to encode:
+
+symbols with a probability model using ec_encode() (rangeenc.c)
+integers from 0 to 2^M-1 using ec_enc_uint() or ec_enc_bits() (encenc.c)
+integers from 0 to N-1 (where N is not a power of two) using ec_enc_uint() (encenc.c)
+

+
+
+The main encoding function is ec_encode(), which takes as an argument the range of the symbol to be encoded. [[Describe how ec_encode() works]]
+
+
+
+Functions ec_enc_uint() or ec_enc_bits() are based on ec_encode() and consider N equiprobable symbols, each with a frequency of 1. [[Describe the handling of larger integers]]
+
@@ -851,6 +883,14 @@ CELT and AVT communities for their input:
+
+
+Source coding algorithms for fast data compression
+
+
+
+
+
--
2.11.0