diff options
Diffstat (limited to 'apps/codecs/Tremor/ivorbisfile.h')
-rw-r--r-- | apps/codecs/Tremor/ivorbisfile.h | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/apps/codecs/Tremor/ivorbisfile.h b/apps/codecs/Tremor/ivorbisfile.h new file mode 100644 index 0000000000..dd773788a1 --- /dev/null +++ b/apps/codecs/Tremor/ivorbisfile.h | |||
@@ -0,0 +1,130 @@ | |||
1 | /******************************************************************** | ||
2 | * * | ||
3 | * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * | ||
4 | * * | ||
5 | * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * | ||
6 | * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * | ||
7 | * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * | ||
8 | * * | ||
9 | * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * | ||
10 | * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * | ||
11 | * * | ||
12 | ******************************************************************** | ||
13 | |||
14 | function: stdio-based convenience library for opening/seeking/decoding | ||
15 | |||
16 | ********************************************************************/ | ||
17 | |||
18 | #ifndef _OV_FILE_H_ | ||
19 | #define _OV_FILE_H_ | ||
20 | |||
21 | #ifdef __cplusplus | ||
22 | extern "C" | ||
23 | { | ||
24 | #endif /* __cplusplus */ | ||
25 | |||
26 | #include <stdio.h> | ||
27 | #include "ivorbiscodec.h" | ||
28 | |||
29 | #define CHUNKSIZE 1024 | ||
30 | /* The function prototypes for the callbacks are basically the same as for | ||
31 | * the stdio functions fread, fseek, fclose, ftell. | ||
32 | * The one difference is that the FILE * arguments have been replaced with | ||
33 | * a void * - this is to be used as a pointer to whatever internal data these | ||
34 | * functions might need. In the stdio case, it's just a FILE * cast to a void * | ||
35 | * | ||
36 | * If you use other functions, check the docs for these functions and return | ||
37 | * the right values. For seek_func(), you *MUST* return -1 if the stream is | ||
38 | * unseekable | ||
39 | */ | ||
40 | typedef struct { | ||
41 | size_t (*read_func) (void *ptr, size_t size, size_t nmemb, void *datasource); | ||
42 | int (*seek_func) (void *datasource, ogg_int64_t offset, int whence); | ||
43 | int (*close_func) (void *datasource); | ||
44 | long (*tell_func) (void *datasource); | ||
45 | } ov_callbacks; | ||
46 | |||
47 | #define NOTOPEN 0 | ||
48 | #define PARTOPEN 1 | ||
49 | #define OPENED 2 | ||
50 | #define STREAMSET 3 | ||
51 | #define INITSET 4 | ||
52 | |||
53 | typedef struct OggVorbis_File { | ||
54 | void *datasource; /* Pointer to a FILE *, etc. */ | ||
55 | int seekable; | ||
56 | ogg_int64_t offset; | ||
57 | ogg_int64_t end; | ||
58 | ogg_sync_state *oy; | ||
59 | |||
60 | /* If the FILE handle isn't seekable (eg, a pipe), only the current | ||
61 | stream appears */ | ||
62 | int links; | ||
63 | ogg_int64_t *offsets; | ||
64 | ogg_int64_t *dataoffsets; | ||
65 | ogg_uint32_t *serialnos; | ||
66 | ogg_int64_t *pcmlengths; | ||
67 | vorbis_info *vi; | ||
68 | vorbis_comment *vc; | ||
69 | |||
70 | /* Decoding working state local storage */ | ||
71 | ogg_int64_t pcm_offset; | ||
72 | int ready_state; | ||
73 | ogg_uint32_t current_serialno; | ||
74 | int current_link; | ||
75 | |||
76 | ogg_int64_t bittrack; | ||
77 | ogg_int64_t samptrack; | ||
78 | |||
79 | ogg_stream_state *os; /* take physical pages, weld into a logical | ||
80 | stream of packets */ | ||
81 | vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */ | ||
82 | vorbis_block vb; /* local working space for packet->PCM decode */ | ||
83 | |||
84 | ov_callbacks callbacks; | ||
85 | |||
86 | } OggVorbis_File; | ||
87 | |||
88 | extern int ov_clear(OggVorbis_File *vf); | ||
89 | extern int ov_open(FILE *f,OggVorbis_File *vf,char *initial,long ibytes); | ||
90 | extern int ov_open_callbacks(void *datasource, OggVorbis_File *vf, | ||
91 | char *initial, long ibytes, ov_callbacks callbacks); | ||
92 | |||
93 | extern int ov_test(FILE *f,OggVorbis_File *vf,char *initial,long ibytes); | ||
94 | extern int ov_test_callbacks(void *datasource, OggVorbis_File *vf, | ||
95 | char *initial, long ibytes, ov_callbacks callbacks); | ||
96 | extern int ov_test_open(OggVorbis_File *vf); | ||
97 | |||
98 | extern long ov_bitrate(OggVorbis_File *vf,int i); | ||
99 | extern long ov_bitrate_instant(OggVorbis_File *vf); | ||
100 | extern long ov_streams(OggVorbis_File *vf); | ||
101 | extern long ov_seekable(OggVorbis_File *vf); | ||
102 | extern long ov_serialnumber(OggVorbis_File *vf,int i); | ||
103 | |||
104 | extern ogg_int64_t ov_raw_total(OggVorbis_File *vf,int i); | ||
105 | extern ogg_int64_t ov_pcm_total(OggVorbis_File *vf,int i); | ||
106 | extern ogg_int64_t ov_time_total(OggVorbis_File *vf,int i); | ||
107 | |||
108 | extern int ov_raw_seek(OggVorbis_File *vf,ogg_int64_t pos); | ||
109 | extern int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos); | ||
110 | extern int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos); | ||
111 | extern int ov_time_seek(OggVorbis_File *vf,ogg_int64_t pos); | ||
112 | extern int ov_time_seek_page(OggVorbis_File *vf,ogg_int64_t pos); | ||
113 | |||
114 | extern ogg_int64_t ov_raw_tell(OggVorbis_File *vf); | ||
115 | extern ogg_int64_t ov_pcm_tell(OggVorbis_File *vf); | ||
116 | extern ogg_int64_t ov_time_tell(OggVorbis_File *vf); | ||
117 | |||
118 | extern vorbis_info *ov_info(OggVorbis_File *vf,int link); | ||
119 | extern vorbis_comment *ov_comment(OggVorbis_File *vf,int link); | ||
120 | |||
121 | extern long ov_read(OggVorbis_File *vf,char *buffer,int length, | ||
122 | int *bitstream); | ||
123 | |||
124 | #ifdef __cplusplus | ||
125 | } | ||
126 | #endif /* __cplusplus */ | ||
127 | |||
128 | #endif | ||
129 | |||
130 | |||