zenilib  0.5.3.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
codebook.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: basic shared codebook operations
14  last mod: $Id: codebook.h 17030 2010-03-25 06:52:55Z xiphmont $
15 
16  ********************************************************************/
17 
18 #ifndef _V_CODEBOOK_H_
19 #define _V_CODEBOOK_H_
20 
21 #include <ogg/ogg.h>
22 
23 /* This structure encapsulates huffman and VQ style encoding books; it
24  doesn't do anything specific to either.
25 
26  valuelist/quantlist are nonNULL (and q_* significant) only if
27  there's entry->value mapping to be done.
28 
29  If encode-side mapping must be done (and thus the entry needs to be
30  hunted), the auxiliary encode pointer will point to a decision
31  tree. This is true of both VQ and huffman, but is mostly useful
32  with VQ.
33 
34 */
35 
36 typedef struct static_codebook{
37  long dim; /* codebook dimensions (elements per vector) */
38  long entries; /* codebook entries */
39  long *lengthlist; /* codeword lengths in bits */
40 
41  /* mapping ***************************************************************/
42  int maptype; /* 0=none
43  1=implicitly populated values from map column
44  2=listed arbitrary values */
45 
46  /* The below does a linear, single monotonic sequence mapping. */
47  long q_min; /* packed 32 bit float; quant value 0 maps to minval */
48  long q_delta; /* packed 32 bit float; val 1 - val 0 == delta */
49  int q_quant; /* bits: 0 < quant <= 16 */
50  int q_sequencep; /* bitflag */
51 
52  long *quantlist; /* map == 1: (int)(entries^(1/dim)) element column map
53  map == 2: list of dim*entries quantized entry vals
54  */
55  int allocedp;
57 
58 typedef struct codebook{
59  long dim; /* codebook dimensions (elements per vector) */
60  long entries; /* codebook entries */
61  long used_entries; /* populated codebook entries */
63 
64  /* for encode, the below are entry-ordered, fully populated */
65  /* for decode, the below are ordered by bitreversed codeword and only
66  used entries are populated */
67  float *valuelist; /* list of dim*entries actual entry values */
68  ogg_uint32_t *codelist; /* list of bitstream codewords for each entry */
69 
70  int *dec_index; /* only used if sparseness collapsed */
75 
76  /* The current encoder uses only centered, integer-only lattice books. */
77  int quantvals;
78  int minval;
79  int delta;
80 } codebook;
81 
85 extern void vorbis_book_clear(codebook *b);
86 
87 extern float *_book_unquantize(const static_codebook *b,int n,int *map);
88 extern float *_book_logdist(const static_codebook *b,float *vals);
89 extern float _float32_unpack(long val);
90 extern long _float32_pack(float val);
91 extern int _best(codebook *book, float *a, int step);
92 extern int _ilog(unsigned int v);
93 extern long _book_maptype1_quantvals(const static_codebook *b);
94 
95 extern int vorbis_book_besterror(codebook *book,float *a,int step,int addmul);
96 extern long vorbis_book_codeword(codebook *book,int entry);
97 extern long vorbis_book_codelen(codebook *book,int entry);
98 
99 
100 
103 
104 extern int vorbis_book_encode(codebook *book, int a, oggpack_buffer *b);
105 
106 extern long vorbis_book_decode(codebook *book, oggpack_buffer *b);
107 extern long vorbis_book_decodevs_add(codebook *book, float *a,
108  oggpack_buffer *b,int n);
109 extern long vorbis_book_decodev_set(codebook *book, float *a,
110  oggpack_buffer *b,int n);
111 extern long vorbis_book_decodev_add(codebook *book, float *a,
112  oggpack_buffer *b,int n);
113 extern long vorbis_book_decodevv_add(codebook *book, float **a,
114  long off,int ch,
115  oggpack_buffer *b,int n);
116 
117 
118 
119 #endif
GLuint const GLfloat * val
Definition: glew.h:2715
long vorbis_book_codeword(codebook *book, int entry)
Definition: sharedbook.c:430
long dim
Definition: codebook.h:59
void vorbis_staticbook_destroy(static_codebook *b)
Definition: sharedbook.c:261
long vorbis_book_decodevs_add(codebook *book, float *a, oggpack_buffer *b, int n)
Definition: codebook.c:370
const static_codebook * c
Definition: codebook.h:62
int vorbis_book_encode(codebook *book, int a, oggpack_buffer *b)
Definition: codebook.c:274
GLclampd n
Definition: glew.h:7287
long vorbis_book_codelen(codebook *book, int entry)
Definition: sharedbook.c:437
ogg_uint32_t * dec_firsttable
Definition: codebook.h:72
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:8736
char * dec_codelengths
Definition: codebook.h:71
ogg_uint32_t * codelist
Definition: codebook.h:68
float * valuelist
Definition: codebook.h:67
int vorbis_book_init_decode(codebook *dest, const static_codebook *source)
Definition: sharedbook.c:313
long * lengthlist
Definition: codebook.h:39
long vorbis_book_decode(codebook *book, oggpack_buffer *b)
Definition: codebook.c:358
int vorbis_staticbook_pack(const static_codebook *c, oggpack_buffer *opb)
Definition: codebook.c:30
long used_entries
Definition: codebook.h:61
float * _book_unquantize(const static_codebook *b, int n, int *map)
Definition: sharedbook.c:196
void vorbis_book_clear(codebook *b)
Definition: sharedbook.c:270
long * quantlist
Definition: codebook.h:52
float _float32_unpack(long val)
Definition: sharedbook.c:62
int vorbis_book_besterror(codebook *book, float *a, int step, int addmul)
const GLdouble * v
Definition: glew.h:1377
const GLfloat * c
Definition: glew.h:14913
int _best(codebook *book, float *a, int step)
Definition: bookutil.c:25
long vorbis_book_decodev_add(codebook *book, float *a, oggpack_buffer *b, int n)
Definition: codebook.c:389
long _float32_pack(float val)
Definition: sharedbook.c:47
int _ilog(unsigned int v)
Definition: sharedbook.c:29
struct codebook codebook
unsigned int ogg_uint32_t
Definition: config_types.h:22
int * dec_index
Definition: codebook.h:70
int vorbis_book_init_encode(codebook *dest, const static_codebook *source)
Definition: sharedbook.c:283
int dec_maxlength
Definition: codebook.h:74
int delta
Definition: codebook.h:79
float * _book_logdist(const static_codebook *b, float *vals)
long _book_maptype1_quantvals(const static_codebook *b)
Definition: sharedbook.c:163
struct static_codebook static_codebook
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
const GLubyte GLuint GLuint GLuint GLuint alpha GLboolean GLboolean GLboolean GLboolean alpha GLint GLint GLsizei GLsizei GLenum type GLenum GLint GLenum GLint GLint GLsizei GLsizei GLint border GLenum GLint GLint GLint GLint GLint GLsizei GLsizei height GLsizei GLsizei GLenum GLenum const GLvoid *pixels GLenum GLint GLint GLint GLint j2 GLdouble GLdouble GLdouble GLdouble GLdouble GLdouble zFar GLenum GLenum GLint *params GLenum GLenum GLint *params GLenum GLenum GLint *params GLenum GLenum GLfloat *params GLenum GLint GLenum GLenum GLvoid *pixels GLenum GLint GLenum GLint *params GLenum GLenum GLint *params GLenum GLsizei const GLvoid *pointer GLenum GLenum const GLint *params GLenum GLfloat GLfloat GLint GLint const GLfloat *points GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat *points GLint GLfloat GLfloat GLint GLfloat GLfloat v2 GLenum GLenum const GLint *params GLdouble GLdouble GLdouble GLdouble GLdouble GLdouble zFar GLenum map
Definition: SDL_glfuncs.h:268
long vorbis_book_decodevv_add(codebook *book, float **a, long offset, int ch, oggpack_buffer *b, int n)
Definition: codebook.c:457
long vorbis_book_decodev_set(codebook *book, float *a, oggpack_buffer *b, int n)
Definition: codebook.c:434
GLsizei GLsizei GLchar * source
Definition: gl2ext.h:994
int quantvals
Definition: codebook.h:77
int minval
Definition: codebook.h:78
long entries
Definition: codebook.h:60
int dec_firsttablen
Definition: codebook.h:73
static_codebook * vorbis_staticbook_unpack(oggpack_buffer *opb)
Definition: codebook.c:149