Skip to content

Commit 8d766ff

Browse files
committed
Merge pull request #161 from MSOpenTech/v3-winrt-ogg
V3: Add Ogg audio libs for Windows 8.1 and 10.0 Universal Apps
2 parents 0352ddd + 7ad3412 commit 8d766ff

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+3726
-0
lines changed
Lines changed: 210 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,210 @@
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-2007 *
9+
* by the Xiph.Org Foundation http://www.xiph.org/ *
10+
* *
11+
********************************************************************
12+
13+
function: toplevel libogg include
14+
last mod: $Id: ogg.h 18044 2011-08-01 17:55:20Z gmaxwell $
15+
16+
********************************************************************/
17+
#ifndef _OGG_H
18+
#define _OGG_H
19+
20+
#ifdef __cplusplus
21+
extern "C" {
22+
#endif
23+
24+
#include <stddef.h>
25+
#include <ogg/os_types.h>
26+
27+
typedef struct {
28+
void *iov_base;
29+
size_t iov_len;
30+
} ogg_iovec_t;
31+
32+
typedef struct {
33+
long endbyte;
34+
int endbit;
35+
36+
unsigned char *buffer;
37+
unsigned char *ptr;
38+
long storage;
39+
} oggpack_buffer;
40+
41+
/* ogg_page is used to encapsulate the data in one Ogg bitstream page *****/
42+
43+
typedef struct {
44+
unsigned char *header;
45+
long header_len;
46+
unsigned char *body;
47+
long body_len;
48+
} ogg_page;
49+
50+
/* ogg_stream_state contains the current encode/decode state of a logical
51+
Ogg bitstream **********************************************************/
52+
53+
typedef struct {
54+
unsigned char *body_data; /* bytes from packet bodies */
55+
long body_storage; /* storage elements allocated */
56+
long body_fill; /* elements stored; fill mark */
57+
long body_returned; /* elements of fill returned */
58+
59+
60+
int *lacing_vals; /* The values that will go to the segment table */
61+
ogg_int64_t *granule_vals; /* granulepos values for headers. Not compact
62+
this way, but it is simple coupled to the
63+
lacing fifo */
64+
long lacing_storage;
65+
long lacing_fill;
66+
long lacing_packet;
67+
long lacing_returned;
68+
69+
unsigned char header[282]; /* working space for header encode */
70+
int header_fill;
71+
72+
int e_o_s; /* set when we have buffered the last packet in the
73+
logical bitstream */
74+
int b_o_s; /* set after we've written the initial page
75+
of a logical bitstream */
76+
long serialno;
77+
long pageno;
78+
ogg_int64_t packetno; /* sequence number for decode; the framing
79+
knows where there's a hole in the data,
80+
but we need coupling so that the codec
81+
(which is in a separate abstraction
82+
layer) also knows about the gap */
83+
ogg_int64_t granulepos;
84+
85+
} ogg_stream_state;
86+
87+
/* ogg_packet is used to encapsulate the data and metadata belonging
88+
to a single raw Ogg/Vorbis packet *************************************/
89+
90+
typedef struct {
91+
unsigned char *packet;
92+
long bytes;
93+
long b_o_s;
94+
long e_o_s;
95+
96+
ogg_int64_t granulepos;
97+
98+
ogg_int64_t packetno; /* sequence number for decode; the framing
99+
knows where there's a hole in the data,
100+
but we need coupling so that the codec
101+
(which is in a separate abstraction
102+
layer) also knows about the gap */
103+
} ogg_packet;
104+
105+
typedef struct {
106+
unsigned char *data;
107+
int storage;
108+
int fill;
109+
int returned;
110+
111+
int unsynced;
112+
int headerbytes;
113+
int bodybytes;
114+
} ogg_sync_state;
115+
116+
/* Ogg BITSTREAM PRIMITIVES: bitstream ************************/
117+
118+
extern void oggpack_writeinit(oggpack_buffer *b);
119+
extern int oggpack_writecheck(oggpack_buffer *b);
120+
extern void oggpack_writetrunc(oggpack_buffer *b,long bits);
121+
extern void oggpack_writealign(oggpack_buffer *b);
122+
extern void oggpack_writecopy(oggpack_buffer *b,void *source,long bits);
123+
extern void oggpack_reset(oggpack_buffer *b);
124+
extern void oggpack_writeclear(oggpack_buffer *b);
125+
extern void oggpack_readinit(oggpack_buffer *b,unsigned char *buf,int bytes);
126+
extern void oggpack_write(oggpack_buffer *b,unsigned long value,int bits);
127+
extern long oggpack_look(oggpack_buffer *b,int bits);
128+
extern long oggpack_look1(oggpack_buffer *b);
129+
extern void oggpack_adv(oggpack_buffer *b,int bits);
130+
extern void oggpack_adv1(oggpack_buffer *b);
131+
extern long oggpack_read(oggpack_buffer *b,int bits);
132+
extern long oggpack_read1(oggpack_buffer *b);
133+
extern long oggpack_bytes(oggpack_buffer *b);
134+
extern long oggpack_bits(oggpack_buffer *b);
135+
extern unsigned char *oggpack_get_buffer(oggpack_buffer *b);
136+
137+
extern void oggpackB_writeinit(oggpack_buffer *b);
138+
extern int oggpackB_writecheck(oggpack_buffer *b);
139+
extern void oggpackB_writetrunc(oggpack_buffer *b,long bits);
140+
extern void oggpackB_writealign(oggpack_buffer *b);
141+
extern void oggpackB_writecopy(oggpack_buffer *b,void *source,long bits);
142+
extern void oggpackB_reset(oggpack_buffer *b);
143+
extern void oggpackB_writeclear(oggpack_buffer *b);
144+
extern void oggpackB_readinit(oggpack_buffer *b,unsigned char *buf,int bytes);
145+
extern void oggpackB_write(oggpack_buffer *b,unsigned long value,int bits);
146+
extern long oggpackB_look(oggpack_buffer *b,int bits);
147+
extern long oggpackB_look1(oggpack_buffer *b);
148+
extern void oggpackB_adv(oggpack_buffer *b,int bits);
149+
extern void oggpackB_adv1(oggpack_buffer *b);
150+
extern long oggpackB_read(oggpack_buffer *b,int bits);
151+
extern long oggpackB_read1(oggpack_buffer *b);
152+
extern long oggpackB_bytes(oggpack_buffer *b);
153+
extern long oggpackB_bits(oggpack_buffer *b);
154+
extern unsigned char *oggpackB_get_buffer(oggpack_buffer *b);
155+
156+
/* Ogg BITSTREAM PRIMITIVES: encoding **************************/
157+
158+
extern int ogg_stream_packetin(ogg_stream_state *os, ogg_packet *op);
159+
extern int ogg_stream_iovecin(ogg_stream_state *os, ogg_iovec_t *iov,
160+
int count, long e_o_s, ogg_int64_t granulepos);
161+
extern int ogg_stream_pageout(ogg_stream_state *os, ogg_page *og);
162+
extern int ogg_stream_pageout_fill(ogg_stream_state *os, ogg_page *og, int nfill);
163+
extern int ogg_stream_flush(ogg_stream_state *os, ogg_page *og);
164+
extern int ogg_stream_flush_fill(ogg_stream_state *os, ogg_page *og, int nfill);
165+
166+
/* Ogg BITSTREAM PRIMITIVES: decoding **************************/
167+
168+
extern int ogg_sync_init(ogg_sync_state *oy);
169+
extern int ogg_sync_clear(ogg_sync_state *oy);
170+
extern int ogg_sync_reset(ogg_sync_state *oy);
171+
extern int ogg_sync_destroy(ogg_sync_state *oy);
172+
extern int ogg_sync_check(ogg_sync_state *oy);
173+
174+
extern char *ogg_sync_buffer(ogg_sync_state *oy, long size);
175+
extern int ogg_sync_wrote(ogg_sync_state *oy, long bytes);
176+
extern long ogg_sync_pageseek(ogg_sync_state *oy,ogg_page *og);
177+
extern int ogg_sync_pageout(ogg_sync_state *oy, ogg_page *og);
178+
extern int ogg_stream_pagein(ogg_stream_state *os, ogg_page *og);
179+
extern int ogg_stream_packetout(ogg_stream_state *os,ogg_packet *op);
180+
extern int ogg_stream_packetpeek(ogg_stream_state *os,ogg_packet *op);
181+
182+
/* Ogg BITSTREAM PRIMITIVES: general ***************************/
183+
184+
extern int ogg_stream_init(ogg_stream_state *os,int serialno);
185+
extern int ogg_stream_clear(ogg_stream_state *os);
186+
extern int ogg_stream_reset(ogg_stream_state *os);
187+
extern int ogg_stream_reset_serialno(ogg_stream_state *os,int serialno);
188+
extern int ogg_stream_destroy(ogg_stream_state *os);
189+
extern int ogg_stream_check(ogg_stream_state *os);
190+
extern int ogg_stream_eos(ogg_stream_state *os);
191+
192+
extern void ogg_page_checksum_set(ogg_page *og);
193+
194+
extern int ogg_page_version(const ogg_page *og);
195+
extern int ogg_page_continued(const ogg_page *og);
196+
extern int ogg_page_bos(const ogg_page *og);
197+
extern int ogg_page_eos(const ogg_page *og);
198+
extern ogg_int64_t ogg_page_granulepos(const ogg_page *og);
199+
extern int ogg_page_serialno(const ogg_page *og);
200+
extern long ogg_page_pageno(const ogg_page *og);
201+
extern int ogg_page_packets(const ogg_page *og);
202+
203+
extern void ogg_packet_clear(ogg_packet *op);
204+
205+
206+
#ifdef __cplusplus
207+
}
208+
#endif
209+
210+
#endif /* _OGG_H */
Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
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: #ifdef jail to whip a few platforms into the UNIX ideal.
14+
last mod: $Id: os_types.h 19098 2014-02-26 19:06:45Z giles $
15+
16+
********************************************************************/
17+
#ifndef _OS_TYPES_H
18+
#define _OS_TYPES_H
19+
20+
/* make it easy on the folks that want to compile the libs with a
21+
different malloc than stdlib */
22+
#define _ogg_malloc malloc
23+
#define _ogg_calloc calloc
24+
#define _ogg_realloc realloc
25+
#define _ogg_free free
26+
27+
#if defined(_WIN32)
28+
29+
# if defined(__CYGWIN__)
30+
# include <stdint.h>
31+
typedef int16_t ogg_int16_t;
32+
typedef uint16_t ogg_uint16_t;
33+
typedef int32_t ogg_int32_t;
34+
typedef uint32_t ogg_uint32_t;
35+
typedef int64_t ogg_int64_t;
36+
typedef uint64_t ogg_uint64_t;
37+
# elif defined(__MINGW32__)
38+
# include <sys/types.h>
39+
typedef short ogg_int16_t;
40+
typedef unsigned short ogg_uint16_t;
41+
typedef int ogg_int32_t;
42+
typedef unsigned int ogg_uint32_t;
43+
typedef long long ogg_int64_t;
44+
typedef unsigned long long ogg_uint64_t;
45+
# elif defined(__MWERKS__)
46+
typedef long long ogg_int64_t;
47+
typedef int ogg_int32_t;
48+
typedef unsigned int ogg_uint32_t;
49+
typedef short ogg_int16_t;
50+
typedef unsigned short ogg_uint16_t;
51+
# else
52+
/* MSVC/Borland */
53+
typedef __int64 ogg_int64_t;
54+
typedef __int32 ogg_int32_t;
55+
typedef unsigned __int32 ogg_uint32_t;
56+
typedef __int16 ogg_int16_t;
57+
typedef unsigned __int16 ogg_uint16_t;
58+
# endif
59+
60+
#elif defined(__MACOS__)
61+
62+
# include <sys/types.h>
63+
typedef SInt16 ogg_int16_t;
64+
typedef UInt16 ogg_uint16_t;
65+
typedef SInt32 ogg_int32_t;
66+
typedef UInt32 ogg_uint32_t;
67+
typedef SInt64 ogg_int64_t;
68+
69+
#elif (defined(__APPLE__) && defined(__MACH__)) /* MacOS X Framework build */
70+
71+
# include <inttypes.h>
72+
typedef int16_t ogg_int16_t;
73+
typedef uint16_t ogg_uint16_t;
74+
typedef int32_t ogg_int32_t;
75+
typedef uint32_t ogg_uint32_t;
76+
typedef int64_t ogg_int64_t;
77+
78+
#elif defined(__HAIKU__)
79+
80+
/* Haiku */
81+
# include <sys/types.h>
82+
typedef short ogg_int16_t;
83+
typedef unsigned short ogg_uint16_t;
84+
typedef int ogg_int32_t;
85+
typedef unsigned int ogg_uint32_t;
86+
typedef long long ogg_int64_t;
87+
88+
#elif defined(__BEOS__)
89+
90+
/* Be */
91+
# include <inttypes.h>
92+
typedef int16_t ogg_int16_t;
93+
typedef uint16_t ogg_uint16_t;
94+
typedef int32_t ogg_int32_t;
95+
typedef uint32_t ogg_uint32_t;
96+
typedef int64_t ogg_int64_t;
97+
98+
#elif defined (__EMX__)
99+
100+
/* OS/2 GCC */
101+
typedef short ogg_int16_t;
102+
typedef unsigned short ogg_uint16_t;
103+
typedef int ogg_int32_t;
104+
typedef unsigned int ogg_uint32_t;
105+
typedef long long ogg_int64_t;
106+
107+
#elif defined (DJGPP)
108+
109+
/* DJGPP */
110+
typedef short ogg_int16_t;
111+
typedef int ogg_int32_t;
112+
typedef unsigned int ogg_uint32_t;
113+
typedef long long ogg_int64_t;
114+
115+
#elif defined(R5900)
116+
117+
/* PS2 EE */
118+
typedef long ogg_int64_t;
119+
typedef int ogg_int32_t;
120+
typedef unsigned ogg_uint32_t;
121+
typedef short ogg_int16_t;
122+
123+
#elif defined(__SYMBIAN32__)
124+
125+
/* Symbian GCC */
126+
typedef signed short ogg_int16_t;
127+
typedef unsigned short ogg_uint16_t;
128+
typedef signed int ogg_int32_t;
129+
typedef unsigned int ogg_uint32_t;
130+
typedef long long int ogg_int64_t;
131+
132+
#elif defined(__TMS320C6X__)
133+
134+
/* TI C64x compiler */
135+
typedef signed short ogg_int16_t;
136+
typedef unsigned short ogg_uint16_t;
137+
typedef signed int ogg_int32_t;
138+
typedef unsigned int ogg_uint32_t;
139+
typedef long long int ogg_int64_t;
140+
141+
#else
142+
143+
# include <ogg/config_types.h>
144+
145+
#endif
146+
147+
#endif /* _OS_TYPES_H */

0 commit comments

Comments
 (0)