125 lines
4.1 KiB
C
125 lines
4.1 KiB
C
/************************************************************************
|
|
* 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
|
|
|