[vorbis-dev] Codebook Questions

Amit Chatwani achatwan at Princeton.EDU
Mon Nov 24 18:29:32 PST 2003



Hi, 
 
I have a few questions regarding vector quantization and the use of
codebooks in Vorbis.  I have done a significant search of the mailing
list archives but was unable to find the answers to these questions.  I
realize I am asking several questions here, but I would really
appreciate any help.
 
1.  Are the documents that were on vorbis.on2.com currently available
anywhere?
 
2.  What exactly is being quantized during "Vector quantization"?
My understanding of this process is as follows: for each frame of 2n
samples (per channel), MDCT yields n values.  The floor is calculated
and subtracted for these N values leaving the residue "vector."  This
vector is divided into chunks, and then each chunk is encoded/quantized
using a particular codebook.  If we have c chunks, this yields N/c
values per chunk.  Are these n scalars the "vectors" (1-dimensional)
that are being quantized?
 
3.  How is a particular codebook selected for each "chunk"?  I assume
this selection is made to minimize error but is also contingent on a
particular bitrate or quality setting.  Is there some sort of algorithm
to determine which codebook to use, or does the encoder sample a set of
codebooks and pick the best one?
 
4.  What are classification codewords, and why are they used?
Specifically, I am having trouble understanding the following excerpt
from the documentation:
 
"The classification numbers of each partition can be thought of as
forming a vector in their own right, as in the illustration below. Just
as the residue vectors are coded in grouped partitions to increase
encoding efficiency, the classification vector is also partitioned into
chunks. The integer elements of each scalar in a classification chunk
are built into a single scalar that represents the classification
numbers in that chunk."
--http://www.xiph.org/ogg/vorbis/doc/vorbis-spec-res.html
 
5.  I'm also confused about the following multiple-pass encoding of the
residue vectors.  The excerpt from the documentation below states that
there is a different codebook used in each pass, but the classification
number is constant.  How does this work?  Isn't the classification
number related to the codebook used?
 
"The values in a residue vector may be encoded monolithically in a
single pass through the residue vector, but more often efficient
codebook design dictates that each vector is encoded as the additive sum
of several passes through the residue vector using more than one VQ
codebook. Thus, each residue value potentially accumulates values from
multiple decode passes. The classification value associated with a
partition is the same in each pass, thus the classification codeword is
coded only in the first pass."
 
Thanks for any help,
 
Amit Chatwani

-----Original Message-----
From: owner-vorbis-dev at xiph.org [mailto:owner-vorbis-dev at xiph.org] On
Behalf Of Christian Weisgerber
Sent: Monday, November 24, 2003 5:30 PM
To: vorbis-dev at xiph.org
Subject: [vorbis-dev] Re: libogg 1.1 test failure on alpha

<p>Christian Weisgerber <naddy at mips.inka.de> wrote:

> i386 completes fine.  I haven't tried any BE machines yet.

I've tried a few more archs and it's specifically a 64-bit problem.


-- 
Christian "naddy" Weisgerber                          naddy at mips.inka.de
--- >8 ----
List archives:  http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to
'vorbis-dev-request at xiph.org' containing only the word 'unsubscribe' in
the body.  No subject is needed. Unsubscribe messages sent to the list
will be ignored/filtered.

--- >8 ----
List archives:  http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to 'vorbis-dev-request at xiph.org'
containing only the word 'unsubscribe' in the body.  No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.




More information about the Vorbis-dev mailing list