[Vorbis-dev] Building a new decoder - some questions on the spec (residue decode)
Peter Steele
steelehere at gmail.com
Sat Mar 28 00:50:32 PDT 2015
Hi
I am trying to build a new decoder in Java, I know there are a couple
of java decoders already but they don't implement the bit of the spec
I am having questions on
Question 1)
In section 8.6.2 it mentions
"However, it is also possible to set [residue_begin] and [residue_end]
to specify
a range partially or wholly beyond the maximum vector size. Before
beginning residue
decode, limit [residue_begin] and [residue_end] to the maximum
possible vector size
as follows."
The code segment then has
1) [actual\_size] = current blocksize/2;
2) if residue encoding is format 2
3) [actual\_size] = [actual\_size] * [ch];
4) [limit\_residue\_begin] = maximum of ([residue\_begin],[actual\_size]);
5) [limit\_residue\_end] = maximum of ([residue\_end],[actual\_size]);
In a real world vorbis file I see
residue_begin = 0;
residue_end = 256;
actual_size = 8;
following that code I would get
limit_residue_begin = 8
limit_residue_end = 256
Is this right? It feels wrong having an actual size of 8 yet the
difference of end-begin being 248.
Question 2)
Further down in 8.6.2 it has a line of code
18) if ([vqbook] is not ’unused’) {
Can someone tell me the full definition of 'unused' here? I have an
instance currently where the vqbook returned is not of type 1 or 2 so
doesn't have any vqvectors (The index returned from the
classifications was 0 which is the default up populated value from the
code in 8.6.1 which was retrieved in the header packet decode)
Many Thanks
Peter
More information about the Vorbis-dev
mailing list