Josh Coalson | b42b0ee | 2004-11-09 01:27:12 +0000 | [diff] [blame] | 1 | #!/bin/sh |
| 2 | |
| 3 | # FLAC - Free Lossless Audio Codec |
Josh Coalson | e74bd95 | 2007-02-02 06:58:19 +0000 | [diff] [blame] | 4 | # Copyright (C) 2004,2005,2006,2007 Josh Coalson |
Josh Coalson | b42b0ee | 2004-11-09 01:27:12 +0000 | [diff] [blame] | 5 | # |
| 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 |
| 13 | # distributed. |
| 14 | # |
| 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 |
| 18 | # distribution. |
| 19 | |
| 20 | die () |
| 21 | { |
| 22 | echo $* 1>&2 |
| 23 | exit 1 |
| 24 | } |
| 25 | |
| 26 | if [ x = x"$1" ] ; then |
| 27 | BUILD=debug |
| 28 | else |
| 29 | BUILD="$1" |
| 30 | fi |
| 31 | |
| 32 | LD_LIBRARY_PATH=../src/libFLAC/.libs:$LD_LIBRARY_PATH |
Josh Coalson | b42b0ee | 2004-11-09 01:27:12 +0000 | [diff] [blame] | 33 | LD_LIBRARY_PATH=../obj/$BUILD/lib:$LD_LIBRARY_PATH |
| 34 | export LD_LIBRARY_PATH |
| 35 | PATH=../src/flac:$PATH |
Josh Coalson | 450572f | 2005-01-26 03:48:06 +0000 | [diff] [blame] | 36 | PATH=../src/metaflac:$PATH |
Josh Coalson | b42b0ee | 2004-11-09 01:27:12 +0000 | [diff] [blame] | 37 | PATH=../src/test_seeking:$PATH |
| 38 | PATH=../src/test_streams:$PATH |
| 39 | PATH=../obj/$BUILD/bin:$PATH |
| 40 | |
| 41 | flac --help 1>/dev/null 2>/dev/null || die "ERROR can't find flac executable" |
Josh Coalson | 450572f | 2005-01-26 03:48:06 +0000 | [diff] [blame] | 42 | metaflac --help 1>/dev/null 2>/dev/null || die "ERROR can't find metaflac executable" |
Josh Coalson | b42b0ee | 2004-11-09 01:27:12 +0000 | [diff] [blame] | 43 | |
| 44 | run_flac () |
| 45 | { |
Josh Coalson | de9091e | 2006-05-25 02:48:22 +0000 | [diff] [blame] | 46 | if [ x"$FLAC__TEST_WITH_VALGRIND" = xyes ] ; then |
Josh Coalson | 338a0b1 | 2006-11-20 05:39:34 +0000 | [diff] [blame] | 47 | echo "valgrind --leak-check=yes --show-reachable=yes --num-callers=100 flac $*" >>test_seeking.valgrind.log |
Josh Coalson | b42b0ee | 2004-11-09 01:27:12 +0000 | [diff] [blame] | 48 | valgrind --leak-check=yes --show-reachable=yes --num-callers=100 --logfile-fd=4 flac $* 4>>test_seeking.valgrind.log |
| 49 | else |
| 50 | flac $* |
| 51 | fi |
| 52 | } |
| 53 | |
Josh Coalson | 450572f | 2005-01-26 03:48:06 +0000 | [diff] [blame] | 54 | run_metaflac () |
| 55 | { |
Josh Coalson | de9091e | 2006-05-25 02:48:22 +0000 | [diff] [blame] | 56 | if [ x"$FLAC__TEST_WITH_VALGRIND" = xyes ] ; then |
Josh Coalson | 338a0b1 | 2006-11-20 05:39:34 +0000 | [diff] [blame] | 57 | echo "valgrind --leak-check=yes --show-reachable=yes --num-callers=100 metaflac $*" >>test_seeking.valgrind.log |
Josh Coalson | 450572f | 2005-01-26 03:48:06 +0000 | [diff] [blame] | 58 | valgrind --leak-check=yes --show-reachable=yes --num-callers=100 --logfile-fd=4 metaflac $* 4>>test_seeking.valgrind.log |
| 59 | else |
| 60 | metaflac $* |
| 61 | fi |
| 62 | } |
| 63 | |
Josh Coalson | b42b0ee | 2004-11-09 01:27:12 +0000 | [diff] [blame] | 64 | run_test_seeking () |
| 65 | { |
Josh Coalson | de9091e | 2006-05-25 02:48:22 +0000 | [diff] [blame] | 66 | if [ x"$FLAC__TEST_WITH_VALGRIND" = xyes ] ; then |
Josh Coalson | 338a0b1 | 2006-11-20 05:39:34 +0000 | [diff] [blame] | 67 | echo "valgrind --leak-check=yes --show-reachable=yes --num-callers=100 test_seeking $*" >>test_seeking.valgrind.log |
Josh Coalson | b42b0ee | 2004-11-09 01:27:12 +0000 | [diff] [blame] | 68 | valgrind --leak-check=yes --show-reachable=yes --num-callers=100 --logfile-fd=4 test_seeking $* 4>>test_seeking.valgrind.log |
| 69 | else |
| 70 | test_seeking $* |
| 71 | fi |
| 72 | } |
| 73 | |
Josh Coalson | 7ffd7e4 | 2005-02-01 01:49:11 +0000 | [diff] [blame] | 74 | echo "Checking for --ogg support in flac..." |
| 75 | 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 |
| 76 | has_ogg=yes; |
| 77 | echo "flac --ogg works" |
| 78 | else |
| 79 | has_ogg=no; |
| 80 | echo "flac --ogg doesn't work" |
| 81 | fi |
| 82 | |
Josh Coalson | b42b0ee | 2004-11-09 01:27:12 +0000 | [diff] [blame] | 83 | |
| 84 | echo "Generating streams..." |
| 85 | if [ ! -f noise.raw ] ; then |
| 86 | test_streams || die "ERROR during test_streams" |
| 87 | fi |
| 88 | |
| 89 | echo "generating FLAC files for seeking:" |
Josh Coalson | 6b21f66 | 2006-09-13 01:42:27 +0000 | [diff] [blame] | 90 | run_flac --verify --force --silent --force-raw-format --endian=big --sign=signed --sample-rate=44100 --bps=8 --channels=1 --blocksize=576 -S- --output-name=tiny.flac noise8m32.raw || die "ERROR generating FLAC file" |
| 91 | run_flac --verify --force --silent --force-raw-format --endian=big --sign=signed --sample-rate=44100 --bps=16 --channels=2 --blocksize=576 -S- --output-name=small.flac noise.raw || die "ERROR generating FLAC file" |
| 92 | run_flac --verify --force --silent --force-raw-format --endian=big --sign=signed --sample-rate=44100 --bps=8 --channels=1 --blocksize=576 -S10x --output-name=tiny-s.flac noise8m32.raw || die "ERROR generating FLAC file" |
| 93 | run_flac --verify --force --silent --force-raw-format --endian=big --sign=signed --sample-rate=44100 --bps=16 --channels=2 --blocksize=576 -S10x --output-name=small-s.flac noise.raw || die "ERROR generating FLAC file" |
Josh Coalson | b42b0ee | 2004-11-09 01:27:12 +0000 | [diff] [blame] | 94 | |
Josh Coalson | f8d544f | 2006-11-16 01:22:33 +0000 | [diff] [blame] | 95 | tiny_samples=`metaflac --show-total-samples tiny.flac` |
| 96 | small_samples=`metaflac --show-total-samples small.flac` |
| 97 | |
Josh Coalson | 6b21f66 | 2006-09-13 01:42:27 +0000 | [diff] [blame] | 98 | for suffix in '' '-s' ; do |
| 99 | echo "testing tiny$suffix.flac:" |
Josh Coalson | f8d544f | 2006-11-16 01:22:33 +0000 | [diff] [blame] | 100 | if run_test_seeking tiny$suffix.flac 100 $tiny_samples ; then : ; else |
Josh Coalson | 6b21f66 | 2006-09-13 01:42:27 +0000 | [diff] [blame] | 101 | die "ERROR: during test_seeking" |
| 102 | fi |
Josh Coalson | b42b0ee | 2004-11-09 01:27:12 +0000 | [diff] [blame] | 103 | |
Josh Coalson | 6b21f66 | 2006-09-13 01:42:27 +0000 | [diff] [blame] | 104 | echo "testing small$suffix.flac:" |
Josh Coalson | f8d544f | 2006-11-16 01:22:33 +0000 | [diff] [blame] | 105 | if run_test_seeking small$suffix.flac 1000 $small_samples ; then : ; else |
Josh Coalson | 6b21f66 | 2006-09-13 01:42:27 +0000 | [diff] [blame] | 106 | die "ERROR: during test_seeking" |
| 107 | fi |
Josh Coalson | b42b0ee | 2004-11-09 01:27:12 +0000 | [diff] [blame] | 108 | |
Josh Coalson | 6b21f66 | 2006-09-13 01:42:27 +0000 | [diff] [blame] | 109 | echo "removing sample count from tiny$suffix.flac and small$suffix.flac:" |
| 110 | if run_metaflac --no-filename --set-total-samples=0 tiny$suffix.flac small$suffix.flac ; then : ; else |
| 111 | die "ERROR: during metaflac" |
| 112 | fi |
Josh Coalson | 450572f | 2005-01-26 03:48:06 +0000 | [diff] [blame] | 113 | |
Josh Coalson | 6b21f66 | 2006-09-13 01:42:27 +0000 | [diff] [blame] | 114 | echo "testing tiny$suffix.flac with total_samples=0:" |
Josh Coalson | f8d544f | 2006-11-16 01:22:33 +0000 | [diff] [blame] | 115 | if run_test_seeking tiny$suffix.flac 100 $tiny_samples ; then : ; else |
Josh Coalson | 6b21f66 | 2006-09-13 01:42:27 +0000 | [diff] [blame] | 116 | die "ERROR: during test_seeking" |
| 117 | fi |
Josh Coalson | 450572f | 2005-01-26 03:48:06 +0000 | [diff] [blame] | 118 | |
Josh Coalson | 6b21f66 | 2006-09-13 01:42:27 +0000 | [diff] [blame] | 119 | echo "testing small$suffix.flac with total_samples=0:" |
Josh Coalson | f8d544f | 2006-11-16 01:22:33 +0000 | [diff] [blame] | 120 | if run_test_seeking small$suffix.flac 1000 $small_samples ; then : ; else |
Josh Coalson | 6b21f66 | 2006-09-13 01:42:27 +0000 | [diff] [blame] | 121 | die "ERROR: during test_seeking" |
| 122 | fi |
| 123 | done |
Josh Coalson | 450572f | 2005-01-26 03:48:06 +0000 | [diff] [blame] | 124 | |
Josh Coalson | 7ffd7e4 | 2005-02-01 01:49:11 +0000 | [diff] [blame] | 125 | if [ $has_ogg = "yes" ] ; then |
| 126 | |
Josh Coalson | 461899f | 2005-09-03 02:16:07 +0000 | [diff] [blame] | 127 | echo "generating Ogg FLAC files for seeking:" |
| 128 | run_flac --verify --force --silent --force-raw-format --endian=big --sign=signed --sample-rate=44100 --bps=8 --channels=1 --blocksize=576 --output-name=tiny.ogg --ogg noise8m32.raw || die "ERROR generating Ogg FLAC file" |
| 129 | run_flac --verify --force --silent --force-raw-format --endian=big --sign=signed --sample-rate=44100 --bps=16 --channels=2 --blocksize=576 --output-name=small.ogg --ogg noise.raw || die "ERROR generating Ogg FLAC file" |
Josh Coalson | 0b9442c | 2006-10-16 16:18:34 +0000 | [diff] [blame] | 130 | # seek tables are not used in Ogg FLAC |
Josh Coalson | 461899f | 2005-09-03 02:16:07 +0000 | [diff] [blame] | 131 | |
Josh Coalson | 7ffd7e4 | 2005-02-01 01:49:11 +0000 | [diff] [blame] | 132 | echo "testing tiny.ogg:" |
Josh Coalson | f8d544f | 2006-11-16 01:22:33 +0000 | [diff] [blame] | 133 | if run_test_seeking tiny.ogg 100 $tiny_samples ; then : ; else |
Josh Coalson | 7ffd7e4 | 2005-02-01 01:49:11 +0000 | [diff] [blame] | 134 | die "ERROR: during test_seeking" |
| 135 | fi |
| 136 | |
| 137 | echo "testing small.ogg:" |
Josh Coalson | f8d544f | 2006-11-16 01:22:33 +0000 | [diff] [blame] | 138 | if run_test_seeking small.ogg 1000 $small_samples ; then : ; else |
Josh Coalson | 7ffd7e4 | 2005-02-01 01:49:11 +0000 | [diff] [blame] | 139 | die "ERROR: during test_seeking" |
| 140 | fi |
| 141 | |
Josh Coalson | b42b0ee | 2004-11-09 01:27:12 +0000 | [diff] [blame] | 142 | fi |
| 143 | |
Josh Coalson | 6b21f66 | 2006-09-13 01:42:27 +0000 | [diff] [blame] | 144 | rm -f tiny.flac tiny.ogg small.flac small.ogg tiny-s.flac small-s.flac |