/******************************************************************** * * * 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-2001 * * by the XIPHOPHORUS Company http://www.xiph.org/ * ******************************************************************** function: libvorbis backend and mapping structures; needed for static mode headers last mod: $Id: backends.h,v 1.11 2001/12/12 09:45:24 xiphmont Exp $ ********************************************************************/ /* 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 */ #ifndef _vorbis_backend_h_ #define _vorbis_backend_h_ #include "codec_internal.h" /* this would all be simpler/shorter with templates, but.... */ /* Transform backend generic *************************************/ /* only mdct right now. Flesh it out more if we ever transcend mdct in the transform domain */ /* Time backend generic ******************************************/ typedef struct{ void (*pack) (vorbis_info_time *,oggpack_buffer *); vorbis_info_time *(*unpack)(vorbis_info *,oggpack_buffer *); vorbis_look_time *(*look) (vorbis_dsp_state *,vorbis_info_mode *, vorbis_info_time *); vorbis_info_time *(*copy_info)(vorbis_info_time *); void (*free_info) (vorbis_info_time *); void (*free_look) (vorbis_look_time *); int (*forward) (struct vorbis_block *,vorbis_look_time *, float *,float *); int (*inverse) (struct vorbis_block *,vorbis_look_time *, float *,float *); } vorbis_func_time; typedef struct{ int dummy; } vorbis_info_time0; /* Floor backend generic *****************************************/ typedef struct{ void (*pack) (vorbis_info_floor *,oggpack_buffer *); vorbis_info_floor *(*unpack)(vorbis_info *,oggpack_buffer *); vorbis_look_floor *(*look) (vorbis_dsp_state *,vorbis_info_mode *, vorbis_info_floor *); vorbis_info_floor *(*copy_info)(vorbis_info_floor *); void (*free_info) (vorbis_info_floor *); void (*free_look) (vorbis_look_floor *); int (*forward) (struct vorbis_block *,vorbis_look_floor *, float *, const float *, /* in */ const float *, const float *, /* in */ float *); /* out */ void *(*inverse1) (struct vorbis_block *,vorbis_look_floor *); int (*inverse2) (struct vorbis_block *,vorbis_look_floor *, void *buffer,float *); } vorbis_func_floor; typedef struct{ int order; long rate; long barkmap; int ampbits; int ampdB; int numbooks; /* <= 16 */ int books[16]; float lessthan; /* encode-only config setting hacks for libvorbis */ float greaterthan; /* encode-only config setting hacks for libvorbis */ } vorbis_info_floor0; #define VIF_POSIT 63 #define VIF_CLASS 16 #define VIF_PARTS 31 typedef struct{ int partitions; /* 0 to 31 */ int partitionclass[VIF_PARTS]; /* 0 to 15 */ int class_dim[VIF_CLASS]; /* 1 to 8 */ int class_subs[VIF_CLASS]; /* 0,1,2,3 (bits: 1<