Mercurial > otakunoraifu
comparison music2/wavfile.h @ 0:223b71206888
Initial import
author | thib |
---|---|
date | Fri, 01 Aug 2008 16:32:45 +0000 |
parents | |
children | 3a6aaeab7b4e |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:223b71206888 |
---|---|
1 /* | |
2 * wavfile.h WAV file´ØÏ¢ | |
3 * | |
4 * Copyright: wavfile.c (c) Erik de Castro Lopo erikd@zip.com.au | |
5 * | |
6 * Modified : 1997-1998 Masaki Chikama (Wren) <chikama@kasumi.ipl.mech.nagoya-u.ac.jp> | |
7 * 1998- <masaki-c@is.aist-nara.ac.jp> | |
8 * | |
9 * This program is free software; you can redistribute it and/or modify | |
10 * it under the terms of the GNU General Public License as published by | |
11 * the Free Software Foundation; either version 2 of the License, or | |
12 * (at your option) any later version. | |
13 * | |
14 * This program is distributed in the hope that it will be useful, | |
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 * GNU General Public License for more details. | |
18 * | |
19 * You should have received a copy of the GNU General Public License | |
20 * along with this program; if not, write to the Free Software | |
21 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |
22 * | |
23 */ | |
24 #ifndef __WAVEFILE__ | |
25 #define __WAVEFILE__ | |
26 | |
27 #define WW_BADOUTPUTFILE 1 | |
28 #define WW_BADWRITEHEADER 2 | |
29 | |
30 #define WR_BADALLOC 3 | |
31 #define WR_BADSEEK 4 | |
32 #define WR_BADRIFF 5 | |
33 #define WR_BADWAVE 6 | |
34 #define WR_BADFORMAT 7 | |
35 #define WR_BADFORMATSIZE 8 | |
36 | |
37 #define WR_NOTPCMFORMAT 9 | |
38 #define WR_NODATACHUNK 10 | |
39 #define WR_BADFORMATDATA 11 | |
40 | |
41 /* | |
42 * These values represent values found in/or destined for a | |
43 * WAV file. | |
44 */ | |
45 typedef struct { | |
46 unsigned int SamplingRate; /* Sampling rate in Hz */ | |
47 int Channels; /* Mono or Stereo */ | |
48 unsigned short DataBits; /* Sample bit size (8/12/16) */ | |
49 } WAVINF; | |
50 | |
51 struct WAVFILE{ | |
52 WAVINF wavinfo; /* WAV file hdr info */ | |
53 WAVFILE(void); | |
54 static int freq; | |
55 static int format; | |
56 static int channels; | |
57 virtual ~WAVFILE() {}; | |
58 virtual int Read(char* buf, int blksize, int blklen) = 0; | |
59 virtual void Seek(int count) = 0; | |
60 static WAVFILE* MakeConverter(WAVFILE* new_reader); | |
61 }; | |
62 | |
63 struct WAVFILE_Converter : WAVFILE { | |
64 WAVFILE* original; | |
65 struct SDL_AudioCVT* cvt; | |
66 int datasize; | |
67 char* tmpbuf; | |
68 int Read(char* buf, int blksize, int blklen); | |
69 void Seek(int count) { original->Seek(count);} | |
70 WAVFILE_Converter(WAVFILE* orig, struct SDL_AudioCVT* cvt); | |
71 ~WAVFILE_Converter(); | |
72 }; | |
73 | |
74 struct WAVFILE_Stream : WAVFILE{ | |
75 char *data; /* real data */ | |
76 char *data_orig; | |
77 int data_length; | |
78 FILE* stream; | |
79 int stream_length; | |
80 int stream_length_orig; | |
81 int stream_top; | |
82 int Read(char* buf, int blksize, int blklen); | |
83 void Seek(int count); | |
84 WAVFILE_Stream(FILE* stream, int length); | |
85 ~WAVFILE_Stream(); | |
86 }; | |
87 | |
88 struct NWAFILE : WAVFILE { | |
89 int skip_count; | |
90 FILE* stream; | |
91 struct NWAData* nwa; | |
92 char* data; | |
93 int block_size; | |
94 int data_len; | |
95 | |
96 NWAFILE(FILE* stream); | |
97 ~NWAFILE(); | |
98 void Seek(int count); | |
99 int Read(char* buf, int blksize, int blklen); | |
100 static char* ReadAll(FILE* stream, int& size); | |
101 }; | |
102 | |
103 struct OggFILE : WAVFILE { | |
104 struct OggFILE_impl* pimpl; | |
105 | |
106 OggFILE(FILE* stream, int size); | |
107 ~OggFILE(); | |
108 void Seek(int count); | |
109 int Read(char* buf, int blksize, int blklen); | |
110 }; | |
111 | |
112 struct MP3FILE : WAVFILE { | |
113 struct MP3FILE_impl* pimpl; | |
114 | |
115 MP3FILE(FILE* stream, int size); | |
116 ~MP3FILE(); | |
117 void Seek(int count); | |
118 int Read(char* buf, int blksize, int blklen); | |
119 }; | |
120 | |
121 #endif /* !__WAVEFILE__ */ |