cannam@85
|
1 /*
|
cannam@85
|
2 ** Copyright (C) 2010-2011 Erik de Castro Lopo <erikd@mega-nerd.com>
|
cannam@85
|
3 **
|
cannam@85
|
4 ** This program is free software ; you can redistribute it and/or modify
|
cannam@85
|
5 ** it under the terms of the GNU General Public License as published by
|
cannam@85
|
6 ** the Free Software Foundation ; either version 2 of the License, or
|
cannam@85
|
7 ** (at your option) any later version.
|
cannam@85
|
8 **
|
cannam@85
|
9 ** This program is distributed in the hope that it will be useful,
|
cannam@85
|
10 ** but WITHOUT ANY WARRANTY ; without even the implied warranty of
|
cannam@85
|
11 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
cannam@85
|
12 ** GNU General Public License for more details.
|
cannam@85
|
13 **
|
cannam@85
|
14 ** You should have received a copy of the GNU General Public License
|
cannam@85
|
15 ** along with this program ; if not, write to the Free Software
|
cannam@85
|
16 ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
cannam@85
|
17 */
|
cannam@85
|
18
|
cannam@85
|
19 #include "sfconfig.h"
|
cannam@85
|
20
|
cannam@85
|
21 #include <stdio.h>
|
cannam@85
|
22 #include <stdlib.h>
|
cannam@85
|
23 #include <string.h>
|
cannam@85
|
24
|
cannam@85
|
25 #include <sys/stat.h>
|
cannam@85
|
26 #include <math.h>
|
cannam@85
|
27
|
cannam@85
|
28 #if HAVE_UNISTD_H
|
cannam@85
|
29 #include <unistd.h>
|
cannam@85
|
30 #endif
|
cannam@85
|
31
|
cannam@85
|
32 #if (HAVE_DECL_S_IRGRP == 0)
|
cannam@85
|
33 #include <sf_unistd.h>
|
cannam@85
|
34 #endif
|
cannam@85
|
35
|
cannam@85
|
36 #if (defined (WIN32) || defined (_WIN32))
|
cannam@85
|
37 #include <io.h>
|
cannam@85
|
38 #include <direct.h>
|
cannam@85
|
39 #endif
|
cannam@85
|
40
|
cannam@85
|
41 #include <sndfile.h>
|
cannam@85
|
42
|
cannam@85
|
43 #include "utils.h"
|
cannam@85
|
44
|
cannam@85
|
45 static void rdwr_short_test (const char *filename) ;
|
cannam@85
|
46 static void rdwr_int_test (const char *filename) ;
|
cannam@85
|
47 static void rdwr_float_test (const char *filename) ;
|
cannam@85
|
48 static void rdwr_double_test (const char *filename) ;
|
cannam@85
|
49 static void rdwr_raw_test (const char *filename) ;
|
cannam@85
|
50
|
cannam@85
|
51
|
cannam@85
|
52 int
|
cannam@85
|
53 main (void)
|
cannam@85
|
54 {
|
cannam@85
|
55 rdwr_short_test ("rdwr_short.wav") ;
|
cannam@85
|
56 rdwr_int_test ("rdwr_int.wav") ;
|
cannam@85
|
57 rdwr_float_test ("rdwr_float.wav") ;
|
cannam@85
|
58 rdwr_double_test ("rdwr_double.wav") ;
|
cannam@85
|
59 rdwr_raw_test ("rdwr_raw.wav") ;
|
cannam@85
|
60
|
cannam@85
|
61 return 0 ;
|
cannam@85
|
62 } /* main */
|
cannam@85
|
63
|
cannam@85
|
64
|
cannam@85
|
65 /*============================================================================================
|
cannam@85
|
66 ** Here are the test functions.
|
cannam@85
|
67 */
|
cannam@85
|
68
|
cannam@85
|
69 static void
|
cannam@85
|
70 rdwr_short_test (const char *filename)
|
cannam@85
|
71 { SNDFILE *file ;
|
cannam@85
|
72 SF_INFO sfinfo ;
|
cannam@85
|
73 sf_count_t frames ;
|
cannam@85
|
74 short buffer [160] ;
|
cannam@85
|
75
|
cannam@85
|
76 print_test_name ("rdwr_short_test", filename) ;
|
cannam@85
|
77
|
cannam@85
|
78 memset (buffer, 0, sizeof (buffer)) ;
|
cannam@85
|
79
|
cannam@85
|
80 /* Create sound file with no data. */
|
cannam@85
|
81 sfinfo.format = SF_FORMAT_WAV | SF_FORMAT_PCM_16 ;
|
cannam@85
|
82 sfinfo.samplerate = 16000 ;
|
cannam@85
|
83 sfinfo.channels = 1 ;
|
cannam@85
|
84
|
cannam@85
|
85 unlink (filename) ;
|
cannam@85
|
86
|
cannam@85
|
87 frames = ARRAY_LEN (buffer) ;
|
cannam@85
|
88
|
cannam@85
|
89 /* Open again for read/write. */
|
cannam@85
|
90 file = test_open_file_or_die (filename, SFM_RDWR, &sfinfo, SF_TRUE, __LINE__) ;
|
cannam@85
|
91
|
cannam@85
|
92 test_write_short_or_die (file, 0, buffer, frames, __LINE__) ;
|
cannam@85
|
93
|
cannam@85
|
94 test_read_short_or_die (file, 0, buffer, frames, __LINE__) ;
|
cannam@85
|
95
|
cannam@85
|
96 sf_close (file) ;
|
cannam@85
|
97 unlink (filename) ;
|
cannam@85
|
98
|
cannam@85
|
99 puts ("ok") ;
|
cannam@85
|
100 return ;
|
cannam@85
|
101 } /* rdwr_short_test */
|
cannam@85
|
102
|
cannam@85
|
103 static void
|
cannam@85
|
104 rdwr_int_test (const char *filename)
|
cannam@85
|
105 { SNDFILE *file ;
|
cannam@85
|
106 SF_INFO sfinfo ;
|
cannam@85
|
107 sf_count_t frames ;
|
cannam@85
|
108 int buffer [160] ;
|
cannam@85
|
109
|
cannam@85
|
110 print_test_name ("rdwr_int_test", filename) ;
|
cannam@85
|
111
|
cannam@85
|
112 memset (buffer, 0, sizeof (buffer)) ;
|
cannam@85
|
113
|
cannam@85
|
114 /* Create sound file with no data. */
|
cannam@85
|
115 sfinfo.format = SF_FORMAT_WAV | SF_FORMAT_PCM_32 ;
|
cannam@85
|
116 sfinfo.samplerate = 16000 ;
|
cannam@85
|
117 sfinfo.channels = 1 ;
|
cannam@85
|
118
|
cannam@85
|
119 unlink (filename) ;
|
cannam@85
|
120
|
cannam@85
|
121 frames = ARRAY_LEN (buffer) ;
|
cannam@85
|
122
|
cannam@85
|
123 /* Open again for read/write. */
|
cannam@85
|
124 file = test_open_file_or_die (filename, SFM_RDWR, &sfinfo, SF_TRUE, __LINE__) ;
|
cannam@85
|
125
|
cannam@85
|
126 test_write_int_or_die (file, 0, buffer, frames, __LINE__) ;
|
cannam@85
|
127
|
cannam@85
|
128 test_read_int_or_die (file, 0, buffer, frames, __LINE__) ;
|
cannam@85
|
129
|
cannam@85
|
130 sf_close (file) ;
|
cannam@85
|
131 unlink (filename) ;
|
cannam@85
|
132
|
cannam@85
|
133 puts ("ok") ;
|
cannam@85
|
134 return ;
|
cannam@85
|
135 } /* rdwr_int_test */
|
cannam@85
|
136
|
cannam@85
|
137 static void
|
cannam@85
|
138 rdwr_float_test (const char *filename)
|
cannam@85
|
139 { SNDFILE *file ;
|
cannam@85
|
140 SF_INFO sfinfo ;
|
cannam@85
|
141 sf_count_t frames ;
|
cannam@85
|
142 float buffer [160] ;
|
cannam@85
|
143
|
cannam@85
|
144 print_test_name ("rdwr_float_test", filename) ;
|
cannam@85
|
145
|
cannam@85
|
146 memset (buffer, 0, sizeof (buffer)) ;
|
cannam@85
|
147
|
cannam@85
|
148 /* Create sound file with no data. */
|
cannam@85
|
149 sfinfo.format = SF_FORMAT_WAV | SF_FORMAT_FLOAT ;
|
cannam@85
|
150 sfinfo.samplerate = 16000 ;
|
cannam@85
|
151 sfinfo.channels = 1 ;
|
cannam@85
|
152
|
cannam@85
|
153 unlink (filename) ;
|
cannam@85
|
154
|
cannam@85
|
155 frames = ARRAY_LEN (buffer) ;
|
cannam@85
|
156
|
cannam@85
|
157 /* Open again for read/write. */
|
cannam@85
|
158 file = test_open_file_or_die (filename, SFM_RDWR, &sfinfo, SF_TRUE, __LINE__) ;
|
cannam@85
|
159
|
cannam@85
|
160 test_write_float_or_die (file, 0, buffer, frames, __LINE__) ;
|
cannam@85
|
161
|
cannam@85
|
162 test_read_float_or_die (file, 0, buffer, frames, __LINE__) ;
|
cannam@85
|
163
|
cannam@85
|
164 sf_close (file) ;
|
cannam@85
|
165 unlink (filename) ;
|
cannam@85
|
166
|
cannam@85
|
167 puts ("ok") ;
|
cannam@85
|
168 return ;
|
cannam@85
|
169 } /* rdwr_float_test */
|
cannam@85
|
170
|
cannam@85
|
171 static void
|
cannam@85
|
172 rdwr_double_test (const char *filename)
|
cannam@85
|
173 { SNDFILE *file ;
|
cannam@85
|
174 SF_INFO sfinfo ;
|
cannam@85
|
175 sf_count_t frames ;
|
cannam@85
|
176 double buffer [160] ;
|
cannam@85
|
177
|
cannam@85
|
178 print_test_name ("rdwr_double_test", filename) ;
|
cannam@85
|
179
|
cannam@85
|
180 memset (buffer, 0, sizeof (buffer)) ;
|
cannam@85
|
181
|
cannam@85
|
182 /* Create sound file with no data. */
|
cannam@85
|
183 sfinfo.format = SF_FORMAT_WAV | SF_FORMAT_DOUBLE ;
|
cannam@85
|
184 sfinfo.samplerate = 16000 ;
|
cannam@85
|
185 sfinfo.channels = 1 ;
|
cannam@85
|
186
|
cannam@85
|
187 unlink (filename) ;
|
cannam@85
|
188
|
cannam@85
|
189 frames = ARRAY_LEN (buffer) ;
|
cannam@85
|
190
|
cannam@85
|
191 /* Open again for read/write. */
|
cannam@85
|
192 file = test_open_file_or_die (filename, SFM_RDWR, &sfinfo, SF_TRUE, __LINE__) ;
|
cannam@85
|
193
|
cannam@85
|
194 test_write_double_or_die (file, 0, buffer, frames, __LINE__) ;
|
cannam@85
|
195
|
cannam@85
|
196 test_read_double_or_die (file, 0, buffer, frames, __LINE__) ;
|
cannam@85
|
197
|
cannam@85
|
198 sf_close (file) ;
|
cannam@85
|
199 unlink (filename) ;
|
cannam@85
|
200
|
cannam@85
|
201 puts ("ok") ;
|
cannam@85
|
202 return ;
|
cannam@85
|
203 } /* rdwr_double_test */
|
cannam@85
|
204
|
cannam@85
|
205 static void
|
cannam@85
|
206 rdwr_raw_test (const char *filename)
|
cannam@85
|
207 { SNDFILE *file ;
|
cannam@85
|
208 SF_INFO sfinfo ;
|
cannam@85
|
209 sf_count_t frames ;
|
cannam@85
|
210 unsigned char buffer [160] ;
|
cannam@85
|
211
|
cannam@85
|
212 print_test_name ("rdwr_raw_test", filename) ;
|
cannam@85
|
213
|
cannam@85
|
214 memset (buffer, 0, sizeof (buffer)) ;
|
cannam@85
|
215
|
cannam@85
|
216 /* Create sound file with no data. */
|
cannam@85
|
217 sfinfo.format = SF_FORMAT_WAV | SF_FORMAT_PCM_U8 ;
|
cannam@85
|
218 sfinfo.samplerate = 16000 ;
|
cannam@85
|
219 sfinfo.channels = 1 ;
|
cannam@85
|
220
|
cannam@85
|
221 unlink (filename) ;
|
cannam@85
|
222
|
cannam@85
|
223 frames = ARRAY_LEN (buffer) ;
|
cannam@85
|
224
|
cannam@85
|
225 /* Open again for read/write. */
|
cannam@85
|
226 file = test_open_file_or_die (filename, SFM_RDWR, &sfinfo, SF_TRUE, __LINE__) ;
|
cannam@85
|
227
|
cannam@85
|
228 test_write_raw_or_die (file, 0, buffer, frames, __LINE__) ;
|
cannam@85
|
229
|
cannam@85
|
230 test_read_raw_or_die (file, 0, buffer, frames, __LINE__) ;
|
cannam@85
|
231
|
cannam@85
|
232 sf_close (file) ;
|
cannam@85
|
233 unlink (filename) ;
|
cannam@85
|
234
|
cannam@85
|
235 puts ("ok") ;
|
cannam@85
|
236 return ;
|
cannam@85
|
237 } /* rdwr_raw_test */
|
cannam@85
|
238
|
cannam@85
|
239
|
cannam@85
|
240
|