blob: 69ed99309d9979075391f7fe0b3c7bcb876cf171 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
#!/bin/sh -e
# FLAC - Free Lossless Audio Codec
# Copyright (C) 2002-2009 Josh Coalson
# Copyright (C) 2011-2023 Xiph.Org Foundation
#
# This file is part the FLAC project. FLAC is comprised of several
# components distributed under different licenses. The codec libraries
# are distributed under Xiph.Org's BSD-like license (see the file
# COPYING.Xiph in this distribution). All other programs, libraries, and
# plugins are distributed under the GPL (see COPYING.GPL). The documentation
# is distributed under the Gnu FDL (see COPYING.FDL). Each file in the
# FLAC distribution contains at the top the terms under which it may be
# distributed.
#
# Since this particular file is relevant to all components of FLAC,
# it may be distributed under the Xiph.Org license, which is the least
# restrictive of those mentioned above. See the file COPYING.Xiph in this
# distribution.
. ./common.sh
PATH="$(pwd)/../src/flac:$PATH"
PATH="$(pwd)/../src/metaflac:$PATH"
PATH="$(pwd)/../objs/$BUILD/bin:$PATH"
if echo a | (grep -E '(a|b)') >/dev/null 2>&1
then EGREP='grep -E'
else EGREP='egrep'
fi
testdir="metaflac-test-files"
flacfile="replaygain.flac"
run_flac ()
{
if [ "$FLAC__TEST_WITH_VALGRIND" = yes ] ; then
echo "valgrind --leak-check=yes --show-reachable=yes --num-callers=50 flac $*" >>test_replaygain.valgrind.log
valgrind --leak-check=yes --show-reachable=yes --num-callers=50 --log-fd=4 flac --no-error-on-compression-fail $* 4>>test_replaygain.valgrind.log
else
flac${EXE} --no-error-on-compression-fail $*
fi
}
run_metaflac ()
{
if [ "$FLAC__TEST_WITH_VALGRIND" = yes ] ; then
echo "valgrind --leak-check=yes --show-reachable=yes --num-callers=50 metaflac $*" >>test_replaygain.valgrind.log
valgrind --leak-check=yes --show-reachable=yes --num-callers=50 --log-fd=4 metaflac $* 4>>test_replaygain.valgrind.log
else
metaflac${EXE} $*
fi
}
run_metaflac_silent ()
{
if [ -z "$SILENT" ] ; then
run_metaflac $*
else
if [ "$FLAC__TEST_WITH_VALGRIND" = yes ] ; then
echo "valgrind --leak-check=yes --show-reachable=yes --num-callers=50 metaflac $*" >>test_replaygain.valgrind.log
valgrind --leak-check=yes --show-reachable=yes --num-callers=50 --log-fd=4 metaflac $* 2>/dev/null 4>>test_replaygain.valgrind.log
else
metaflac${EXE} $* 2>/dev/null
fi
fi
}
check_flac ()
{
run_flac --silent --test $flacfile || die "ERROR in $flacfile" 1>&2
}
echo "Generating stream..."
bytes=80000
if dd if=/dev/zero ibs=1 count=$bytes 2>/dev/null | flac${EXE} --silent --force --verify -0 --input-size=$bytes --output-name=$flacfile --force-raw-format --endian=big --sign=signed --channels=1 --bps=8 --sample-rate=8000 - ; then
chmod +w $flacfile
else
die "ERROR during generation"
fi
check_flac
# Replay gain tests - Test the rates which have specific filter table entries
# and verify that harmonics can be processed correctly.
tonegenerator ()
{
flac${EXE} --force --output-name=$2 --silent --no-seektable --no-error-on-compression-fail rpg-tone-$1.wav
}
REPLAYGAIN_FREQ=
REPLAYGAIN_FREQ="$REPLAYGAIN_FREQ 8000/-12.73"
REPLAYGAIN_FREQ="$REPLAYGAIN_FREQ 11025/-12.91"
REPLAYGAIN_FREQ="$REPLAYGAIN_FREQ 12000/-12.98"
REPLAYGAIN_FREQ="$REPLAYGAIN_FREQ 16000/-13.27"
REPLAYGAIN_FREQ="$REPLAYGAIN_FREQ 18900/-13.41"
REPLAYGAIN_FREQ="$REPLAYGAIN_FREQ 22050/-13.77"
REPLAYGAIN_FREQ="$REPLAYGAIN_FREQ 24000/-13.82"
REPLAYGAIN_FREQ="$REPLAYGAIN_FREQ 28000/-14.06"
REPLAYGAIN_FREQ="$REPLAYGAIN_FREQ 32000/-14.08"
REPLAYGAIN_FREQ="$REPLAYGAIN_FREQ 36000/-14.12"
REPLAYGAIN_FREQ="$REPLAYGAIN_FREQ 37800/-14.18"
REPLAYGAIN_FREQ="$REPLAYGAIN_FREQ 44100/-14.17"
REPLAYGAIN_FREQ="$REPLAYGAIN_FREQ 48000/-14.16:1:2:4"
set -e
for ACTION in $REPLAYGAIN_FREQ ; do
if [ -n "${ACTION##*:*}" ] ; then
HARMONICS=1
else
HARMONICS="${ACTION#*:}"
fi
FREQ="${ACTION%%/*}"
GAIN="${ACTION#*/}"
GAIN="${GAIN%%:*}"
while [ -n "$HARMONICS" ] ; do
MULTIPLE="${HARMONICS%%:*}"
if [ "$MULTIPLE" = "$HARMONICS" ] ; then
HARMONICS=
else
HARMONICS="${HARMONICS#*:}"
fi
RATE=$((MULTIPLE * FREQ))
[ $MULTIPLE -eq 1 -o -n "${REPLAYGAIN_FREQ##* $RATE/*}" ] || break
echo $ECHO_N "Testing FLAC replaygain $RATE ($FREQ x $MULTIPLE) ... " $ECHO_C
tonegenerator $RATE $flacfile
run_metaflac --scan-replay-gain $flacfile
run_metaflac --add-replay-gain $flacfile
run_metaflac --list $flacfile | grep "REPLAYGAIN.*GAIN=" |
while read -r REPLAYGAIN ; do
MEASUREDGAIN="${REPLAYGAIN##*=}"
MEASUREDGAIN="${MEASUREDGAIN%% *}"
if [ x"$MEASUREDGAIN" != x"$GAIN" ] ; then
die "ERROR, Expected $GAIN db instead of $REPLAYGAIN"
fi
done
echo OK
done
done
rm -f $testdir/out.flac $testdir/out.meta
exit 0
|