00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _vorbis_codec_h_
00019 #define _vorbis_codec_h_
00020
00021 #ifndef __SYMBIAN32__
00022 # define IMPORT_C extern
00023 # define EXPORT_C
00024 #else
00025 # ifndef __cplusplus
00026 # undef IMPORT_C
00027 # define IMPORT_C __declspec(dllexport)
00028 # define EXPORT_C __declspec(dllexport)
00029 # endif
00030 #endif
00031
00032 #ifdef __cplusplus
00033 extern "C"
00034 {
00035 #endif
00036
00037 #include "ogg.h"
00038
00039 typedef struct vorbis_info{
00040 int version;
00041 int channels;
00042 long rate;
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059 long bitrate_upper;
00060 long bitrate_nominal;
00061 long bitrate_lower;
00062 long bitrate_window;
00063
00064 void *codec_setup;
00065 } vorbis_info;
00066
00067
00068
00069
00070 typedef struct vorbis_dsp_state{
00071 int analysisp;
00072 vorbis_info *vi;
00073
00074 ogg_int32_t **pcm;
00075 ogg_int32_t **pcmret;
00076 int pcm_storage;
00077 int pcm_current;
00078 int pcm_returned;
00079
00080 int preextrapolate;
00081 int eofflag;
00082
00083 long lW;
00084 long W;
00085 long nW;
00086 long centerW;
00087
00088 ogg_int64_t granulepos;
00089 ogg_int64_t sequence;
00090
00091 void *backend_state;
00092 } vorbis_dsp_state;
00093
00094 typedef struct vorbis_block{
00095
00096 ogg_int32_t **pcm;
00097 oggpack_buffer opb;
00098
00099 long lW;
00100 long W;
00101 long nW;
00102 int pcmend;
00103 int mode;
00104
00105 int eofflag;
00106 ogg_int64_t granulepos;
00107 ogg_int64_t sequence;
00108 vorbis_dsp_state *vd;
00109
00110
00111
00112 void *localstore;
00113 long localtop;
00114 long localalloc;
00115 long totaluse;
00116 struct alloc_chain *reap;
00117
00118 } vorbis_block;
00119
00120
00121
00122
00123
00124
00125 struct alloc_chain{
00126 void *ptr;
00127 struct alloc_chain *next;
00128 };
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138 typedef struct vorbis_comment{
00139
00140
00141 char **user_comments;
00142 int *comment_lengths;
00143 int comments;
00144 char *vendor;
00145
00146 } vorbis_comment;
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163 IMPORT_C void vorbis_info_init(vorbis_info *vi);
00164 IMPORT_C void vorbis_info_clear(vorbis_info *vi);
00165 IMPORT_C int vorbis_info_blocksize(vorbis_info *vi,int zo);
00166 IMPORT_C void vorbis_comment_init(vorbis_comment *vc);
00167 IMPORT_C void vorbis_comment_add(vorbis_comment *vc, char *comment);
00168 IMPORT_C void vorbis_comment_add_tag(vorbis_comment *vc,
00169 char *tag, char *contents);
00170 IMPORT_C char *vorbis_comment_query(vorbis_comment *vc, char *tag, int count);
00171 IMPORT_C int vorbis_comment_query_count(vorbis_comment *vc, char *tag);
00172 IMPORT_C void vorbis_comment_clear(vorbis_comment *vc);
00173
00174 IMPORT_C int vorbis_block_init(vorbis_dsp_state *v, vorbis_block *vb);
00175 IMPORT_C int vorbis_block_clear(vorbis_block *vb);
00176 IMPORT_C void vorbis_dsp_clear(vorbis_dsp_state *v);
00177
00178
00179 IMPORT_C int vorbis_synthesis_headerin(vorbis_info *vi,vorbis_comment *vc,
00180 ogg_packet *op);
00181
00182 IMPORT_C int vorbis_synthesis_init(vorbis_dsp_state *v,vorbis_info *vi);
00183 IMPORT_C int vorbis_synthesis_restart(vorbis_dsp_state *v);
00184 IMPORT_C int vorbis_synthesis(vorbis_block *vb,ogg_packet *op,int decodep);
00185 IMPORT_C int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb);
00186 IMPORT_C int vorbis_synthesis_pcmout(vorbis_dsp_state *v,ogg_int32_t ***pcm);
00187 IMPORT_C int vorbis_synthesis_read(vorbis_dsp_state *v,int samples);
00188 IMPORT_C long vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op);
00189
00190
00191
00192 #define OV_FALSE -1
00193 #define OV_EOF -2
00194 #define OV_HOLE -3
00195
00196 #define OV_EREAD -128
00197 #define OV_EFAULT -129
00198 #define OV_EIMPL -130
00199 #define OV_EINVAL -131
00200 #define OV_ENOTVORBIS -132
00201 #define OV_EBADHEADER -133
00202 #define OV_EVERSION -134
00203 #define OV_ENOTAUDIO -135
00204 #define OV_EBADPACKET -136
00205 #define OV_EBADLINK -137
00206 #define OV_ENOSEEK -138
00207
00208 #ifdef __cplusplus
00209 }
00210 #endif
00211
00212 #endif
00213