| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 | 
							- /********************************************************************
 
-  *                                                                  *
 
-  * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE.   *
 
-  *                                                                  *
 
-  * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
 
-  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
 
-  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
 
-  *                                                                  *
 
-  * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002    *
 
-  * BY THE Xiph.Org FOUNDATION http://www.xiph.org/                  *
 
-  *                                                                  *
 
-  ********************************************************************
 
-  function: libvorbis codec headers
 
-  ********************************************************************/
 
- #ifndef _vorbis_codec_h_
 
- #define _vorbis_codec_h_
 
- #ifdef __cplusplus
 
- extern "C"
 
- {
 
- #endif /* __cplusplus */
 
- #include <ogg/ogg.h>
 
- typedef struct vorbis_info{
 
-   int version;
 
-   int channels;
 
-   long rate;
 
-   /* The below bitrate declarations are *hints*.
 
-      Combinations of the three values carry the following implications:
 
-      
 
-      all three set to the same value: 
 
-        implies a fixed rate bitstream
 
-      only nominal set: 
 
-        implies a VBR stream that averages the nominal bitrate.  No hard 
 
-        upper/lower limit
 
-      upper and or lower set: 
 
-        implies a VBR bitstream that obeys the bitrate limits. nominal 
 
-        may also be set to give a nominal rate.
 
-      none set:
 
-        the coder does not care to speculate.
 
-   */
 
-   long bitrate_upper;
 
-   long bitrate_nominal;
 
-   long bitrate_lower;
 
-   long bitrate_window;
 
-   void *codec_setup;
 
- } vorbis_info;
 
- /* vorbis_dsp_state buffers the current vorbis audio
 
-    analysis/synthesis state.  The DSP state belongs to a specific
 
-    logical bitstream ****************************************************/
 
- typedef struct vorbis_dsp_state{
 
-   int analysisp;
 
-   vorbis_info *vi;
 
-   ogg_int32_t **pcm;
 
-   ogg_int32_t **pcmret;
 
-   int      pcm_storage;
 
-   int      pcm_current;
 
-   int      pcm_returned;
 
-   int  preextrapolate;
 
-   int  eofflag;
 
-   long lW;
 
-   long W;
 
-   long nW;
 
-   long centerW;
 
-   ogg_int64_t granulepos;
 
-   ogg_int64_t sequence;
 
-   void       *backend_state;
 
- } vorbis_dsp_state;
 
- typedef struct vorbis_block{
 
-   /* necessary stream state for linking to the framing abstraction */
 
-   ogg_int32_t  **pcm;       /* this is a pointer into local storage */ 
 
-   oggpack_buffer opb;
 
-   
 
-   long  lW;
 
-   long  W;
 
-   long  nW;
 
-   int   pcmend;
 
-   int   mode;
 
-   int         eofflag;
 
-   ogg_int64_t granulepos;
 
-   ogg_int64_t sequence;
 
-   vorbis_dsp_state *vd; /* For read-only access of configuration */
 
-   /* local storage to avoid remallocing; it's up to the mapping to
 
-      structure it */
 
-   void               *localstore;
 
-   long                localtop;
 
-   long                localalloc;
 
-   long                totaluse;
 
-   struct alloc_chain *reap;
 
- } vorbis_block;
 
- /* vorbis_block is a single block of data to be processed as part of
 
- the analysis/synthesis stream; it belongs to a specific logical
 
- bitstream, but is independant from other vorbis_blocks belonging to
 
- that logical bitstream. *************************************************/
 
- struct alloc_chain{
 
-   void *ptr;
 
-   struct alloc_chain *next;
 
- };
 
- /* vorbis_info contains all the setup information specific to the
 
-    specific compression/decompression mode in progress (eg,
 
-    psychoacoustic settings, channel setup, options, codebook
 
-    etc). vorbis_info and substructures are in backends.h.
 
- *********************************************************************/
 
- /* the comments are not part of vorbis_info so that vorbis_info can be
 
-    static storage */
 
- typedef struct vorbis_comment{
 
-   /* unlimited user comment fields.  libvorbis writes 'libvorbis'
 
-      whatever vendor is set to in encode */
 
-   char **user_comments;
 
-   int   *comment_lengths;
 
-   int    comments;
 
-   char  *vendor;
 
- } vorbis_comment;
 
- /* libvorbis encodes in two abstraction layers; first we perform DSP
 
-    and produce a packet (see docs/analysis.txt).  The packet is then
 
-    coded into a framed OggSquish bitstream by the second layer (see
 
-    docs/framing.txt).  Decode is the reverse process; we sync/frame
 
-    the bitstream and extract individual packets, then decode the
 
-    packet back into PCM audio.
 
-    The extra framing/packetizing is used in streaming formats, such as
 
-    files.  Over the net (such as with UDP), the framing and
 
-    packetization aren't necessary as they're provided by the transport
 
-    and the streaming layer is not used */
 
- /* Vorbis PRIMITIVES: general ***************************************/
 
- extern void     vorbis_info_init(vorbis_info *vi);
 
- extern void     vorbis_info_clear(vorbis_info *vi);
 
- extern int      vorbis_info_blocksize(vorbis_info *vi,int zo);
 
- extern void     vorbis_comment_init(vorbis_comment *vc);
 
- extern void     vorbis_comment_add(vorbis_comment *vc, char *comment); 
 
- extern void     vorbis_comment_add_tag(vorbis_comment *vc, 
 
- 				       char *tag, char *contents);
 
- extern char    *vorbis_comment_query(vorbis_comment *vc, char *tag, int count);
 
- extern int      vorbis_comment_query_count(vorbis_comment *vc, char *tag);
 
- extern void     vorbis_comment_clear(vorbis_comment *vc);
 
- extern int      vorbis_block_init(vorbis_dsp_state *v, vorbis_block *vb);
 
- extern int      vorbis_block_clear(vorbis_block *vb);
 
- extern void     vorbis_dsp_clear(vorbis_dsp_state *v);
 
- /* Vorbis PRIMITIVES: synthesis layer *******************************/
 
- extern int      vorbis_synthesis_idheader(ogg_packet *op);
 
- extern int      vorbis_synthesis_headerin(vorbis_info *vi,vorbis_comment *vc,
 
- 					  ogg_packet *op);
 
- extern int      vorbis_synthesis_init(vorbis_dsp_state *v,vorbis_info *vi);
 
- extern int      vorbis_synthesis_restart(vorbis_dsp_state *v);
 
- extern int      vorbis_synthesis(vorbis_block *vb,ogg_packet *op);
 
- extern int      vorbis_synthesis_trackonly(vorbis_block *vb,ogg_packet *op);
 
- extern int      vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb);
 
- extern int      vorbis_synthesis_pcmout(vorbis_dsp_state *v,ogg_int32_t ***pcm);
 
- extern int      vorbis_synthesis_read(vorbis_dsp_state *v,int samples);
 
- extern long     vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op);
 
- /* Vorbis ERRORS and return codes ***********************************/
 
- #define OV_FALSE      -1  
 
- #define OV_EOF        -2
 
- #define OV_HOLE       -3
 
- #define OV_EREAD      -128
 
- #define OV_EFAULT     -129
 
- #define OV_EIMPL      -130
 
- #define OV_EINVAL     -131
 
- #define OV_ENOTVORBIS -132
 
- #define OV_EBADHEADER -133
 
- #define OV_EVERSION   -134
 
- #define OV_ENOTAUDIO  -135
 
- #define OV_EBADPACKET -136
 
- #define OV_EBADLINK   -137
 
- #define OV_ENOSEEK    -138
 
- #ifdef __cplusplus
 
- }
 
- #endif /* __cplusplus */
 
- #endif
 
 
  |