annotate osx/include/ogg/ogg.h @ 83:ae30d91d2ffe

Replace these with versions built using an older toolset (so as to avoid ABI compatibilities when linking on Ubuntu 14.04 for packaging purposes)
author Chris Cannam
date Fri, 07 Feb 2020 11:51:13 +0000
parents cc5d363db385
children
rev   line source
Chris@2 1 /********************************************************************
Chris@2 2 * *
Chris@2 3 * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
Chris@2 4 * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
Chris@2 5 * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
Chris@2 6 * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
Chris@2 7 * *
Chris@2 8 * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 *
Chris@2 9 * by the Xiph.Org Foundation http://www.xiph.org/ *
Chris@2 10 * *
Chris@2 11 ********************************************************************
Chris@2 12
Chris@2 13 function: toplevel libogg include
Chris@2 14 last mod: $Id: ogg.h 18044 2011-08-01 17:55:20Z gmaxwell $
Chris@2 15
Chris@2 16 ********************************************************************/
Chris@2 17 #ifndef _OGG_H
Chris@2 18 #define _OGG_H
Chris@2 19
Chris@2 20 #ifdef __cplusplus
Chris@2 21 extern "C" {
Chris@2 22 #endif
Chris@2 23
Chris@2 24 #include <stddef.h>
Chris@2 25 #include <ogg/os_types.h>
Chris@2 26
Chris@2 27 typedef struct {
Chris@2 28 void *iov_base;
Chris@2 29 size_t iov_len;
Chris@2 30 } ogg_iovec_t;
Chris@2 31
Chris@2 32 typedef struct {
Chris@2 33 long endbyte;
Chris@2 34 int endbit;
Chris@2 35
Chris@2 36 unsigned char *buffer;
Chris@2 37 unsigned char *ptr;
Chris@2 38 long storage;
Chris@2 39 } oggpack_buffer;
Chris@2 40
Chris@2 41 /* ogg_page is used to encapsulate the data in one Ogg bitstream page *****/
Chris@2 42
Chris@2 43 typedef struct {
Chris@2 44 unsigned char *header;
Chris@2 45 long header_len;
Chris@2 46 unsigned char *body;
Chris@2 47 long body_len;
Chris@2 48 } ogg_page;
Chris@2 49
Chris@2 50 /* ogg_stream_state contains the current encode/decode state of a logical
Chris@2 51 Ogg bitstream **********************************************************/
Chris@2 52
Chris@2 53 typedef struct {
Chris@2 54 unsigned char *body_data; /* bytes from packet bodies */
Chris@2 55 long body_storage; /* storage elements allocated */
Chris@2 56 long body_fill; /* elements stored; fill mark */
Chris@2 57 long body_returned; /* elements of fill returned */
Chris@2 58
Chris@2 59
Chris@2 60 int *lacing_vals; /* The values that will go to the segment table */
Chris@2 61 ogg_int64_t *granule_vals; /* granulepos values for headers. Not compact
Chris@2 62 this way, but it is simple coupled to the
Chris@2 63 lacing fifo */
Chris@2 64 long lacing_storage;
Chris@2 65 long lacing_fill;
Chris@2 66 long lacing_packet;
Chris@2 67 long lacing_returned;
Chris@2 68
Chris@2 69 unsigned char header[282]; /* working space for header encode */
Chris@2 70 int header_fill;
Chris@2 71
Chris@2 72 int e_o_s; /* set when we have buffered the last packet in the
Chris@2 73 logical bitstream */
Chris@2 74 int b_o_s; /* set after we've written the initial page
Chris@2 75 of a logical bitstream */
Chris@2 76 long serialno;
Chris@2 77 long pageno;
Chris@2 78 ogg_int64_t packetno; /* sequence number for decode; the framing
Chris@2 79 knows where there's a hole in the data,
Chris@2 80 but we need coupling so that the codec
Chris@2 81 (which is in a separate abstraction
Chris@2 82 layer) also knows about the gap */
Chris@2 83 ogg_int64_t granulepos;
Chris@2 84
Chris@2 85 } ogg_stream_state;
Chris@2 86
Chris@2 87 /* ogg_packet is used to encapsulate the data and metadata belonging
Chris@2 88 to a single raw Ogg/Vorbis packet *************************************/
Chris@2 89
Chris@2 90 typedef struct {
Chris@2 91 unsigned char *packet;
Chris@2 92 long bytes;
Chris@2 93 long b_o_s;
Chris@2 94 long e_o_s;
Chris@2 95
Chris@2 96 ogg_int64_t granulepos;
Chris@2 97
Chris@2 98 ogg_int64_t packetno; /* sequence number for decode; the framing
Chris@2 99 knows where there's a hole in the data,
Chris@2 100 but we need coupling so that the codec
Chris@2 101 (which is in a separate abstraction
Chris@2 102 layer) also knows about the gap */
Chris@2 103 } ogg_packet;
Chris@2 104
Chris@2 105 typedef struct {
Chris@2 106 unsigned char *data;
Chris@2 107 int storage;
Chris@2 108 int fill;
Chris@2 109 int returned;
Chris@2 110
Chris@2 111 int unsynced;
Chris@2 112 int headerbytes;
Chris@2 113 int bodybytes;
Chris@2 114 } ogg_sync_state;
Chris@2 115
Chris@2 116 /* Ogg BITSTREAM PRIMITIVES: bitstream ************************/
Chris@2 117
Chris@2 118 extern void oggpack_writeinit(oggpack_buffer *b);
Chris@2 119 extern int oggpack_writecheck(oggpack_buffer *b);
Chris@2 120 extern void oggpack_writetrunc(oggpack_buffer *b,long bits);
Chris@2 121 extern void oggpack_writealign(oggpack_buffer *b);
Chris@2 122 extern void oggpack_writecopy(oggpack_buffer *b,void *source,long bits);
Chris@2 123 extern void oggpack_reset(oggpack_buffer *b);
Chris@2 124 extern void oggpack_writeclear(oggpack_buffer *b);
Chris@2 125 extern void oggpack_readinit(oggpack_buffer *b,unsigned char *buf,int bytes);
Chris@2 126 extern void oggpack_write(oggpack_buffer *b,unsigned long value,int bits);
Chris@2 127 extern long oggpack_look(oggpack_buffer *b,int bits);
Chris@2 128 extern long oggpack_look1(oggpack_buffer *b);
Chris@2 129 extern void oggpack_adv(oggpack_buffer *b,int bits);
Chris@2 130 extern void oggpack_adv1(oggpack_buffer *b);
Chris@2 131 extern long oggpack_read(oggpack_buffer *b,int bits);
Chris@2 132 extern long oggpack_read1(oggpack_buffer *b);
Chris@2 133 extern long oggpack_bytes(oggpack_buffer *b);
Chris@2 134 extern long oggpack_bits(oggpack_buffer *b);
Chris@2 135 extern unsigned char *oggpack_get_buffer(oggpack_buffer *b);
Chris@2 136
Chris@2 137 extern void oggpackB_writeinit(oggpack_buffer *b);
Chris@2 138 extern int oggpackB_writecheck(oggpack_buffer *b);
Chris@2 139 extern void oggpackB_writetrunc(oggpack_buffer *b,long bits);
Chris@2 140 extern void oggpackB_writealign(oggpack_buffer *b);
Chris@2 141 extern void oggpackB_writecopy(oggpack_buffer *b,void *source,long bits);
Chris@2 142 extern void oggpackB_reset(oggpack_buffer *b);
Chris@2 143 extern void oggpackB_writeclear(oggpack_buffer *b);
Chris@2 144 extern void oggpackB_readinit(oggpack_buffer *b,unsigned char *buf,int bytes);
Chris@2 145 extern void oggpackB_write(oggpack_buffer *b,unsigned long value,int bits);
Chris@2 146 extern long oggpackB_look(oggpack_buffer *b,int bits);
Chris@2 147 extern long oggpackB_look1(oggpack_buffer *b);
Chris@2 148 extern void oggpackB_adv(oggpack_buffer *b,int bits);
Chris@2 149 extern void oggpackB_adv1(oggpack_buffer *b);
Chris@2 150 extern long oggpackB_read(oggpack_buffer *b,int bits);
Chris@2 151 extern long oggpackB_read1(oggpack_buffer *b);
Chris@2 152 extern long oggpackB_bytes(oggpack_buffer *b);
Chris@2 153 extern long oggpackB_bits(oggpack_buffer *b);
Chris@2 154 extern unsigned char *oggpackB_get_buffer(oggpack_buffer *b);
Chris@2 155
Chris@2 156 /* Ogg BITSTREAM PRIMITIVES: encoding **************************/
Chris@2 157
Chris@2 158 extern int ogg_stream_packetin(ogg_stream_state *os, ogg_packet *op);
Chris@2 159 extern int ogg_stream_iovecin(ogg_stream_state *os, ogg_iovec_t *iov,
Chris@2 160 int count, long e_o_s, ogg_int64_t granulepos);
Chris@2 161 extern int ogg_stream_pageout(ogg_stream_state *os, ogg_page *og);
Chris@2 162 extern int ogg_stream_pageout_fill(ogg_stream_state *os, ogg_page *og, int nfill);
Chris@2 163 extern int ogg_stream_flush(ogg_stream_state *os, ogg_page *og);
Chris@2 164 extern int ogg_stream_flush_fill(ogg_stream_state *os, ogg_page *og, int nfill);
Chris@2 165
Chris@2 166 /* Ogg BITSTREAM PRIMITIVES: decoding **************************/
Chris@2 167
Chris@2 168 extern int ogg_sync_init(ogg_sync_state *oy);
Chris@2 169 extern int ogg_sync_clear(ogg_sync_state *oy);
Chris@2 170 extern int ogg_sync_reset(ogg_sync_state *oy);
Chris@2 171 extern int ogg_sync_destroy(ogg_sync_state *oy);
Chris@2 172 extern int ogg_sync_check(ogg_sync_state *oy);
Chris@2 173
Chris@2 174 extern char *ogg_sync_buffer(ogg_sync_state *oy, long size);
Chris@2 175 extern int ogg_sync_wrote(ogg_sync_state *oy, long bytes);
Chris@2 176 extern long ogg_sync_pageseek(ogg_sync_state *oy,ogg_page *og);
Chris@2 177 extern int ogg_sync_pageout(ogg_sync_state *oy, ogg_page *og);
Chris@2 178 extern int ogg_stream_pagein(ogg_stream_state *os, ogg_page *og);
Chris@2 179 extern int ogg_stream_packetout(ogg_stream_state *os,ogg_packet *op);
Chris@2 180 extern int ogg_stream_packetpeek(ogg_stream_state *os,ogg_packet *op);
Chris@2 181
Chris@2 182 /* Ogg BITSTREAM PRIMITIVES: general ***************************/
Chris@2 183
Chris@2 184 extern int ogg_stream_init(ogg_stream_state *os,int serialno);
Chris@2 185 extern int ogg_stream_clear(ogg_stream_state *os);
Chris@2 186 extern int ogg_stream_reset(ogg_stream_state *os);
Chris@2 187 extern int ogg_stream_reset_serialno(ogg_stream_state *os,int serialno);
Chris@2 188 extern int ogg_stream_destroy(ogg_stream_state *os);
Chris@2 189 extern int ogg_stream_check(ogg_stream_state *os);
Chris@2 190 extern int ogg_stream_eos(ogg_stream_state *os);
Chris@2 191
Chris@2 192 extern void ogg_page_checksum_set(ogg_page *og);
Chris@2 193
Chris@2 194 extern int ogg_page_version(const ogg_page *og);
Chris@2 195 extern int ogg_page_continued(const ogg_page *og);
Chris@2 196 extern int ogg_page_bos(const ogg_page *og);
Chris@2 197 extern int ogg_page_eos(const ogg_page *og);
Chris@2 198 extern ogg_int64_t ogg_page_granulepos(const ogg_page *og);
Chris@2 199 extern int ogg_page_serialno(const ogg_page *og);
Chris@2 200 extern long ogg_page_pageno(const ogg_page *og);
Chris@2 201 extern int ogg_page_packets(const ogg_page *og);
Chris@2 202
Chris@2 203 extern void ogg_packet_clear(ogg_packet *op);
Chris@2 204
Chris@2 205
Chris@2 206 #ifdef __cplusplus
Chris@2 207 }
Chris@2 208 #endif
Chris@2 209
Chris@2 210 #endif /* _OGG_H */