mirror of
https://github.com/blendogames/quadrilateralcowboy.git
synced 2024-11-24 21:11:49 +00:00
135 lines
4.3 KiB
C
135 lines
4.3 KiB
C
|
/********************************************************************
|
||
|
* *
|
||
|
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
|
||
|
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
|
||
|
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
|
||
|
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
|
||
|
* *
|
||
|
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
|
||
|
* by the XIPHOPHORUS Company http://www.xiph.org/ *
|
||
|
* *
|
||
|
********************************************************************
|
||
|
|
||
|
function: libvorbis codec headers
|
||
|
last mod: $Id: codec_internal.h,v 1.17 2003/08/18 05:34:01 xiphmont Exp $
|
||
|
|
||
|
********************************************************************/
|
||
|
|
||
|
#ifndef _V_CODECI_H_
|
||
|
#define _V_CODECI_H_
|
||
|
|
||
|
#include "envelope.h"
|
||
|
#include "codebook.h"
|
||
|
|
||
|
#define BLOCKTYPE_IMPULSE 0
|
||
|
#define BLOCKTYPE_PADDING 1
|
||
|
#define BLOCKTYPE_TRANSITION 0
|
||
|
#define BLOCKTYPE_LONG 1
|
||
|
|
||
|
#define PACKETBLOBS 15
|
||
|
|
||
|
typedef struct vorbis_block_internal{
|
||
|
float **pcmdelay; /* this is a pointer into local storage */
|
||
|
float ampmax;
|
||
|
int blocktype;
|
||
|
|
||
|
ogg_uint32_t packetblob_markers[PACKETBLOBS];
|
||
|
} vorbis_block_internal;
|
||
|
|
||
|
typedef void vorbis_look_floor;
|
||
|
typedef void vorbis_look_residue;
|
||
|
typedef void vorbis_look_transform;
|
||
|
|
||
|
/* mode ************************************************************/
|
||
|
typedef struct {
|
||
|
int blockflag;
|
||
|
int windowtype;
|
||
|
int transformtype;
|
||
|
int mapping;
|
||
|
} vorbis_info_mode;
|
||
|
|
||
|
typedef void vorbis_info_floor;
|
||
|
typedef void vorbis_info_residue;
|
||
|
typedef void vorbis_info_mapping;
|
||
|
|
||
|
#include "psy.h"
|
||
|
#include "bitrate.h"
|
||
|
|
||
|
typedef struct private_state {
|
||
|
/* local lookup storage */
|
||
|
envelope_lookup *ve; /* envelope lookup */
|
||
|
int window[2];
|
||
|
vorbis_look_transform **transform[2]; /* block, type */
|
||
|
drft_lookup fft_look[2];
|
||
|
|
||
|
int modebits;
|
||
|
vorbis_look_floor **flr;
|
||
|
vorbis_look_residue **residue;
|
||
|
vorbis_look_psy *psy;
|
||
|
vorbis_look_psy_global *psy_g_look;
|
||
|
|
||
|
/* local storage, only used on the encoding side. This way the
|
||
|
application does not need to worry about freeing some packets'
|
||
|
memory and not others'; packet storage is always tracked.
|
||
|
Cleared next call to a _dsp_ function */
|
||
|
unsigned char *header;
|
||
|
unsigned char *header1;
|
||
|
unsigned char *header2;
|
||
|
|
||
|
bitrate_manager_state bms;
|
||
|
|
||
|
ogg_int64_t sample_count;
|
||
|
} private_state;
|
||
|
|
||
|
/* codec_setup_info contains all the setup information specific to the
|
||
|
specific compression/decompression mode in progress (eg,
|
||
|
psychoacoustic settings, channel setup, options, codebook
|
||
|
etc).
|
||
|
*********************************************************************/
|
||
|
|
||
|
#include "highlevel.h"
|
||
|
typedef struct codec_setup_info {
|
||
|
|
||
|
/* Vorbis supports only short and long blocks, but allows the
|
||
|
encoder to choose the sizes */
|
||
|
|
||
|
long blocksizes[2];
|
||
|
|
||
|
/* modes are the primary means of supporting on-the-fly different
|
||
|
blocksizes, different channel mappings (LR or M/A),
|
||
|
different residue backends, etc. Each mode consists of a
|
||
|
blocksize flag and a mapping (along with the mapping setup */
|
||
|
|
||
|
int modes;
|
||
|
int maps;
|
||
|
int floors;
|
||
|
int residues;
|
||
|
int books;
|
||
|
int psys; /* encode only */
|
||
|
|
||
|
vorbis_info_mode *mode_param[64];
|
||
|
int map_type[64];
|
||
|
vorbis_info_mapping *map_param[64];
|
||
|
int floor_type[64];
|
||
|
vorbis_info_floor *floor_param[64];
|
||
|
int residue_type[64];
|
||
|
vorbis_info_residue *residue_param[64];
|
||
|
static_codebook *book_param[256];
|
||
|
codebook *fullbooks;
|
||
|
|
||
|
vorbis_info_psy *psy_param[4]; /* encode only */
|
||
|
vorbis_info_psy_global psy_g_param;
|
||
|
|
||
|
bitrate_manager_info bi;
|
||
|
highlevel_encode_setup hi; /* used only by vorbisenc.c. It's a
|
||
|
highly redundant structure, but
|
||
|
improves clarity of program flow. */
|
||
|
int halfrate_flag; /* painless downsample for decode */
|
||
|
} codec_setup_info;
|
||
|
|
||
|
extern vorbis_look_psy_global *_vp_global_look(vorbis_info *vi);
|
||
|
extern void _vp_global_free(vorbis_look_psy_global *look);
|
||
|
|
||
|
#endif
|
||
|
|