blob: d7f3709c8c5bc726144c2914c4f03a00fa86147a [file] [log] [blame]
Gloria Wang79130732010-02-08 14:41:04 -08001/********************************************************************
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: libvorbis codec headers
15
16 ********************************************************************/
17
18#ifndef _vorbis_codec_h_
19#define _vorbis_codec_h_
20
21#ifdef __cplusplus
22extern "C"
23{
24#endif /* __cplusplus */
25
26#include "ogg.h"
27
28struct vorbis_dsp_state;
29typedef struct vorbis_dsp_state vorbis_dsp_state;
30
31typedef struct vorbis_info{
32 int version;
33 int channels;
34 long rate;
35
36 /* The below bitrate declarations are *hints*.
37 Combinations of the three values carry the following implications:
38
39 all three set to the same value:
40 implies a fixed rate bitstream
41 only nominal set:
42 implies a VBR stream that averages the nominal bitrate. No hard
43 upper/lower limit
44 upper and or lower set:
45 implies a VBR bitstream that obeys the bitrate limits. nominal
46 may also be set to give a nominal rate.
47 none set:
48 the coder does not care to speculate.
49 */
50
51 long bitrate_upper;
52 long bitrate_nominal;
53 long bitrate_lower;
54 long bitrate_window;
55
56 void *codec_setup;
57} vorbis_info;
58
59typedef struct vorbis_comment{
60 char **user_comments;
61 int *comment_lengths;
62 int comments;
63 char *vendor;
64
65} vorbis_comment;
66
67
68/* Vorbis PRIMITIVES: general ***************************************/
69
70extern void vorbis_info_init(vorbis_info *vi);
71extern void vorbis_info_clear(vorbis_info *vi);
72extern int vorbis_info_blocksize(vorbis_info *vi,int zo);
73extern void vorbis_comment_init(vorbis_comment *vc);
74extern void vorbis_comment_add(vorbis_comment *vc, char *comment);
75extern void vorbis_comment_add_tag(vorbis_comment *vc,
76 char *tag, char *contents);
77extern char *vorbis_comment_query(vorbis_comment *vc, char *tag, int count);
78extern int vorbis_comment_query_count(vorbis_comment *vc, char *tag);
79extern void vorbis_comment_clear(vorbis_comment *vc);
80
81/* Vorbis ERRORS and return codes ***********************************/
82
83#define OV_FALSE -1
84#define OV_EOF -2
85#define OV_HOLE -3
86
87#define OV_EREAD -128
88#define OV_EFAULT -129
89#define OV_EIMPL -130
90#define OV_EINVAL -131
91#define OV_ENOTVORBIS -132
92#define OV_EBADHEADER -133
93#define OV_EVERSION -134
94#define OV_ENOTAUDIO -135
95#define OV_EBADPACKET -136
96#define OV_EBADLINK -137
97#define OV_ENOSEEK -138
98
99#ifdef __cplusplus
100}
101#endif /* __cplusplus */
102
103#endif
104