Mercurial > mplayer.hg
annotate tremor/ogg.h @ 30811:50e0f6942e43
Implement Win32 mutexes.
Implement Win32 mutexes; they used to just be mapped on top of events, which
is not the same thing at all.
The implementation is pretty much the obvious one, similar to the
current critical section implementation and the semaphore implementation;
a single lock count protected by a pthread mutex, and an event lockers can
sleep on to know when the mutex is available.
Also make CreateMutexA and ReleaseMutex available even if QuickTime codecs
support is not configured.
author | sesse |
---|---|
date | Sat, 06 Mar 2010 10:13:37 +0000 |
parents | e83eef58b30a |
children |
rev | line source |
---|---|
14280 | 1 /******************************************************************** |
2 * * | |
15250 | 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. * | |
14280 | 7 * * |
15250 | 8 * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 * |
9 * by the Xiph.Org Foundation http://www.xiph.org/ * | |
14280 | 10 * * |
11 ******************************************************************** | |
12 | |
15250 | 13 function: toplevel libogg include |
14 last mod: $Id$ | |
14280 | 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; | |
33 } oggpack_buffer; | |
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 /* ogg_stream_state contains the current encode/decode state of a logical | |
45 Ogg bitstream **********************************************************/ | |
46 | |
47 typedef struct { | |
48 unsigned char *body_data; /* bytes from packet bodies */ | |
49 long body_storage; /* storage elements allocated */ | |
50 long body_fill; /* elements stored; fill mark */ | |
51 long body_returned; /* elements of fill returned */ | |
52 | |
53 | |
54 int *lacing_vals; /* The values that will go to the segment table */ | |
55 ogg_int64_t *granule_vals; /* granulepos values for headers. Not compact | |
56 this way, but it is simple coupled to the | |
57 lacing fifo */ | |
58 long lacing_storage; | |
59 long lacing_fill; | |
60 long lacing_packet; | |
61 long lacing_returned; | |
62 | |
63 unsigned char header[282]; /* working space for header encode */ | |
64 int header_fill; | |
65 | |
66 int e_o_s; /* set when we have buffered the last packet in the | |
67 logical bitstream */ | |
68 int b_o_s; /* set after we've written the initial page | |
69 of a logical bitstream */ | |
70 long serialno; | |
71 long pageno; | |
72 ogg_int64_t packetno; /* sequence number for decode; the framing | |
73 knows where there's a hole in the data, | |
74 but we need coupling so that the codec | |
75 (which is in a seperate abstraction | |
76 layer) also knows about the gap */ | |
77 ogg_int64_t granulepos; | |
78 | |
79 } ogg_stream_state; | |
80 | |
81 /* ogg_packet is used to encapsulate the data and metadata belonging | |
82 to a single raw Ogg/Vorbis packet *************************************/ | |
83 | |
84 typedef struct { | |
85 unsigned char *packet; | |
86 long bytes; | |
87 long b_o_s; | |
88 long e_o_s; | |
89 | |
90 ogg_int64_t granulepos; | |
29264
e83eef58b30a
Remove all kind of trailing whitespaces from all MPlayer's files.
bircoph
parents:
15250
diff
changeset
|
91 |
14280 | 92 ogg_int64_t packetno; /* sequence number for decode; the framing |
93 knows where there's a hole in the data, | |
94 but we need coupling so that the codec | |
95 (which is in a seperate abstraction | |
96 layer) also knows about the gap */ | |
97 } ogg_packet; | |
98 | |
99 typedef struct { | |
100 unsigned char *data; | |
101 int storage; | |
102 int fill; | |
103 int returned; | |
104 | |
105 int unsynced; | |
106 int headerbytes; | |
107 int bodybytes; | |
108 } ogg_sync_state; | |
109 | |
110 /* Ogg BITSTREAM PRIMITIVES: bitstream ************************/ | |
111 | |
112 extern void oggpack_writeinit(oggpack_buffer *b); | |
15250 | 113 extern void oggpack_writetrunc(oggpack_buffer *b,long bits); |
114 extern void oggpack_writealign(oggpack_buffer *b); | |
115 extern void oggpack_writecopy(oggpack_buffer *b,void *source,long bits); | |
14280 | 116 extern void oggpack_reset(oggpack_buffer *b); |
117 extern void oggpack_writeclear(oggpack_buffer *b); | |
118 extern void oggpack_readinit(oggpack_buffer *b,unsigned char *buf,int bytes); | |
119 extern void oggpack_write(oggpack_buffer *b,unsigned long value,int bits); | |
120 extern long oggpack_look(oggpack_buffer *b,int bits); | |
121 extern long oggpack_look1(oggpack_buffer *b); | |
122 extern void oggpack_adv(oggpack_buffer *b,int bits); | |
123 extern void oggpack_adv1(oggpack_buffer *b); | |
124 extern long oggpack_read(oggpack_buffer *b,int bits); | |
125 extern long oggpack_read1(oggpack_buffer *b); | |
126 extern long oggpack_bytes(oggpack_buffer *b); | |
127 extern long oggpack_bits(oggpack_buffer *b); | |
128 extern unsigned char *oggpack_get_buffer(oggpack_buffer *b); | |
129 | |
15250 | 130 extern void oggpackB_writeinit(oggpack_buffer *b); |
131 extern void oggpackB_writetrunc(oggpack_buffer *b,long bits); | |
132 extern void oggpackB_writealign(oggpack_buffer *b); | |
133 extern void oggpackB_writecopy(oggpack_buffer *b,void *source,long bits); | |
134 extern void oggpackB_reset(oggpack_buffer *b); | |
135 extern void oggpackB_writeclear(oggpack_buffer *b); | |
136 extern void oggpackB_readinit(oggpack_buffer *b,unsigned char *buf,int bytes); | |
137 extern void oggpackB_write(oggpack_buffer *b,unsigned long value,int bits); | |
138 extern long oggpackB_look(oggpack_buffer *b,int bits); | |
139 extern long oggpackB_look1(oggpack_buffer *b); | |
140 extern void oggpackB_adv(oggpack_buffer *b,int bits); | |
141 extern void oggpackB_adv1(oggpack_buffer *b); | |
142 extern long oggpackB_read(oggpack_buffer *b,int bits); | |
143 extern long oggpackB_read1(oggpack_buffer *b); | |
144 extern long oggpackB_bytes(oggpack_buffer *b); | |
145 extern long oggpackB_bits(oggpack_buffer *b); | |
146 extern unsigned char *oggpackB_get_buffer(oggpack_buffer *b); | |
147 | |
148 /* Ogg BITSTREAM PRIMITIVES: encoding **************************/ | |
149 | |
150 extern int ogg_stream_packetin(ogg_stream_state *os, ogg_packet *op); | |
151 extern int ogg_stream_pageout(ogg_stream_state *os, ogg_page *og); | |
152 extern int ogg_stream_flush(ogg_stream_state *os, ogg_page *og); | |
153 | |
14280 | 154 /* Ogg BITSTREAM PRIMITIVES: decoding **************************/ |
155 | |
156 extern int ogg_sync_init(ogg_sync_state *oy); | |
157 extern int ogg_sync_clear(ogg_sync_state *oy); | |
158 extern int ogg_sync_reset(ogg_sync_state *oy); | |
159 extern int ogg_sync_destroy(ogg_sync_state *oy); | |
160 | |
161 extern char *ogg_sync_buffer(ogg_sync_state *oy, long size); | |
162 extern int ogg_sync_wrote(ogg_sync_state *oy, long bytes); | |
163 extern long ogg_sync_pageseek(ogg_sync_state *oy,ogg_page *og); | |
164 extern int ogg_sync_pageout(ogg_sync_state *oy, ogg_page *og); | |
165 extern int ogg_stream_pagein(ogg_stream_state *os, ogg_page *og); | |
166 extern int ogg_stream_packetout(ogg_stream_state *os,ogg_packet *op); | |
167 extern int ogg_stream_packetpeek(ogg_stream_state *os,ogg_packet *op); | |
168 | |
169 /* Ogg BITSTREAM PRIMITIVES: general ***************************/ | |
170 | |
171 extern int ogg_stream_init(ogg_stream_state *os,int serialno); | |
172 extern int ogg_stream_clear(ogg_stream_state *os); | |
173 extern int ogg_stream_reset(ogg_stream_state *os); | |
15250 | 174 extern int ogg_stream_reset_serialno(ogg_stream_state *os,int serialno); |
14280 | 175 extern int ogg_stream_destroy(ogg_stream_state *os); |
176 extern int ogg_stream_eos(ogg_stream_state *os); | |
177 | |
178 extern void ogg_page_checksum_set(ogg_page *og); | |
179 | |
180 extern int ogg_page_version(ogg_page *og); | |
181 extern int ogg_page_continued(ogg_page *og); | |
182 extern int ogg_page_bos(ogg_page *og); | |
183 extern int ogg_page_eos(ogg_page *og); | |
184 extern ogg_int64_t ogg_page_granulepos(ogg_page *og); | |
185 extern int ogg_page_serialno(ogg_page *og); | |
186 extern long ogg_page_pageno(ogg_page *og); | |
187 extern int ogg_page_packets(ogg_page *og); | |
188 | |
189 extern void ogg_packet_clear(ogg_packet *op); | |
190 | |
191 | |
192 #ifdef __cplusplus | |
193 } | |
194 #endif | |
195 | |
196 #endif /* _OGG_H */ |