Add a regresion test for compression levels.
This commit is contained in:
parent
fc360735ce
commit
1f0daccf2b
@ -869,6 +869,51 @@ foo:
|
||||
return false;
|
||||
}
|
||||
|
||||
static FLAC__bool generate_noisy_sine(void)
|
||||
{
|
||||
FILE *f;
|
||||
FLAC__byte wav[] = {
|
||||
'R', 'I', 'F', 'F', 76, 0, 0, 0,
|
||||
'W', 'A', 'V', 'E', 'f', 'm', 't', ' ',
|
||||
16, 0, 0, 0, 1, 0, 1, 0,
|
||||
0x44,0xAC, 0, 0,0x88,0x58,0x01, 0,
|
||||
2, 0, 16, 0, 'd', 'a', 't', 'a',
|
||||
0xa8, 0xba, 0x6, 0
|
||||
};
|
||||
int32_t randstate = 0x1243456;
|
||||
double sample, last_val = 0.0;
|
||||
int k;
|
||||
|
||||
if(0 == (f = fopen("noisy-sine.wav", "wb")))
|
||||
return false;
|
||||
if(fwrite(wav, 1, sizeof (wav), f) < sizeof (wav))
|
||||
goto foo;
|
||||
|
||||
for (k = 0 ; k < 5 * 44100 ; k++) {
|
||||
/* Obvioulsy not a crypto quality RNG. */
|
||||
randstate = 11117 * randstate + 211231;
|
||||
randstate = 11117 * randstate + 211231;
|
||||
randstate = 11117 * randstate + 211231;
|
||||
|
||||
sample = randstate / (0x7fffffff * 1.000001);
|
||||
sample = 0.2 * sample - 0.9 * last_val;
|
||||
|
||||
last_val = sample;
|
||||
|
||||
sample += sin (2.0 * k * M_PI * 1.0 / 32.0);
|
||||
sample *= 0.4;
|
||||
|
||||
write_little_endian_int16(f, lrintf(sample * 32700.0));
|
||||
};
|
||||
|
||||
fclose(f);
|
||||
|
||||
return true;
|
||||
foo:
|
||||
fclose(f);
|
||||
return false;
|
||||
}
|
||||
|
||||
static FLAC__bool generate_wackywav64s(void)
|
||||
{
|
||||
FILE *f;
|
||||
@ -1078,6 +1123,7 @@ int main(int argc, char *argv[])
|
||||
if(!generate_wackywavs()) return 1;
|
||||
if(!generate_wackywav64s()) return 1;
|
||||
if(!generate_wackyrf64s()) return 1;
|
||||
if(!generate_noisy_sine()) return 1;
|
||||
for(channels = 1; channels <= 8; channels *= 2) {
|
||||
unsigned bits_per_sample;
|
||||
for(bits_per_sample = 8; bits_per_sample <= 24; bits_per_sample += 4) {
|
||||
|
@ -26,7 +26,8 @@ check_SCRIPTS = \
|
||||
test_flac.sh \
|
||||
test_metaflac.sh \
|
||||
test_seeking.sh \
|
||||
test_streams.sh
|
||||
test_streams.sh \
|
||||
test_compression.sh
|
||||
|
||||
# This one should pass when building out-of-tree (eg 'make distcheck').
|
||||
check: $(check_SCRIPTS)
|
||||
@ -36,6 +37,7 @@ if FLaC__WITH_CPPLIBS
|
||||
endif
|
||||
$(srcdir)/test_seeking.sh
|
||||
$(srcdir)/test_streams.sh
|
||||
$(srcdir)/test_compression.sh
|
||||
@echo "----------------"
|
||||
@echo "All tests passed"
|
||||
@echo "----------------"
|
||||
@ -53,6 +55,7 @@ endif
|
||||
./test_metaflac.sh
|
||||
./test_seeking.sh
|
||||
./test_streams.sh
|
||||
./test_compression.sh
|
||||
@echo "----------------"
|
||||
@echo "All tests passed"
|
||||
@echo "----------------"
|
||||
|
50
test/test_compression.sh
Executable file
50
test/test_compression.sh
Executable file
@ -0,0 +1,50 @@
|
||||
#!/bin/sh
|
||||
|
||||
# FLAC - Free Lossless Audio Codec
|
||||
# Copyright (C) 2012 Xiph.Org Foundation
|
||||
#
|
||||
# This file is part the FLAC project. FLAC is comprised of several
|
||||
# components distributed under difference 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.
|
||||
|
||||
LD_LIBRARY_PATH=`pwd`/../src/libFLAC/.libs:$LD_LIBRARY_PATH
|
||||
LD_LIBRARY_PATH=`pwd`/../src/share/grabbag/.libs:$LD_LIBRARY_PATH
|
||||
LD_LIBRARY_PATH=`pwd`/../src/share/getopt/.libs:$LD_LIBRARY_PATH
|
||||
LD_LIBRARY_PATH=`pwd`/../src/share/replaygain_analysis/.libs:$LD_LIBRARY_PATH
|
||||
LD_LIBRARY_PATH=`pwd`/../src/share/replaygain_synthesis/.libs:$LD_LIBRARY_PATH
|
||||
LD_LIBRARY_PATH=`pwd`/../src/share/utf8/.libs:$LD_LIBRARY_PATH
|
||||
LD_LIBRARY_PATH=`pwd`/../obj/$BUILD/lib:$LD_LIBRARY_PATH
|
||||
export LD_LIBRARY_PATH
|
||||
PATH=`pwd`/../src/flac:$PATH
|
||||
|
||||
echo "Using FLAC binary :" `which flac`
|
||||
|
||||
date=`date "+%Y%m%dT%H%M%S"`
|
||||
fname="comp${date}.flac"
|
||||
|
||||
last_size=0
|
||||
last_k=0
|
||||
for k in `seq 1 8` ; do
|
||||
flac -${k} --silent noisy-sine.wav -o ${fname}
|
||||
size=`stat --format="%s" ${fname}`
|
||||
echo "Compression level ${k}, file size ${size} bytes."
|
||||
if test $k -gt 1 ; then
|
||||
if test $last_size -lt $size ; then
|
||||
echo "Error : Compression $last_k size $last_size >= compression $k size $size."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
last_size=$size
|
||||
last_k=$k
|
||||
rm -f $fname
|
||||
done
|
Loading…
Reference in New Issue
Block a user