backends.h |
this is exposed up here because we need it for static modes.
Lookups for each backend aren't exposed because there's no reason
to do so |
5151 |
bitrate.h |
encode side bitrate tracking |
1963 |
books |
|
|
codebook.h |
This structure encapsulates huffman and VQ style encoding books; it
doesn't do anything specific to either.
valuelist/quantlist are nonNULL (and q_* significant) only if
there's entry->value mapping to be done.
If encode-side mapping must be done (and thus the entry needs to be
hunted), the auxiliary encode pointer will point to a decision
tree. This is true of both VQ and huffman, but is mostly useful
with VQ.
|
4958 |
codec_internal.h |
this is a pointer into local storage |
5392 |
envelope.h |
a bit less than short block |
2116 |
highlevel.h |
bitrate management below all settable |
1840 |
lookup.h |
|
1249 |
lookup_data.h |
|
10036 |
lpc.h |
simple linear scale LPC code |
1174 |
lsp.h |
|
1182 |
masking.h |
more detailed ATH; the bass if flat to save stressing the floor
overly for only a bin or two of savings. |
39455 |
mdct.h |
#define MDCT_INTEGERIZED <- be warned there could be some hurt left here |
1955 |
misc.h |
|
1988 |
modes |
|
|
os.h |
_V_IFDEFJAIL_H_ |
5176 |
psy.h |
psychoacoustic setup ******************************************* |
4628 |
registry.h |
|
1247 |
scales.h |
MS Visual Studio doesn't have C99 inline keyword. |
2761 |
smallft.h |
|
1218 |
vorbis_analysis.c |
decides between modes, dispatches to the appropriate mapping. |
3088 |
vorbis_bitrate.c |
compute bitrate tracking setup |
8478 |
vorbis_block.c |
pcm accumulator examples (not exhaustive):
<-------------- lW ---------------->
<--------------- W ---------------->
: .....|..... _______________ |
: .''' | '''_--- | |\ |
:.....''' |_____--- '''......| | \_______|
:.................|__________________|_______|__|______|
|<------ Sl ------>| > Sr < |endW
|beginSl |endSl | |endSr
|beginW |endlW |beginSr
|< lW >|
<--------------- W ---------------->
| | .. ______________ |
| | ' `/ | ---_ |
|___.'___/`. | ---_____|
|_______|__|_______|_________________|
| >|Sl|< |<------ Sr ----->|endW
| | |endSl |beginSr |endSr
|beginW | |endlW
mult[0] |beginSl mult[n]
<-------------- lW ----------------->
|<--W-->|
: .............. ___ | |
: .''' |`/ \ | |
:.....''' |/`....\|...|
:.........................|___|___|___|
|Sl |Sr |endW
| | |endSr
| |beginSr
| |endSl
|beginSl
|beginW
|
30592 |
vorbis_codebook.c |
packs the given codebook into the bitstream ************************* |
13408 |
vorbis_envelope.c |
not random |
10672 |
vorbis_floor0.c |
/
static void floor0_free_info(vorbis_info_floor *i){
vorbis_info_floor0 *info=(vorbis_info_floor0 *)i;
if(info){
memset(info,0,sizeof(*info));
_ogg_free(info);
}
}
static void floor0_free_look(vorbis_look_floor *i){
vorbis_look_floor0 *look=(vorbis_look_floor0 *)i;
if(look){
if(look->linearmap){
if(look->linearmap[0])_ogg_free(look->linearmap[0]);
if(look->linearmap[1])_ogg_free(look->linearmap[1]);
_ogg_free(look->linearmap);
}
memset(look,0,sizeof(*look));
_ogg_free(look);
}
}
static vorbis_info_floor *floor0_unpack (vorbis_info *vi,oggpack_buffer *opb){
codec_setup_info *ci=vi->codec_setup;
int j;
vorbis_info_floor0 *info=_ogg_malloc(sizeof(*info));
info->order=oggpack_read(opb,8);
info->rate=oggpack_read(opb,16);
info->barkmap=oggpack_read(opb,16);
info->ampbits=oggpack_read(opb,6);
info->ampdB=oggpack_read(opb,8);
info->numbooks=oggpack_read(opb,4)+1;
if(info->order<1)goto err_out;
if(info->rate<1)goto err_out;
if(info->barkmap<1)goto err_out;
if(info->numbooks<1)goto err_out;
for(j=0;j<info->numbooks;j++){
info->books[j]=oggpack_read(opb,8);
if(info->books[j]<0 || info->books[j]>=ci->books)goto err_out;
if(ci->book_param[info->books[j]]->maptype==0)goto err_out;
if(ci->book_param[info->books[j]]->dim<1)goto err_out;
}
return(info);
err_out:
floor0_free_info(info);
return(NULL);
}
/* initialize Bark scale and normalization lookups. We could do this
with static tables, but Vorbis allows a number of possible
combinations, so it's best to do it computationally.
The below is authoritative in terms of defining scale mapping.
Note that the scale depends on the sampling rate as well as the
linear block and mapping sizes |
6889 |
vorbis_floor1.c |
floor 1 fixed at -140dB to 0dB range |
30922 |
vorbis_info.c |
general handling of the header and the vorbis_info structure (and
substructures) |
19866 |
vorbis_lookup.c |
interpolated lookup based cos function, domain 0 to PI only |
3246 |
vorbis_lpc.c |
Some of these routines (autocorrelator, LPC coefficient estimator)
are derived from code written by Jutta Degener and Carsten Bormann;
thus we include their copyright below. The entirety of this file
is freely redistributable on the condition that both of these
copyright notices are preserved without modification. |
4486 |
vorbis_lsp.c |
Note that the lpc-lsp conversion finds the roots of polynomial with
an iterative root polisher (CACM algorithm 283). It *is* possible
to confuse this algorithm into not converging; that should only
happen with absurdly closely spaced roots (very sharp peaks in the
LPC f response) which in turn should be impossible in our use of
the code. If this *does* happen anyway, it's a bug in the floor
finder; find the cause of the confusion (probably a single bin
spike or accidental near-float-limit resolution problems) and
correct it. |
12599 |
vorbis_mapping0.c |
simplistic, wasteful way of doing this (unique lookup for each
mode/submapping); there should be a central repository for
identical lookups. That will require minor work, so I'm putting it
off as low priority.
Why a lookup for each backend in a given mode? Because the
blocksize is set by the mode, and low backend lookups may require
parameters from other areas of the mode/mapping |
28765 |
vorbis_mdct.c |
this can also be run as an integer transform by uncommenting a
define in mdct.h; the integerization is a first pass and although
it's likely stable for Vorbis, the dynamic range is constrained and
roundoff isn't done (so it's noisy). Consider it functional, but
only a starting point. There's no point on a machine with an FPU |
15493 |
vorbis_psy.c |
we add back in the ATH to avoid low level curves falling off to
-infinity and unnecessarily cutting off high level curves in the
curve limiting (last step). |
35900 |
vorbis_registry.c |
seems like major overkill now; the backend numbers will grow into
the infrastructure soon enough |
1772 |
vorbis_res0.c |
Slow, slow, slow, simpleminded and did I mention it was slow? The
encode/decode loops are coded for clarity and performance is not
yet even a nagging little idea lurking in the shadows. Oh and BTW,
it's slow. |
24915 |
vorbis_sharedbook.c |
pack/unpack helpers ***************************************** |
17806 |
vorbis_smallft.c |
FFT implementation from OggSquish, minus cosine transforms,
minus all but radix 2/4 case. In Vorbis we only need this
cut-down version.
To do more than just power-of-two sized vectors, see the full
version I wrote for NetLib.
Note that the packing is a little strange; rather than the FFT r/i
packing following R_0, I_n, R_1, I_1, R_2, I_2 ... R_n-1, I_n-1,
it follows R_0, R_1, I_1, R_2, I_2 ... R_n-1, I_n-1, I_n like the
FORTRAN version
|
22185 |
vorbis_synthesis.c |
first things first. Make sure decode is ready |
5180 |
vorbis_window.c |
|
128646 |
vorbisenc.c |
careful with this; it's using static array sizing to make managing
all the modes a little less annoying. If we use a residue backend
with > 12 partition types, or a different division of iteration,
this needs to be updated. |
39310 |
window.h |
|
1086 |