Commit 2bc456a2 authored by Stefan Westerfeld's avatar Stefan Westerfeld

Support randomized speed detection test in ber-test (AWM_SPEED=1).

Signed-off-by: Stefan Westerfeld's avatarStefan Westerfeld <stefan@space.twc.de>
parent ce6a81be
...@@ -316,6 +316,16 @@ test_clip (const string& in_file, const string& out_file, int seed, int time_sec ...@@ -316,6 +316,16 @@ test_clip (const string& in_file, const string& out_file, int seed, int time_sec
return 0; return 0;
} }
int
test_speed (int seed)
{
Random rng (seed, /* there is no stream for this test */ Random::Stream::data_up_down);
double low = 0.85;
double high = 1.15;
printf ("%.6f\n", low + (rng() / double (UINT64_MAX)) * (high - low));
return 0;
}
int int
gen_key (const string& outfile) gen_key (const string& outfile)
{ {
...@@ -683,6 +693,13 @@ main (int argc, char **argv) ...@@ -683,6 +693,13 @@ main (int argc, char **argv)
if (ap.parse_args (4, args)) if (ap.parse_args (4, args))
return test_clip (args[0], args[1], atoi (args[2].c_str()), atoi (args[3].c_str())); return test_clip (args[0], args[1], atoi (args[2].c_str()), atoi (args[3].c_str()));
} }
else if (ap.parse_cmd ("test-speed"))
{
parse_shared_options (ap);
if (ap.parse_args (1, args))
return test_speed (atoi (args[0].c_str()));
}
error ("audiowmark: error parsing commandline args (use audiowmark -h)\n"); error ("audiowmark: error parsing commandline args (use audiowmark -h)\n");
return 1; return 1;
} }
...@@ -70,6 +70,19 @@ do ...@@ -70,6 +70,19 @@ do
else else
TEST_CUT_ARGS="" TEST_CUT_ARGS=""
fi fi
if [ "x$AWM_SPEED" != x ]; then
[ -z $SPEED_SEED ] && SPEED_SEED=0
SPEED=$(audiowmark test-speed $SPEED_SEED --test-key $SEED)
((SPEED_SEED++))
echo in_speed $SPEED
sox -V1 ${AWM_FILE}.wav ${AWM_FILE}.speed.wav speed $SPEED
mv ${AWM_FILE}.speed.wav ${AWM_FILE}.wav
TEST_SPEED_ARGS="--detect-speed --detect-speed-hint $SPEED"
else
TEST_SPEED_ARGS=""
fi
if [ "x$TRANSFORM" == "xmp3" ]; then if [ "x$TRANSFORM" == "xmp3" ]; then
if [ "x$2" == "x" ]; then if [ "x$2" == "x" ]; then
echo "need mp3 bitrate" >&2 echo "need mp3 bitrate" >&2
...@@ -108,18 +121,18 @@ do ...@@ -108,18 +121,18 @@ do
for CLIP in $(seq $AWM_MULTI_CLIP) for CLIP in $(seq $AWM_MULTI_CLIP)
do do
audiowmark test-clip $OUT_FILE ${OUT_FILE}.clip.wav $((CLIP_SEED++)) $AWM_CLIP --test-key $SEED audiowmark test-clip $OUT_FILE ${OUT_FILE}.clip.wav $((CLIP_SEED++)) $AWM_CLIP --test-key $SEED
audiowmark cmp ${OUT_FILE}.clip.wav $PATTERN $AWM_PARAMS --test-key $SEED $TEST_CUT_ARGS audiowmark cmp ${OUT_FILE}.clip.wav $PATTERN $AWM_PARAMS --test-key $SEED $TEST_CUT_ARGS $TEST_SPEED_ARGS
rm ${OUT_FILE}.clip.wav rm ${OUT_FILE}.clip.wav
echo echo
done done
elif [ "x$AWM_REPORT" == "xtruncv" ]; then elif [ "x$AWM_REPORT" == "xtruncv" ]; then
for TRUNC in $AWM_TRUNCATE for TRUNC in $AWM_TRUNCATE
do do
audiowmark cmp $OUT_FILE $PATTERN $AWM_PARAMS --test-key $SEED $TEST_CUT_ARGS --test-truncate $TRUNC | sed "s/^/$TRUNC /g" audiowmark cmp $OUT_FILE $PATTERN $AWM_PARAMS --test-key $SEED $TEST_CUT_ARGS $TEST_SPEED_ARGS --test-truncate $TRUNC | sed "s/^/$TRUNC /g"
echo echo
done done
else else
audiowmark cmp $OUT_FILE $PATTERN $AWM_PARAMS --test-key $SEED $TEST_CUT_ARGS audiowmark cmp $OUT_FILE $PATTERN $AWM_PARAMS --test-key $SEED $TEST_CUT_ARGS $TEST_SPEED_ARGS
echo echo
fi fi
rm -f ${AWM_FILE}.wav $OUT_FILE # cleanup temp files rm -f ${AWM_FILE}.wav $OUT_FILE # cleanup temp files
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment