]> 4ch.mooo.com Git - 16.git/blob - src/lib/dl/ext/vorbtool/audio.h
meh did some cleanings and i will work on mapread to mm thingy sometime soon! oops...
[16.git] / src / lib / dl / ext / vorbtool / audio.h
1
2 #ifndef __AUDIO_H
3 #define __AUDIO_H
4
5 #include "encode.h"
6 #include <stdio.h>
7
8 int setup_resample(oe_enc_opt *opt);
9 void clear_resample(oe_enc_opt *opt);
10 void setup_downmix(oe_enc_opt *opt);
11 void clear_downmix(oe_enc_opt *opt);
12 void setup_scaler(oe_enc_opt *opt, float scale);
13 void clear_scaler(oe_enc_opt *opt);
14
15 typedef struct
16 {
17     int (*id_func)(unsigned char *buf, int len); /* Returns true if can load file */
18     int id_data_len; /* Amount of data needed to id whether this can load the file */
19     int (*open_func)(FILE *in, oe_enc_opt *opt, unsigned char *buf, int buflen);
20     void (*close_func)(void *);
21     char *format;
22     char *description;
23 } input_format;
24
25
26 typedef struct {
27     short format;
28     short channels;
29     int samplerate;
30     int bytespersec;
31     short align;
32     short samplesize;
33     unsigned int mask;
34 } wav_fmt;
35
36 typedef struct {
37     short channels;
38     short samplesize;
39     long totalsamples;
40     long samplesread;
41     FILE *f;
42     short bigendian;
43         int *channel_permute;
44 } wavfile;
45
46 typedef struct {
47     short channels;
48     int totalframes;
49     short samplesize;
50     int rate;
51     int offset;
52     int blocksize;
53 } aiff_fmt;
54
55 typedef wavfile aifffile; /* They're the same */
56
57 input_format *open_audio_file(FILE *in, oe_enc_opt *opt);
58
59 int raw_open(FILE *in, oe_enc_opt *opt, unsigned char *buf, int buflen);
60 int wav_open(FILE *in, oe_enc_opt *opt, unsigned char *buf, int buflen);
61 int aiff_open(FILE *in, oe_enc_opt *opt, unsigned char *buf, int buflen);
62 int wav_id(unsigned char *buf, int len);
63 int aiff_id(unsigned char *buf, int len);
64 void wav_close(void *);
65 void raw_close(void *);
66
67 long wav_read(void *, float **buffer, int samples);
68 long wav_ieee_read(void *, float **buffer, int samples);
69 long raw_read_stereo(void *, float **buffer, int samples);
70
71 #endif /* __AUDIO_H */
72