annotate win64-msvc/include/ogg/ogg.h @ 76:f3731af47c4b

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