-
Notifications
You must be signed in to change notification settings - Fork 1
/
libvorbis_file_h.lua
85 lines (84 loc) · 3.27 KB
/
libvorbis_file_h.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
--include/vorbis/vorbisfile.h from libvorbis 1.3.5
local ffi = require'ffi'
require'libvorbis_h'
ffi.cdef[[
typedef struct FILE FILE;
typedef struct {
size_t (*read_func) (void *ptr, size_t size, size_t nmemb, void *datasource);
int (*seek_func) (void *datasource, ogg_int64_t offset, int whence);
int (*close_func) (void *datasource);
long (*tell_func) (void *datasource);
} ov_callbacks;
enum {
NOTOPEN = 0,
PARTOPEN = 1,
OPENED = 2,
STREAMSET = 3,
INITSET = 4,
};
typedef struct OggVorbis_File {
void *datasource;
int seekable;
ogg_int64_t offset;
ogg_int64_t end;
ogg_sync_state oy;
int links;
ogg_int64_t *offsets;
ogg_int64_t *dataoffsets;
long *serialnos;
ogg_int64_t *pcmlengths;
vorbis_info *vi;
vorbis_comment *vc;
ogg_int64_t pcm_offset;
int ready_state;
long current_serialno;
int current_link;
double bittrack;
double samptrack;
ogg_stream_state os;
vorbis_dsp_state vd;
vorbis_block vb;
ov_callbacks callbacks;
} OggVorbis_File;
int ov_clear(OggVorbis_File *vf);
int ov_fopen(const char *path,OggVorbis_File *vf);
int ov_open(FILE *f,OggVorbis_File *vf,const void *initial,long ibytes);
int ov_open_callbacks(void *datasource, OggVorbis_File *vf,
const void *initial, long ibytes, ov_callbacks callbacks);
int ov_test(FILE *f,OggVorbis_File *vf,const void *initial,long ibytes);
int ov_test_callbacks(void *datasource, OggVorbis_File *vf,
const void *initial, long ibytes, ov_callbacks callbacks);
int ov_test_open(OggVorbis_File *vf);
long ov_bitrate(OggVorbis_File *vf,int i);
long ov_bitrate_instant(OggVorbis_File *vf);
long ov_streams(OggVorbis_File *vf);
long ov_seekable(OggVorbis_File *vf);
long ov_serialnumber(OggVorbis_File *vf,int i);
ogg_int64_t ov_raw_total(OggVorbis_File *vf,int i);
ogg_int64_t ov_pcm_total(OggVorbis_File *vf,int i);
double ov_time_total(OggVorbis_File *vf,int i);
int ov_raw_seek(OggVorbis_File *vf,ogg_int64_t pos);
int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos);
int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos);
int ov_time_seek(OggVorbis_File *vf,double pos);
int ov_time_seek_page(OggVorbis_File *vf,double pos);
int ov_raw_seek_lap(OggVorbis_File *vf,ogg_int64_t pos);
int ov_pcm_seek_lap(OggVorbis_File *vf,ogg_int64_t pos);
int ov_pcm_seek_page_lap(OggVorbis_File *vf,ogg_int64_t pos);
int ov_time_seek_lap(OggVorbis_File *vf,double pos);
int ov_time_seek_page_lap(OggVorbis_File *vf,double pos);
ogg_int64_t ov_raw_tell(OggVorbis_File *vf);
ogg_int64_t ov_pcm_tell(OggVorbis_File *vf);
double ov_time_tell(OggVorbis_File *vf);
vorbis_info *ov_info(OggVorbis_File *vf,int link);
vorbis_comment *ov_comment(OggVorbis_File *vf,int link);
long ov_read_float(OggVorbis_File *vf,float ***pcm_channels,int samples, int *bitstream);
long ov_read_filter(OggVorbis_File *vf,void *buffer,int length,
int bigendianp,int word,int sgned,int *bitstream,
void (*filter)(float **pcm,long channels,long samples,void *filter_param),void *filter_param);
long ov_read(OggVorbis_File *vf,void *buffer,int length,
int bigendianp,int word,int sgned,int *bitstream);
int ov_crosslap(OggVorbis_File *vf1,OggVorbis_File *vf2);
int ov_halfrate(OggVorbis_File *vf,int flag);
int ov_halfrate_p(OggVorbis_File *vf);
]]