zenilib  0.5.3.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
backends.h
Go to the documentation of this file.
1 /********************************************************************
2  * *
3  * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
4  * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
5  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
6  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
7  * *
8  * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
9  * by the Xiph.Org Foundation http://www.xiph.org/ *
10  * *
11  ********************************************************************
12 
13  function: libvorbis backend and mapping structures; needed for
14  static mode headers
15  last mod: $Id: backends.h 16962 2010-03-11 07:30:34Z xiphmont $
16 
17  ********************************************************************/
18 
19 /* this is exposed up here because we need it for static modes.
20  Lookups for each backend aren't exposed because there's no reason
21  to do so */
22 
23 #ifndef _vorbis_backend_h_
24 #define _vorbis_backend_h_
25 
26 #include "codec_internal.h"
27 
28 /* this would all be simpler/shorter with templates, but.... */
29 /* Floor backend generic *****************************************/
30 typedef struct{
34  void (*free_info) (vorbis_info_floor *);
35  void (*free_look) (vorbis_look_floor *);
36  void *(*inverse1) (struct vorbis_block *,vorbis_look_floor *);
37  int (*inverse2) (struct vorbis_block *,vorbis_look_floor *,
38  void *buffer,float *);
40 
41 typedef struct{
42  int order;
43  long rate;
44  long barkmap;
45 
46  int ampbits;
47  int ampdB;
48 
49  int numbooks; /* <= 16 */
50  int books[16];
51 
52  float lessthan; /* encode-only config setting hacks for libvorbis */
53  float greaterthan; /* encode-only config setting hacks for libvorbis */
54 
56 
57 
58 #define VIF_POSIT 63
59 #define VIF_CLASS 16
60 #define VIF_PARTS 31
61 typedef struct{
62  int partitions; /* 0 to 31 */
63  int partitionclass[VIF_PARTS]; /* 0 to 15 */
64 
65  int class_dim[VIF_CLASS]; /* 1 to 8 */
66  int class_subs[VIF_CLASS]; /* 0,1,2,3 (bits: 1<<n poss) */
67  int class_book[VIF_CLASS]; /* subs ^ dim entries */
68  int class_subbook[VIF_CLASS][8]; /* [VIF_CLASS][subs] */
69 
70 
71  int mult; /* 1 2 3 or 4 */
72  int postlist[VIF_POSIT+2]; /* first two implicit */
73 
74 
75  /* encode side analysis parameters */
76  float maxover;
77  float maxunder;
78  float maxerr;
79 
80  float twofitweight;
81  float twofitatten;
82 
83  int n;
84 
86 
87 /* Residue backend generic *****************************************/
88 typedef struct{
93  void (*free_info) (vorbis_info_residue *);
94  void (*free_look) (vorbis_look_residue *);
95  long **(*class) (struct vorbis_block *,vorbis_look_residue *,
96  int **,int *,int);
97  int (*forward) (oggpack_buffer *,struct vorbis_block *,
98  vorbis_look_residue *,
99  int **,int *,int,long **,int);
100  int (*inverse) (struct vorbis_block *,vorbis_look_residue *,
101  float **,int *,int);
103 
104 typedef struct vorbis_info_residue0{
105 /* block-partitioned VQ coded straight residue */
106  long begin;
107  long end;
108 
109  /* first stage (lossless partitioning) */
110  int grouping; /* group n vectors per partition */
111  int partitions; /* possible codebooks for a partition */
112  int partvals; /* partitions ^ groupbook dim */
113  int groupbook; /* huffbook for partitioning */
114  int secondstages[64]; /* expanded out to pointers in lookup */
115  int booklist[512]; /* list of second stage books */
116 
117  const int classmetric1[64];
118  const int classmetric2[64];
120 
121 /* Mapping backend generic *****************************************/
122 typedef struct{
124  oggpack_buffer *);
125  vorbis_info_mapping *(*unpack)(vorbis_info *,oggpack_buffer *);
126  void (*free_info) (vorbis_info_mapping *);
127  int (*forward) (struct vorbis_block *vb);
128  int (*inverse) (struct vorbis_block *vb,vorbis_info_mapping *);
130 
131 typedef struct vorbis_info_mapping0{
132  int submaps; /* <= 16 */
133  int chmuxlist[256]; /* up to 256 channels in a Vorbis stream */
134 
135  int floorsubmap[16]; /* [mux] submap to floors */
136  int residuesubmap[16]; /* [mux] submap to residue */
137 
139  int coupling_mag[256];
140  int coupling_ang[256];
141 
143 
144 #endif
#define VIF_POSIT
Definition: backends.h:58
GLvoid **typedef void(GLAPIENTRY *PFNGLGETVERTEXATTRIBDVPROC)(GLuint
Definition: glew.h:1824
int secondstages[64]
Definition: backends.h:114
void vorbis_info_floor
const int classmetric1[64]
Definition: backends.h:117
void vorbis_look_residue
const int classmetric2[64]
Definition: backends.h:118
EGLContext EGLenum EGLClientBuffer buffer
Definition: eglext.h:87
float twofitweight
Definition: backends.h:80
#define VIF_CLASS
Definition: backends.h:59
int
Definition: SDL_systhread.c:37
void vorbis_look_floor
int residuesubmap[16]
Definition: backends.h:136
int coupling_mag[256]
Definition: backends.h:139
struct vorbis_info_mapping0 vorbis_info_mapping0
void vorbis_info_residue
#define VIF_PARTS
Definition: backends.h:60
int coupling_ang[256]
Definition: backends.h:140
struct vorbis_info_residue0 vorbis_info_residue0
int books
Definition: metrics.c:56
int chmuxlist[256]
Definition: backends.h:133
void vorbis_info_mapping