3 # FLAC - Free Lossless Audio Codec
4 # Copyright (C) 2001,2002,2003,2004 Josh Coalson
6 # This file is part the FLAC project. FLAC is comprised of several
7 # components distributed under difference licenses. The codec libraries
8 # are distributed under Xiph.Org's BSD-like license (see the file
9 # COPYING.Xiph in this distribution). All other programs, libraries, and
10 # plugins are distributed under the GPL (see COPYING.GPL). The documentation
11 # is distributed under the Gnu FDL (see COPYING.FDL). Each file in the
12 # FLAC distribution contains at the top the terms under which it may be
15 # Since this particular file is relevant to all components of FLAC,
16 # it may be distributed under the Xiph.Org license, which is the least
17 # restrictive of those mentioned above. See the file COPYING.Xiph in this
26 LD_LIBRARY_PATH=../src/libFLAC/.libs:../obj/release/lib:../obj/debug/lib:$LD_LIBRARY_PATH
27 export LD_LIBRARY_PATH
28 PATH=../src/flac:../src/test_streams:../obj/release/bin:../obj/debug/bin:$PATH
30 flac --help 1>/dev/null 2>/dev/null || die "ERROR can't find flac executable"
34 if [ x"$FLAC__VALGRIND" = xyes ] ; then
35 valgrind --leak-check=yes --show-reachable=yes --num-callers=100 --logfile-fd=4 flac $* 4>>test_flac.valgrind.log
41 echo "Checking for --ogg support in flac..."
42 if flac --ogg --silent --force-raw-format --endian=little --sign=signed --channels=1 --bps=8 --sample-rate=44100 -c $0 1>/dev/null 2>&1 ; then
44 echo "flac --ogg works"
47 echo "flac --ogg doesn't work"
51 echo "Generating streams..."
52 if [ ! -f wacky1.wav ] ; then
53 test_streams || die "ERROR during test_streams"
56 ############################################################################
57 # basic 'round-trip' tests of various kinds of streams
58 ############################################################################
63 channels=`echo $f | awk -F- '{print $2}'`
64 bytes_per_sample=`echo $f | awk -F- '{print $3}'`
65 bps=`expr $bytes_per_sample '*' 8`
66 echo -n "round-trip test ($f) encode... "
67 run_flac --silent --verify --force-raw-format --endian=little --sign=signed --sample-rate=44100 --bps=$bps --channels=$channels $f -o rt.flac || die "ERROR"
69 run_flac --silent --decode --force-raw-format --endian=little --sign=signed -o rt.raw rt.flac || die "ERROR"
71 cmp $f rt.raw || die "ERROR: file mismatch"
79 echo -n "round-trip test ($f) encode... "
80 run_flac --silent --verify $f -o rt.flac || die "ERROR"
82 run_flac --silent --decode -o rt.wav rt.flac || die "ERROR"
84 cmp $f rt.wav || die "ERROR: file mismatch"
92 echo -n "round-trip test ($f) encode... "
93 run_flac --silent --verify $f -o rt.flac || die "ERROR"
95 run_flac --silent --decode -o rt.aiff rt.flac || die "ERROR"
97 cmp $f rt.aiff || die "ERROR: file mismatch"
102 for f in rt-*.raw ; do
105 for f in rt-*.wav ; do
108 for f in rt-*.aiff ; do
112 ############################################################################
113 # test --skip and --until
114 ############################################################################
117 # first make some chopped-up raw files
119 echo "abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMN" > master.raw
120 dddie="die ERROR: creating files for --skip/--until tests"
121 dd if=master.raw ibs=1 count=50 of=50c.raw 2>/dev/null || $dddie
122 dd if=master.raw ibs=1 skip=10 count=40 of=50c.skip10.raw 2>/dev/null || $dddie
123 dd if=master.raw ibs=1 skip=11 count=39 of=50c.skip11.raw 2>/dev/null || $dddie
124 dd if=master.raw ibs=1 count=40 of=50c.until40.raw 2>/dev/null || $dddie
125 dd if=master.raw ibs=1 count=39 of=50c.until39.raw 2>/dev/null || $dddie
126 dd if=master.raw ibs=1 skip=10 count=30 of=50c.skip10.until40.raw 2>/dev/null || $dddie
127 dd if=master.raw ibs=1 skip=10 count=29 of=50c.skip10.until39.raw 2>/dev/null || $dddie
129 wav_eopt="--silent --verify --lax"
130 wav_dopt="--silent --decode"
132 raw_eopt="$wav_eopt --force-raw-format --endian=big --sign=signed --sample-rate=10 --bps=8 --channels=1"
133 raw_dopt="$wav_dopt --force-raw-format --endian=big --sign=signed"
136 # convert them to WAVE and AIFF files
140 run_flac $raw_eopt $1.raw || die "ERROR converting $1.raw to WAVE"
141 run_flac $wav_dopt $1.flac || die "ERROR converting $1.raw to WAVE"
144 convert_to_wav 50c.skip10
145 convert_to_wav 50c.skip11
146 convert_to_wav 50c.until40
147 convert_to_wav 50c.until39
148 convert_to_wav 50c.skip10.until40
149 convert_to_wav 50c.skip10.until39
153 run_flac $raw_eopt $1.raw || die "ERROR converting $1.raw to AIFF"
154 run_flac $wav_dopt $1.flac -o $1.aiff || die "ERROR converting $1.raw to AIFF"
157 convert_to_aiff 50c.skip10
158 convert_to_aiff 50c.skip11
159 convert_to_aiff 50c.until40
160 convert_to_aiff 50c.until39
161 convert_to_aiff 50c.skip10.until40
162 convert_to_aiff 50c.skip10.until39
169 [ "$in_fmt" = wav ] || [ "$in_fmt" = aiff ] || [ "$in_fmt" = raw ] || die "ERROR: internal error, bad 'in' format '$in_fmt'"
171 [ "$out_fmt" = flac ] || [ "$out_fmt" = ogg ] || die "ERROR: internal error, bad 'out' format '$out_fmt'"
173 if [ $in_fmt = raw ] ; then
181 if [ $out_fmt = ogg ] ; then
186 # test --skip when encoding
189 desc="($in_fmt<->$out_fmt)"
191 echo -n "testing --skip=# (encode) $desc... "
192 run_flac $eopt --skip=10 -o z50c.skip10.$out_fmt 50c.$in_fmt || die "ERROR generating FLAC file $desc"
193 run_flac $dopt -o z50c.skip10.$in_fmt z50c.skip10.$out_fmt || die "ERROR decoding FLAC file $desc"
194 cmp 50c.skip10.$in_fmt z50c.skip10.$in_fmt || die "ERROR: file mismatch for --skip=10 (encode) $desc"
195 rm -f z50c.skip10.$out_fmt z50c.skip10.$in_fmt
198 echo -n "testing --skip=mm:ss (encode) $desc... "
199 run_flac $eopt --skip=0:01 -o z50c.skip0:01.$out_fmt 50c.$in_fmt || die "ERROR generating FLAC file $desc"
200 run_flac $dopt -o z50c.skip0:01.$in_fmt z50c.skip0:01.$out_fmt || die "ERROR decoding FLAC file $desc"
201 cmp 50c.skip10.$in_fmt z50c.skip0:01.$in_fmt || die "ERROR: file mismatch for --skip=0:01 (encode) $desc"
202 rm -f z50c.skip0:01.$out_fmt z50c.skip0:01.$in_fmt
205 echo -n "testing --skip=mm:ss.sss (encode) $desc... "
206 run_flac $eopt --skip=0:01.1001 -o z50c.skip0:01.1001.$out_fmt 50c.$in_fmt || die "ERROR generating FLAC file $desc"
207 run_flac $dopt -o z50c.skip0:01.1001.$in_fmt z50c.skip0:01.1001.$out_fmt || die "ERROR decoding FLAC file $desc"
208 cmp 50c.skip11.$in_fmt z50c.skip0:01.1001.$in_fmt || die "ERROR: file mismatch for --skip=0:01.1001 (encode) $desc"
209 rm -f z50c.skip0:01.1001.$out_fmt z50c.skip0:01.1001.$in_fmt
213 # test --skip when decoding
216 echo -n "testing --skip=# (decode) $desc... "
217 run_flac $eopt -o z50c.$out_fmt 50c.$in_fmt || die "ERROR generating FLAC file $desc"
218 run_flac $dopt --skip=10 -o z50c.skip10.$in_fmt z50c.$out_fmt || die "ERROR decoding FLAC file $desc"
219 cmp 50c.skip10.$in_fmt z50c.skip10.$in_fmt || die "ERROR: file mismatch for --skip=10 (decode) $desc"
220 rm -f z50c.skip10.$in_fmt
223 echo -n "testing --skip=mm:ss (decode) $desc... "
224 run_flac $dopt --skip=0:01 -o z50c.skip0:01.$in_fmt z50c.$out_fmt || die "ERROR decoding FLAC file $desc"
225 cmp 50c.skip10.$in_fmt z50c.skip0:01.$in_fmt || die "ERROR: file mismatch for --skip=0:01 (decode) $desc"
226 rm -f z50c.skip0:01.$in_fmt
229 echo -n "testing --skip=mm:ss.sss (decode) $desc... "
230 run_flac $dopt --skip=0:01.1001 -o z50c.skip0:01.1001.$in_fmt z50c.$out_fmt || die "ERROR decoding FLAC file $desc"
231 cmp 50c.skip11.$in_fmt z50c.skip0:01.1001.$in_fmt || die "ERROR: file mismatch for --skip=0:01.1001 (decode) $desc"
232 rm -f z50c.skip0:01.1001.$in_fmt
238 # test --until when encoding
241 echo -n "testing --until=# (encode) $desc... "
242 run_flac $eopt --until=40 -o z50c.until40.$out_fmt 50c.$in_fmt || die "ERROR generating FLAC file $desc"
243 run_flac $dopt -o z50c.until40.$in_fmt z50c.until40.$out_fmt || die "ERROR decoding FLAC file $desc"
244 cmp 50c.until40.$in_fmt z50c.until40.$in_fmt || die "ERROR: file mismatch for --until=40 (encode) $desc"
245 rm -f z50c.until40.$out_fmt z50c.until40.$in_fmt
248 echo -n "testing --until=mm:ss (encode) $desc... "
249 run_flac $eopt --until=0:04 -o z50c.until0:04.$out_fmt 50c.$in_fmt || die "ERROR generating FLAC file $desc"
250 run_flac $dopt -o z50c.until0:04.$in_fmt z50c.until0:04.$out_fmt || die "ERROR decoding FLAC file $desc"
251 cmp 50c.until40.$in_fmt z50c.until0:04.$in_fmt || die "ERROR: file mismatch for --until=0:04 (encode) $desc"
252 rm -f z50c.until0:04.$out_fmt z50c.until0:04.$in_fmt
255 echo -n "testing --until=mm:ss.sss (encode) $desc... "
256 run_flac $eopt --until=0:03.9001 -o z50c.until0:03.9001.$out_fmt 50c.$in_fmt || die "ERROR generating FLAC file $desc"
257 run_flac $dopt -o z50c.until0:03.9001.$in_fmt z50c.until0:03.9001.$out_fmt || die "ERROR decoding FLAC file $desc"
258 cmp 50c.until39.$in_fmt z50c.until0:03.9001.$in_fmt || die "ERROR: file mismatch for --until=0:03.9001 (encode) $desc"
259 rm -f z50c.until0:03.9001.$out_fmt z50c.until0:03.9001.$in_fmt
262 echo -n "testing --until=-# (encode) $desc... "
263 run_flac $eopt --until=-10 -o z50c.until-10.$out_fmt 50c.$in_fmt || die "ERROR generating FLAC file $desc"
264 run_flac $dopt -o z50c.until-10.$in_fmt z50c.until-10.$out_fmt || die "ERROR decoding FLAC file $desc"
265 cmp 50c.until40.$in_fmt z50c.until-10.$in_fmt || die "ERROR: file mismatch for --until=-10 (encode) $desc"
266 rm -f z50c.until-10.$out_fmt z50c.until-10.$in_fmt
269 echo -n "testing --until=-mm:ss (encode) $desc... "
270 run_flac $eopt --until=-0:01 -o z50c.until-0:01.$out_fmt 50c.$in_fmt || die "ERROR generating FLAC file $desc"
271 run_flac $dopt -o z50c.until-0:01.$in_fmt z50c.until-0:01.$out_fmt || die "ERROR decoding FLAC file $desc"
272 cmp 50c.until40.$in_fmt z50c.until-0:01.$in_fmt || die "ERROR: file mismatch for --until=-0:01 (encode) $desc"
273 rm -f z50c.until-0:01.$out_fmt z50c.until-0:01.$in_fmt
276 echo -n "testing --until=-mm:ss.sss (encode) $desc... "
277 run_flac $eopt --until=-0:01.1001 -o z50c.until-0:01.1001.$out_fmt 50c.$in_fmt || die "ERROR generating FLAC file $desc"
278 run_flac $dopt -o z50c.until-0:01.1001.$in_fmt z50c.until-0:01.1001.$out_fmt || die "ERROR decoding FLAC file $desc"
279 cmp 50c.until39.$in_fmt z50c.until-0:01.1001.$in_fmt || die "ERROR: file mismatch for --until=-0:01.1001 (encode) $desc"
280 rm -f z50c.until-0:01.1001.$out_fmt z50c.until-0:01.1001.$in_fmt
284 # test --until when decoding
287 run_flac $eopt -o z50c.$out_fmt 50c.$in_fmt || die "ERROR generating FLAC file $desc"
289 echo -n "testing --until=# (decode) $desc... "
290 run_flac $dopt --until=40 -o z50c.until40.$in_fmt z50c.$out_fmt || die "ERROR decoding FLAC file $desc"
291 cmp 50c.until40.$in_fmt z50c.until40.$in_fmt || die "ERROR: file mismatch for --until=40 (decode) $desc"
292 rm -f z50c.until40.$in_fmt
295 echo -n "testing --until=mm:ss (decode) $desc... "
296 run_flac $dopt --until=0:04 -o z50c.until0:04.$in_fmt z50c.$out_fmt || die "ERROR decoding FLAC file $desc"
297 cmp 50c.until40.$in_fmt z50c.until0:04.$in_fmt || die "ERROR: file mismatch for --until=0:04 (decode) $desc"
298 rm -f z50c.until0:04.$in_fmt
301 echo -n "testing --until=mm:ss.sss (decode) $desc... "
302 run_flac $dopt --until=0:03.9001 -o z50c.until0:03.9001.$in_fmt z50c.$out_fmt || die "ERROR decoding FLAC file $desc"
303 cmp 50c.until39.$in_fmt z50c.until0:03.9001.$in_fmt || die "ERROR: file mismatch for --until=0:03.9001 (decode) $desc"
304 rm -f z50c.until0:03.9001.$in_fmt
307 echo -n "testing --until=-# (decode) $desc... "
308 run_flac $dopt --until=-10 -o z50c.until-10.$in_fmt z50c.$out_fmt || die "ERROR decoding FLAC file $desc"
309 cmp 50c.until40.$in_fmt z50c.until-10.$in_fmt || die "ERROR: file mismatch for --until=-10 (decode) $desc"
310 rm -f z50c.until-10.$in_fmt
313 echo -n "testing --until=-mm:ss (decode) $desc... "
314 run_flac $dopt --until=-0:01 -o z50c.until-0:01.$in_fmt z50c.$out_fmt || die "ERROR decoding FLAC file $desc"
315 cmp 50c.until40.$in_fmt z50c.until-0:01.$in_fmt || die "ERROR: file mismatch for --until=-0:01 (decode) $desc"
316 rm -f z50c.until-0:01.$in_fmt
319 echo -n "testing --until=-mm:ss.sss (decode) $desc... "
320 run_flac $dopt --until=-0:01.1001 -o z50c.until-0:01.1001.$in_fmt z50c.$out_fmt || die "ERROR decoding FLAC file $desc"
321 cmp 50c.until39.$in_fmt z50c.until-0:01.1001.$in_fmt || die "ERROR: file mismatch for --until=-0:01.1001 (decode) $desc"
322 rm -f z50c.until-0:01.1001.$in_fmt
328 # test --skip and --until when encoding
331 echo -n "testing --skip=10 --until=# (encode) $desc... "
332 run_flac $eopt --skip=10 --until=40 -o z50c.skip10.until40.$out_fmt 50c.$in_fmt || die "ERROR generating FLAC file $desc"
333 run_flac $dopt -o z50c.skip10.until40.$in_fmt z50c.skip10.until40.$out_fmt || die "ERROR decoding FLAC file $desc"
334 cmp 50c.skip10.until40.$in_fmt z50c.skip10.until40.$in_fmt || die "ERROR: file mismatch for --skip=10 --until=40 (encode) $desc"
335 rm -f z50c.skip10.until40.$out_fmt z50c.skip10.until40.$in_fmt
338 echo -n "testing --skip=10 --until=mm:ss (encode) $desc... "
339 run_flac $eopt --skip=10 --until=0:04 -o z50c.skip10.until0:04.$out_fmt 50c.$in_fmt || die "ERROR generating FLAC file $desc"
340 run_flac $dopt -o z50c.skip10.until0:04.$in_fmt z50c.skip10.until0:04.$out_fmt || die "ERROR decoding FLAC file $desc"
341 cmp 50c.skip10.until40.$in_fmt z50c.skip10.until0:04.$in_fmt || die "ERROR: file mismatch for --skip=10 --until=0:04 (encode) $desc"
342 rm -f z50c.skip10.until0:04.$out_fmt z50c.skip10.until0:04.$in_fmt
345 echo -n "testing --skip=10 --until=mm:ss.sss (encode) $desc... "
346 run_flac $eopt --skip=10 --until=0:03.9001 -o z50c.skip10.until0:03.9001.$out_fmt 50c.$in_fmt || die "ERROR generating FLAC file $desc"
347 run_flac $dopt -o z50c.skip10.until0:03.9001.$in_fmt z50c.skip10.until0:03.9001.$out_fmt || die "ERROR decoding FLAC file $desc"
348 cmp 50c.skip10.until39.$in_fmt z50c.skip10.until0:03.9001.$in_fmt || die "ERROR: file mismatch for --skip=10 --until=0:03.9001 (encode) $desc"
349 rm -f z50c.skip10.until0:03.9001.$out_fmt z50c.skip10.until0:03.9001.$in_fmt
352 echo -n "testing --skip=10 --until=+# (encode) $desc... "
353 run_flac $eopt --skip=10 --until=+30 -o z50c.skip10.until+30.$out_fmt 50c.$in_fmt || die "ERROR generating FLAC file $desc"
354 run_flac $dopt -o z50c.skip10.until+30.$in_fmt z50c.skip10.until+30.$out_fmt || die "ERROR decoding FLAC file $desc"
355 cmp 50c.skip10.until40.$in_fmt z50c.skip10.until+30.$in_fmt || die "ERROR: file mismatch for --skip=10 --until=+30 (encode) $desc"
356 rm -f z50c.skip10.until+30.$out_fmt z50c.skip10.until+30.$in_fmt
359 echo -n "testing --skip=10 --until=+mm:ss (encode) $desc... "
360 run_flac $eopt --skip=10 --until=+0:03 -o z50c.skip10.until+0:03.$out_fmt 50c.$in_fmt || die "ERROR generating FLAC file $desc"
361 run_flac $dopt -o z50c.skip10.until+0:03.$in_fmt z50c.skip10.until+0:03.$out_fmt || die "ERROR decoding FLAC file $desc"
362 cmp 50c.skip10.until40.$in_fmt z50c.skip10.until+0:03.$in_fmt || die "ERROR: file mismatch for --skip=10 --until=+0:03 (encode) $desc"
363 rm -f z50c.skip10.until+0:03.$out_fmt z50c.skip10.until+0:03.$in_fmt
366 echo -n "testing --skip=10 --until=+mm:ss.sss (encode) $desc... "
367 run_flac $eopt --skip=10 --until=+0:02.9001 -o z50c.skip10.until+0:02.9001.$out_fmt 50c.$in_fmt || die "ERROR generating FLAC file $desc"
368 run_flac $dopt -o z50c.skip10.until+0:02.9001.$in_fmt z50c.skip10.until+0:02.9001.$out_fmt || die "ERROR decoding FLAC file $desc"
369 cmp 50c.skip10.until39.$in_fmt z50c.skip10.until+0:02.9001.$in_fmt || die "ERROR: file mismatch for --skip=10 --until=+0:02.9001 (encode) $desc"
370 rm -f z50c.skip10.until+0:02.9001.$out_fmt z50c.skip10.until+0:02.9001.$in_fmt
373 echo -n "testing --skip=10 --until=-# (encode) $desc... "
374 run_flac $eopt --skip=10 --until=-10 -o z50c.skip10.until-10.$out_fmt 50c.$in_fmt || die "ERROR generating FLAC file $desc"
375 run_flac $dopt -o z50c.skip10.until-10.$in_fmt z50c.skip10.until-10.$out_fmt || die "ERROR decoding FLAC file $desc"
376 cmp 50c.skip10.until40.$in_fmt z50c.skip10.until-10.$in_fmt || die "ERROR: file mismatch for --skip=10 --until=-10 (encode) $desc"
377 rm -f z50c.skip10.until-10.$out_fmt z50c.skip10.until-10.$in_fmt
380 echo -n "testing --skip=10 --until=-mm:ss (encode) $desc... "
381 run_flac $eopt --skip=10 --until=-0:01 -o z50c.skip10.until-0:01.$out_fmt 50c.$in_fmt || die "ERROR generating FLAC file $desc"
382 run_flac $dopt -o z50c.skip10.until-0:01.$in_fmt z50c.skip10.until-0:01.$out_fmt || die "ERROR decoding FLAC file $desc"
383 cmp 50c.skip10.until40.$in_fmt z50c.skip10.until-0:01.$in_fmt || die "ERROR: file mismatch for --skip=10 --until=-0:01 (encode) $desc"
384 rm -f z50c.skip10.until-0:01.$out_fmt z50c.skip10.until-0:01.$in_fmt
387 echo -n "testing --skip=10 --until=-mm:ss.sss (encode) $desc... "
388 run_flac $eopt --skip=10 --until=-0:01.1001 -o z50c.skip10.until-0:01.1001.$out_fmt 50c.$in_fmt || die "ERROR generating FLAC file $desc"
389 run_flac $dopt -o z50c.skip10.until-0:01.1001.$in_fmt z50c.skip10.until-0:01.1001.$out_fmt || die "ERROR decoding FLAC file $desc"
390 cmp 50c.skip10.until39.$in_fmt z50c.skip10.until-0:01.1001.$in_fmt || die "ERROR: file mismatch for --skip=10 --until=-0:01.1001 (encode) $desc"
391 rm -f z50c.skip10.until-0:01.1001.$out_fmt z50c.skip10.until-0:01.1001.$in_fmt
395 # test --skip and --until when decoding
398 run_flac $eopt -o z50c.$out_fmt 50c.$in_fmt || die "ERROR generating FLAC file $desc"
400 echo -n "testing --skip=10 --until=# (decode) $desc... "
401 run_flac $dopt --skip=10 --until=40 -o z50c.skip10.until40.$in_fmt z50c.$out_fmt || die "ERROR decoding FLAC file $desc"
402 cmp 50c.skip10.until40.$in_fmt z50c.skip10.until40.$in_fmt || die "ERROR: file mismatch for --skip=10 --until=40 (decode) $desc"
403 rm -f z50c.skip10.until40.$in_fmt
406 echo -n "testing --skip=10 --until=mm:ss (decode) $desc... "
407 run_flac $dopt --skip=10 --until=0:04 -o z50c.skip10.until0:04.$in_fmt z50c.$out_fmt || die "ERROR decoding FLAC file $desc"
408 cmp 50c.skip10.until40.$in_fmt z50c.skip10.until0:04.$in_fmt || die "ERROR: file mismatch for --skip=10 --until=0:04 (decode) $desc"
409 rm -f z50c.skip10.until0:04.$in_fmt
412 echo -n "testing --skip=10 --until=mm:ss.sss (decode) $desc... "
413 run_flac $dopt --skip=10 --until=0:03.9001 -o z50c.skip10.until0:03.9001.$in_fmt z50c.$out_fmt || die "ERROR decoding FLAC file $desc"
414 cmp 50c.skip10.until39.$in_fmt z50c.skip10.until0:03.9001.$in_fmt || die "ERROR: file mismatch for --skip=10 --until=0:03.9001 (decode) $desc"
415 rm -f z50c.skip10.until0:03.9001.$in_fmt
418 echo -n "testing --skip=10 --until=-# (decode) $desc... "
419 run_flac $dopt --skip=10 --until=-10 -o z50c.skip10.until-10.$in_fmt z50c.$out_fmt || die "ERROR decoding FLAC file $desc"
420 cmp 50c.skip10.until40.$in_fmt z50c.skip10.until-10.$in_fmt || die "ERROR: file mismatch for --skip=10 --until=-10 (decode) $desc"
421 rm -f z50c.skip10.until-10.$in_fmt
424 echo -n "testing --skip=10 --until=-mm:ss (decode) $desc... "
425 run_flac $dopt --skip=10 --until=-0:01 -o z50c.skip10.until-0:01.$in_fmt z50c.$out_fmt || die "ERROR decoding FLAC file $desc"
426 cmp 50c.skip10.until40.$in_fmt z50c.skip10.until-0:01.$in_fmt || die "ERROR: file mismatch for --skip=10 --until=-0:01 (decode) $desc"
427 rm -f z50c.skip10.until-0:01.$in_fmt
430 echo -n "testing --skip=10 --until=-mm:ss.sss (decode) $desc... "
431 run_flac $dopt --skip=10 --until=-0:01.1001 -o z50c.skip10.until-0:01.1001.$in_fmt z50c.$out_fmt || die "ERROR decoding FLAC file $desc"
432 cmp 50c.skip10.until39.$in_fmt z50c.skip10.until-0:01.1001.$in_fmt || die "ERROR: file mismatch for --skip=10 --until=-0:01.1001 (decode) $desc"
433 rm -f z50c.skip10.until-0:01.1001.$in_fmt
439 test_skip_until raw flac
440 test_skip_until wav flac
441 test_skip_until aiff flac
443 if [ $has_ogg = "yes" ] ; then
444 test_skip_until raw ogg
445 test_skip_until wav ogg
446 test_skip_until aiff ogg
449 ############################################################################
450 # test 'fixup' code that happens when a FLAC file with total_samples == 0
451 # in the STREAMINFO block is converted to WAVE or AIFF, requiring the
452 # decoder go back and fix up the chunk headers
453 ############################################################################
455 echo -n "WAVE fixup test... "
456 echo -n "prepare... "
457 convert_to_wav noise || die "ERROR creating reference WAVE"
459 cat noise.raw | run_flac $raw_eopt - -c > fixup.flac || die "ERROR generating FLAC file"
461 run_flac $wav_dopt fixup.flac -o fixup.wav || die "ERROR decoding FLAC file"
462 echo -n "compare... "
463 cmp noise.wav fixup.wav || die "ERROR: file mismatch"
465 rm -f noise.wav fixup.wav fixup.flac
467 echo -n "AIFF fixup test... "
468 echo -n "prepare... "
469 convert_to_aiff noise || die "ERROR creating reference AIFF"
471 cat noise.raw | run_flac $raw_eopt - -c > fixup.flac || die "ERROR generating FLAC file"
473 run_flac $wav_dopt fixup.flac -o fixup.aiff || die "ERROR decoding FLAC file"
474 echo -n "compare... "
475 cmp noise.aiff fixup.aiff || die "ERROR: file mismatch"
477 rm -f noise.aiff fixup.aiff fixup.flac
480 ############################################################################
482 ############################################################################
484 echo "Generating multiple input files from noise..."
485 run_flac --verify --silent --force-raw-format --endian=big --sign=signed --sample-rate=44100 --bps=16 --channels=2 noise.raw || die "ERROR generating FLAC file"
486 run_flac --decode --silent noise.flac || die "ERROR generating WAVE file"
488 mv noise.wav file0.wav
489 cp file0.wav file1.wav
490 cp file1.wav file2.wav
498 if [ $streamtype = ogg ] ; then
500 encode_options="$encode_options --ogg"
505 if [ $sector_align = sector_align ] ; then
506 encode_options="$encode_options --sector-align"
509 run_flac $encode_options file0.wav file1.wav file2.wav || die "ERROR"
511 mv file$n.$suffix file${n}x.$suffix
513 run_flac --decode file0x.$suffix file1x.$suffix file2x.$suffix || die "ERROR"
514 if [ $sector_align != sector_align ] ; then
516 cmp file$n.wav file${n}x.wav || die "ERROR: file mismatch on file #$n"
520 rm -f file${n}x.$suffix file${n}x.wav
524 echo "Testing multiple files without verify..."
525 test_multifile flac no_sector_align ""
527 echo "Testing multiple files with verify..."
528 test_multifile flac no_sector_align "--verify"
530 echo "Testing multiple files with --sector-align, without verify..."
531 test_multifile flac sector_align ""
533 echo "Testing multiple files with --sector-align, with verify..."
534 test_multifile flac sector_align "--verify"
536 if [ $has_ogg = "yes" ] ; then
537 echo "Testing multiple files with --ogg, without verify..."
538 test_multifile ogg no_sector_align ""
540 echo "Testing multiple files with --ogg, with verify..."
541 test_multifile ogg no_sector_align "--verify"
543 echo "Testing multiple files with --ogg and --sector-align, without verify..."
544 test_multifile ogg sector_align ""
546 echo "Testing multiple files with --ogg and --sector-align, with verify..."
547 test_multifile sector_align ogg "--verify"
549 echo "Testing multiple files with --ogg and --serial-number, with verify..."
550 test_multifile ogg no_sector_align "--serial-number=321 --verify"