| /************************************************************************ |
| * Copyright (C) 2002-2009, Xiph.org Foundation |
| * Copyright (C) 2010, Robin Watts for Pinknoise Productions Ltd |
| * All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * |
| * * Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * * Redistributions in binary form must reproduce the above |
| * copyright notice, this list of conditions and the following disclaimer |
| * in the documentation and/or other materials provided with the |
| * distribution. |
| * * Neither the names of the Xiph.org Foundation nor Pinknoise |
| * Productions Ltd nor the names of its contributors may be used to |
| * endorse or promote products derived from this software without |
| * specific prior written permission. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| ************************************************************************ |
| |
| function: libvorbis codec headers |
| |
| ************************************************************************/ |
| |
| #ifndef _vorbis_codec_h_ |
| #define _vorbis_codec_h_ |
| |
| #ifdef __cplusplus |
| extern "C" |
| { |
| #endif /* __cplusplus */ |
| |
| #include "ogg.h" |
| |
| struct vorbis_dsp_state; |
| typedef struct vorbis_dsp_state vorbis_dsp_state; |
| |
| 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; |
| |
| typedef struct vorbis_comment{ |
| char **user_comments; |
| int *comment_lengths; |
| int comments; |
| char *vendor; |
| |
| } vorbis_comment; |
| |
| |
| /* 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); |
| |
| /* 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 |
| |