2 Translation of the ogg headers for FreePascal
3 Copyright (C) 2006 by Ivo Steinmann
6 (********************************************************************
8 * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
9 * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
10 * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
11 * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
13 * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
14 * by the Xiph.Org Foundation http://www.xiph.org/ *
16 ********************************************************************)
29 {$IF DEFINED(WINDOWS)}
30 {$IF DEFINED(VORBIS_WINDOZE_STATIC) OR DEFINED(OPUS_WINDOZE_STATIC)}
34 const ogglib
= 'libogg-0.dll';
36 {$ELSEIF DEFINED(UNIX)}
39 const ogglib
= 'libogg';
41 {$ERROR libogg not supported on this platform. Fix it!}
44 (***********************************************************************)
45 (* Header : os_types.h *)
46 (***********************************************************************)
48 ogg_int64_t
= cint64
; pogg_int64_t
= ^ogg_int64_t
;
49 ogg_int32_t
= cint32
; pogg_int32_t
= ^ogg_int32_t
;
50 ogg_uint32_t
= cuint32
; pogg_uint32_t
= ^ogg_uint32_t
;
51 ogg_int16_t
= cint16
; pogg_int16_t
= ^ogg_int16_t
;
52 ogg_uint16_t
= cuint16
; pogg_uint16_t
= ^ogg_uint16_t
;
55 (***********************************************************************)
57 (***********************************************************************)
59 poggpack_buffer
= ^oggpack_buffer
;
60 oggpack_buffer
= record
68 { ogg_page is used to encapsulate the data in one Ogg bitstream page }
70 pogg_page
= ^ogg_page
;
78 { ogg_stream_state contains the current encode/decode state of a logical Ogg bitstream }
80 pogg_stream_state
= ^ogg_stream_state
;
81 ogg_stream_state
= record
82 body_data
: pcuchar
; { bytes from packet bodies }
83 body_storage
: clong
; { storage elements allocated }
84 body_fill
: clong
; { elements stored; fill mark }
85 body_returned
: clong
; { elements of fill returned }
87 lacing_vals
: pcint
; { The values that will go to the segment table }
88 granule_vals
: pogg_int64_t
; { granulepos values for headers. Not compact this way, but it is simple coupled to the lacing fifo }
90 lacing_storage
: clong
;
92 lacing_packet
: clong
;
93 lacing_returned
: clong
;
95 header
: array[0..281] of cuchar
; { working space for header encode }
98 e_o_s
: cint
; { set when we have buffered the last packet in the logical bitstream }
99 b_o_s
: cint
; { set after we've written the initial page of a logical bitstream }
103 packetno
: ogg_int64_t
; { sequence number for decode; the framing knows where there's a hole in the data,
104 but we need coupling so that the codec (which is in a seperate abstraction layer) also knows about the gap }
105 granulepos
: ogg_int64_t
;
108 { ogg_packet is used to encapsulate the data and metadata belonging to a single raw Ogg/Vorbis packet }
110 pogg_packet
= ^ogg_packet
;
117 granulepos
: ogg_int64_t
;
118 packetno
: ogg_int64_t
; { sequence number for decode; the framing knows where there's a hole in the data,
119 but we need coupling so that the codec (which is in a seperate abstraction layer) also knows about the gap }
122 ogg_sync_state
= record
133 { Ogg BITSTREAM PRIMITIVES: bitstream }
135 procedure oggpack_writeinit(var b
: oggpack_buffer
); cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
136 procedure oggpack_writetrunc(var b
: oggpack_buffer
; bits
: clong
); cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
137 procedure oggpack_writealign(var b
: oggpack_buffer
); cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
138 procedure oggpack_writecopy(var b
: oggpack_buffer
; source
: pointer; bits
: clong
); cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
139 procedure oggpack_reset(var b
: oggpack_buffer
); cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
140 procedure oggpack_writeclear(var b
: oggpack_buffer
); cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
141 procedure oggpack_readinit(var b
: oggpack_buffer
; buf
: pointer; bytes
: cint
); cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
142 procedure oggpack_write(var b
: oggpack_buffer
; value
: culong
; bits
: cint
); cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
143 function oggpack_look(var b
: oggpack_buffer
; bits
: cint
): clong
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
144 function oggpack_look1(var b
: oggpack_buffer
): clong
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
145 procedure oggpack_adv(var b
: oggpack_buffer
; bits
: cint
); cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
146 procedure oggpack_adv1(var b
: oggpack_buffer
); cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
147 function oggpack_read(var b
: oggpack_buffer
; bits
: cint
): clong
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
148 function oggpack_read1(var b
: oggpack_buffer
): clong
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
149 function oggpack_bytes(var b
: oggpack_buffer
): clong
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
150 function oggpack_bits(var b
: oggpack_buffer
): clong
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
151 function oggpack_get_buffer(var b
: oggpack_buffer
): pointer; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
153 procedure oggpackB_writeinit(var b
: oggpack_buffer
); cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
154 procedure oggpackB_writetrunc(var b
: oggpack_buffer
; bits
: clong
); cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
155 procedure oggpackB_writealign(var b
: oggpack_buffer
); cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
156 procedure oggpackB_writecopy(var b
: oggpack_buffer
; source
: pointer; bits
: clong
); cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
157 procedure oggpackB_reset(var b
: oggpack_buffer
); cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
158 procedure oggpackB_writeclear(var b
: oggpack_buffer
); cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
159 procedure oggpackB_readinit(var b
: oggpack_buffer
; buf
: pointer; bytes
: cint
); cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
160 procedure oggpackB_write(var b
: oggpack_buffer
; value
: culong
; bits
: cint
); cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
161 function oggpackB_look(var b
: oggpack_buffer
; bits
: cint
): clong
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
162 function oggpackB_look1(var b
: oggpack_buffer
): clong
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
163 procedure oggpackB_adv(var b
: oggpack_buffer
; bits
: cint
); cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
164 procedure oggpackB_adv1(var b
: oggpack_buffer
); cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
165 function oggpackB_read(var b
: oggpack_buffer
; bits
: cint
): clong
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
166 function oggpackB_read1(var b
: oggpack_buffer
): clong
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
167 function oggpackB_bytes(var b
: oggpack_buffer
): clong
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
168 function oggpackB_bits(var b
: oggpack_buffer
): clong
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
169 function oggpackB_get_buffer(var b
: oggpack_buffer
): pointer; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
171 { ogglib BITSTREAM PRIMITIVES: encoding }
173 function ogg_stream_packetin(var os
: ogg_stream_state
; var op
: ogg_packet
): cint
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
174 function ogg_stream_pageout(var os
: ogg_stream_state
; var op
: ogg_page
): cint
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
175 function ogg_stream_flush(var os
: ogg_stream_state
; var op
: ogg_page
): cint
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
177 { ogglib BITSTREAM PRIMITIVES: decoding }
179 function ogg_sync_init(var oy
: ogg_sync_state
): cint
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
180 function ogg_sync_clear(var oy
: ogg_sync_state
): cint
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
181 function ogg_sync_reset(var oy
: ogg_sync_state
): cint
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
182 function ogg_sync_destroy(var oy
: ogg_sync_state
): cint
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
184 function ogg_sync_buffer(var oy
: ogg_sync_state
; size
: clong
): pointer; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
185 function ogg_sync_wrote(var oy
: ogg_sync_state
; bytes
: clong
): cint
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
186 function ogg_sync_pageseek(var oy
: ogg_sync_state
; var og
: ogg_page
): pointer; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
187 function ogg_sync_pageout(var oy
: ogg_sync_state
; var og
: ogg_page
): cint
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
188 function ogg_stream_pagein(var os
: ogg_stream_state
; var og
: ogg_page
): cint
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
189 function ogg_stream_packetout(var os
: ogg_stream_state
; var op
: ogg_packet
): cint
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
190 function ogg_stream_packetpeek(var os
: ogg_stream_state
; var op
: ogg_packet
): cint
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
192 { ogglib BITSTREAM PRIMITIVES: general }
194 function ogg_stream_init(var os
: ogg_stream_state
; serialno
: cint
): cint
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
195 function ogg_stream_clear(var os
: ogg_stream_state
): cint
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
196 function ogg_stream_reset(var os
: ogg_stream_state
): cint
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
197 function ogg_stream_reset_serialno(var os
: ogg_stream_state
; serialno
: cint
): cint
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
198 function ogg_stream_destroy(var os
: ogg_stream_state
): cint
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
199 function ogg_stream_eos(var os
: ogg_stream_state
): cint
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
201 procedure ogg_page_checksum_set(var og
: ogg_page
); cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
203 function ogg_page_version(var og
: ogg_page
): cint
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
204 function ogg_page_continued(var og
: ogg_page
): cint
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
205 function ogg_page_bos(var og
: ogg_page
): cint
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
206 function ogg_page_eos(var og
: ogg_page
): cint
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
207 function ogg_page_granulepos(var og
: ogg_page
): ogg_int64_t
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
208 function ogg_page_serialno(var og
: ogg_page
): cint
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
209 function ogg_page_pageno(var og
: ogg_page
): clong
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
210 function ogg_page_packets(var og
: ogg_page
): cint
; cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};
212 procedure ogg_packet_clear(var op
: ogg_packet
); cdecl; external {$IFDEF OGG_DYNAMIC}ogglib
{$ENDIF};