openshot-audio  0.1.2
ogg.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-2002 *
9  * by the Xiph.Org Foundation http://www.xiph.org/ *
10  * *
11  ********************************************************************
12 
13  function: toplevel libogg include
14  last mod: $Id: ogg.h,v 1.1 2007/06/07 17:48:18 jules_rms Exp $
15 
16  ********************************************************************/
17 #ifndef _OGG_H
18 #define _OGG_H
19 
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23 
24 #include "os_types.h"
25 
26 typedef struct {
27  long endbyte;
28  int endbit;
29 
30  unsigned char *buffer;
31  unsigned char *ptr;
32  long storage;
34 
35 /* ogg_page is used to encapsulate the data in one Ogg bitstream page *****/
36 
37 typedef struct {
38  unsigned char *header;
39  long header_len;
40  unsigned char *body;
41  long body_len;
42 } ogg_page;
43 
44 
45 static inline ogg_uint32_t ogg_bitreverse(ogg_uint32_t x){
46  x= ((x>>16)&0x0000ffffUL) | ((x<<16)&0xffff0000UL);
47  x= ((x>> 8)&0x00ff00ffUL) | ((x<< 8)&0xff00ff00UL);
48  x= ((x>> 4)&0x0f0f0f0fUL) | ((x<< 4)&0xf0f0f0f0UL);
49  x= ((x>> 2)&0x33333333UL) | ((x<< 2)&0xccccccccUL);
50  return((x>> 1)&0x55555555UL) | ((x<< 1)&0xaaaaaaaaUL);
51 }
52 
53 
54 /* ogg_stream_state contains the current encode/decode state of a logical
55  Ogg bitstream **********************************************************/
56 
57 typedef struct {
58  unsigned char *body_data; /* bytes from packet bodies */
59  long body_storage; /* storage elements allocated */
60  long body_fill; /* elements stored; fill mark */
61  long body_returned; /* elements of fill returned */
62 
63 
64  int *lacing_vals; /* The values that will go to the segment table */
65  ogg_int64_t *granule_vals; /* granulepos values for headers. Not compact
66  this way, but it is simple coupled to the
67  lacing fifo */
72 
73  unsigned char header[282]; /* working space for header encode */
75 
76  int e_o_s; /* set when we have buffered the last packet in the
77  logical bitstream */
78  int b_o_s; /* set after we've written the initial page
79  of a logical bitstream */
80  long serialno;
81  long pageno;
82  ogg_int64_t packetno; /* sequence number for decode; the framing
83  knows where there's a hole in the data,
84  but we need coupling so that the codec
85  (which is in a seperate abstraction
86  layer) also knows about the gap */
88 
90 
91 /* ogg_packet is used to encapsulate the data and metadata belonging
92  to a single raw Ogg/Vorbis packet *************************************/
93 
94 typedef struct {
95  unsigned char *packet;
96  long bytes;
97  long b_o_s;
98  long e_o_s;
99 
101 
102  ogg_int64_t packetno; /* sequence number for decode; the framing
103  knows where there's a hole in the data,
104  but we need coupling so that the codec
105  (which is in a seperate abstraction
106  layer) also knows about the gap */
107 } ogg_packet;
108 
109 typedef struct {
110  unsigned char *data;
111  int storage;
112  int fill;
113  int returned;
114 
115  int unsynced;
119 
120 /* Ogg BITSTREAM PRIMITIVES: bitstream ************************/
121 
122 extern void oggpack_writeinit(oggpack_buffer *b);
123 extern void oggpack_writetrunc(oggpack_buffer *b,long bits);
124 extern void oggpack_writealign(oggpack_buffer *b);
125 extern void oggpack_writecopy(oggpack_buffer *b,void *source,long bits);
126 extern void oggpack_reset(oggpack_buffer *b);
127 extern void oggpack_writeclear(oggpack_buffer *b);
128 extern void oggpack_readinit(oggpack_buffer *b,unsigned char *buf,int bytes);
129 extern void oggpack_write(oggpack_buffer *b,unsigned long value,int bits);
130 extern long oggpack_look(oggpack_buffer *b,int bits);
131 extern long oggpack_look1(oggpack_buffer *b);
132 extern void oggpack_adv(oggpack_buffer *b,int bits);
133 extern void oggpack_adv1(oggpack_buffer *b);
134 extern long oggpack_read(oggpack_buffer *b,int bits);
135 extern long oggpack_read1(oggpack_buffer *b);
136 extern long oggpack_bytes(oggpack_buffer *b);
137 extern long oggpack_bits(oggpack_buffer *b);
138 extern unsigned char *oggpack_get_buffer(oggpack_buffer *b);
139 
140 extern void oggpackB_writeinit(oggpack_buffer *b);
141 extern void oggpackB_writetrunc(oggpack_buffer *b,long bits);
142 extern void oggpackB_writealign(oggpack_buffer *b);
143 extern void oggpackB_writecopy(oggpack_buffer *b,void *source,long bits);
144 extern void oggpackB_reset(oggpack_buffer *b);
145 extern void oggpackB_writeclear(oggpack_buffer *b);
146 extern void oggpackB_readinit(oggpack_buffer *b,unsigned char *buf,int bytes);
147 extern void oggpackB_write(oggpack_buffer *b,unsigned long value,int bits);
148 extern long oggpackB_look(oggpack_buffer *b,int bits);
149 extern long oggpackB_look1(oggpack_buffer *b);
150 extern void oggpackB_adv(oggpack_buffer *b,int bits);
151 extern void oggpackB_adv1(oggpack_buffer *b);
152 extern long oggpackB_read(oggpack_buffer *b,int bits);
153 extern long oggpackB_read1(oggpack_buffer *b);
154 extern long oggpackB_bytes(oggpack_buffer *b);
155 extern long oggpackB_bits(oggpack_buffer *b);
156 extern unsigned char *oggpackB_get_buffer(oggpack_buffer *b);
157 
158 /* Ogg BITSTREAM PRIMITIVES: encoding **************************/
159 
160 extern int ogg_stream_packetin(ogg_stream_state *os, ogg_packet *op);
161 extern int ogg_stream_pageout(ogg_stream_state *os, ogg_page *og);
162 extern int ogg_stream_flush(ogg_stream_state *os, ogg_page *og);
163 
164 /* Ogg BITSTREAM PRIMITIVES: decoding **************************/
165 
166 extern int ogg_sync_init(ogg_sync_state *oy);
167 extern int ogg_sync_clear(ogg_sync_state *oy);
168 extern int ogg_sync_reset(ogg_sync_state *oy);
169 extern int ogg_sync_destroy(ogg_sync_state *oy);
170 
171 extern char *ogg_sync_buffer(ogg_sync_state *oy, long size);
172 extern int ogg_sync_wrote(ogg_sync_state *oy, long bytes);
173 extern long ogg_sync_pageseek(ogg_sync_state *oy,ogg_page *og);
174 extern int ogg_sync_pageout(ogg_sync_state *oy, ogg_page *og);
175 extern int ogg_stream_pagein(ogg_stream_state *os, ogg_page *og);
178 
179 /* Ogg BITSTREAM PRIMITIVES: general ***************************/
180 
181 extern int ogg_stream_init(ogg_stream_state *os,int serialno);
182 extern int ogg_stream_clear(ogg_stream_state *os);
183 extern int ogg_stream_reset(ogg_stream_state *os);
184 extern int ogg_stream_reset_serialno(ogg_stream_state *os,int serialno);
185 extern int ogg_stream_destroy(ogg_stream_state *os);
186 extern int ogg_stream_eos(ogg_stream_state *os);
187 
188 extern void ogg_page_checksum_set(ogg_page *og);
189 
190 extern int ogg_page_version(ogg_page *og);
191 extern int ogg_page_continued(ogg_page *og);
192 extern int ogg_page_bos(ogg_page *og);
193 extern int ogg_page_eos(ogg_page *og);
195 extern int ogg_page_serialno(ogg_page *og);
196 extern long ogg_page_pageno(ogg_page *og);
197 extern int ogg_page_packets(ogg_page *og);
198 
199 extern void ogg_packet_clear(ogg_packet *op);
200 
201 
202 #ifdef __cplusplus
203 }
204 #endif
205 
206 #endif /* _OGG_H */
unsigned char * ptr
Definition: ogg.h:31
long lacing_storage
Definition: ogg.h:68
int ogg_page_bos(ogg_page *og)
Definition: framing.c:37
int b_o_s
Definition: ogg.h:78
int fill
Definition: ogg.h:112
int64_t ogg_int64_t
Definition: config_types.h:8
long oggpackB_bits(oggpack_buffer *b)
Definition: bitwise.c:438
Definition: ogg.h:37
int ogg_stream_flush(ogg_stream_state *os, ogg_page *og)
Definition: framing.c:333
unsigned char * body
Definition: ogg.h:40
long oggpack_bits(oggpack_buffer *b)
Definition: bitwise.c:430
long oggpack_look(oggpack_buffer *b, int bits)
Definition: bitwise.c:225
ogg_int64_t ogg_page_granulepos(ogg_page *og)
Definition: framing.c:45
long body_fill
Definition: ogg.h:60
void oggpackB_writeclear(oggpack_buffer *b)
Definition: bitwise.c:210
unsigned char * oggpackB_get_buffer(oggpack_buffer *b)
Definition: bitwise.c:446
long lacing_fill
Definition: ogg.h:69
Definition: ogg.h:94
unsigned char * data
Definition: ogg.h:110
long storage
Definition: ogg.h:32
unsigned char * body_data
Definition: ogg.h:58
long oggpackB_read(oggpack_buffer *b, int bits)
Definition: bitwise.c:348
void oggpackB_writecopy(oggpack_buffer *b, void *source, long bits)
Definition: bitwise.c:191
long header_len
Definition: ogg.h:39
long body_returned
Definition: ogg.h:61
void oggpack_write(oggpack_buffer *b, unsigned long value, int bits)
Definition: bitwise.c:69
int ogg_page_serialno(ogg_page *og)
Definition: framing.c:58
long oggpackB_bytes(oggpack_buffer *b)
Definition: bitwise.c:434
int ogg_sync_wrote(ogg_sync_state *oy, long bytes)
Definition: framing.c:530
long oggpack_look1(oggpack_buffer *b)
Definition: bitwise.c:278
int bodybytes
Definition: ogg.h:117
void oggpackB_adv1(oggpack_buffer *b)
Definition: bitwise.c:307
int unsynced
Definition: ogg.h:115
int ogg_stream_eos(ogg_stream_state *os)
Definition: framing.c:461
ogg_int64_t * granule_vals
Definition: ogg.h:65
long b
Definition: jpegint.h:371
void oggpack_writetrunc(oggpack_buffer *b, long bits)
Definition: bitwise.c:50
long ogg_page_pageno(ogg_page *og)
Definition: framing.c:65
void oggpack_writecopy(oggpack_buffer *b, void *source, long bits)
Definition: bitwise.c:187
int ogg_sync_pageout(ogg_sync_state *oy, ogg_page *og)
Definition: framing.c:642
long serialno
Definition: ogg.h:80
void oggpackB_reset(oggpack_buffer *b)
Definition: bitwise.c:201
void oggpackB_write(oggpack_buffer *b, unsigned long value, int bits)
Definition: bitwise.c:103
void oggpack_adv(oggpack_buffer *b, int bits)
Definition: bitwise.c:288
int endbit
Definition: ogg.h:28
char * ogg_sync_buffer(ogg_sync_state *oy, long size)
Definition: framing.c:505
int ogg_sync_reset(ogg_sync_state *oy)
Definition: framing.c:800
void oggpackB_writetrunc(oggpack_buffer *b, long bits)
Definition: bitwise.c:59
long oggpackB_look(oggpack_buffer *b, int bits)
Definition: bitwise.c:252
long pageno
Definition: ogg.h:81
int storage
Definition: ogg.h:111
long bytes
Definition: ogg.h:96
void oggpackB_adv(oggpack_buffer *b, int bits)
Definition: bitwise.c:295
int * lacing_vals
Definition: ogg.h:64
long oggpackB_look1(oggpack_buffer *b)
Definition: bitwise.c:283
int ogg_stream_packetpeek(ogg_stream_state *os, ogg_packet *op)
Definition: framing.c:892
int ogg_stream_packetin(ogg_stream_state *os, ogg_packet *op)
Definition: framing.c:271
int ogg_stream_pagein(ogg_stream_state *os, ogg_page *og)
Definition: framing.c:673
unsigned char * packet
Definition: ogg.h:95
void ogg_packet_clear(ogg_packet *op)
Definition: framing.c:896
void ogg_page_checksum_set(ogg_page *og)
Definition: framing.c:247
long oggpackB_read1(oggpack_buffer *b)
Definition: bitwise.c:404
int ogg_page_version(ogg_page *og)
Definition: framing.c:29
void oggpack_adv1(oggpack_buffer *b)
Definition: bitwise.c:299
int ogg_stream_pageout(ogg_stream_state *os, ogg_page *og)
Definition: framing.c:447
Definition: ogg.h:26
void oggpack_readinit(oggpack_buffer *b, unsigned char *buf, int bytes)
Definition: bitwise.c:214
int ogg_sync_clear(ogg_sync_state *oy)
Definition: framing.c:489
long endbyte
Definition: ogg.h:27
int ogg_sync_destroy(ogg_sync_state *oy)
Definition: framing.c:497
unsigned char * header
Definition: ogg.h:38
long b_o_s
Definition: ogg.h:97
unsigned int ogg_uint32_t
Definition: config_types.h:7
int ogg_stream_clear(ogg_stream_state *os)
Definition: framing.c:206
long lacing_returned
Definition: ogg.h:71
long ogg_sync_pageseek(ogg_sync_state *oy, ogg_page *og)
Definition: framing.c:546
Definition: ogg.h:109
ogg_int64_t packetno
Definition: ogg.h:82
int ogg_page_continued(ogg_page *og)
Definition: framing.c:33
int ogg_stream_destroy(ogg_stream_state *os)
Definition: framing.c:217
void oggpack_writeinit(oggpack_buffer *b)
Definition: bitwise.c:39
long oggpack_bytes(oggpack_buffer *b)
Definition: bitwise.c:426
ogg_int64_t granulepos
Definition: ogg.h:100
int ogg_stream_packetout(ogg_stream_state *os, ogg_packet *op)
Definition: framing.c:888
void oggpack_reset(oggpack_buffer *b)
Definition: bitwise.c:195
unsigned char * oggpack_get_buffer(oggpack_buffer *b)
Definition: bitwise.c:442
int ogg_page_eos(ogg_page *og)
Definition: framing.c:41
Definition: ogg.h:57
int ogg_page_packets(ogg_page *og)
Definition: framing.c:91
int ogg_stream_reset(ogg_stream_state *os)
Definition: framing.c:809
int ogg_sync_init(ogg_sync_state *oy)
Definition: framing.c:481
int e_o_s
Definition: ogg.h:76
int returned
Definition: ogg.h:113
int header_fill
Definition: ogg.h:74
void oggpackB_writeinit(oggpack_buffer *b)
Definition: bitwise.c:46
int ogg_stream_reset_serialno(ogg_stream_state *os, int serialno)
Definition: framing.c:828
void oggpack_writealign(oggpack_buffer *b)
Definition: bitwise.c:136
long body_len
Definition: ogg.h:41
void oggpack_writeclear(oggpack_buffer *b)
Definition: bitwise.c:205
long oggpack_read(oggpack_buffer *b, int bits)
Definition: bitwise.c:312
long lacing_packet
Definition: ogg.h:70
long e_o_s
Definition: ogg.h:98
int headerbytes
Definition: ogg.h:116
ogg_int64_t granulepos
Definition: ogg.h:87
long oggpack_read1(oggpack_buffer *b)
Definition: bitwise.c:382
unsigned char * buffer
Definition: ogg.h:30
int ogg_stream_init(ogg_stream_state *os, int serialno)
Definition: framing.c:188
ogg_int64_t packetno
Definition: ogg.h:102
long body_storage
Definition: ogg.h:59
void oggpackB_readinit(oggpack_buffer *b, unsigned char *buf, int bytes)
Definition: bitwise.c:220
void oggpackB_writealign(oggpack_buffer *b)
Definition: bitwise.c:142