Mercurial > hg > sonic-annotator
view tests/test-multiple-audio/test-multiple-audio.sh @ 269:39fb206b1153 piper-nopiper
Filter out Xing/LAME info frames, rather than letting them go to the mp3 decoder as if they were audio frames. Fixes the 1152-sample zero pad at start of some decoded mp3 files (distinct from decoder delay). The logic here is based on the madplay code.
author | Chris Cannam |
---|---|
date | Thu, 24 Nov 2016 13:32:04 +0000 |
parents | 090b26a4d050 |
children | 5db279f1e0f8 |
line wrap: on
line source
#!/bin/bash . ../include.sh tmpfile1=$mypath/tmp_1_$$ tmpfile2=$mypath/tmp_2_$$ trap "rm -f $tmpfile1 $tmpfile2" 0 transform=$mypath/transforms/detectionfunction.n3 urlbase=http://vamp-plugins.org/sonic-annotator/testfiles have_network=yes if ! ping -c 1 8.8.8.8 2>/dev/null 1>&2 ; then echo "(network appears unavailable, skipping networking tests)" have_network=no fi # 1. Recursive local directory # Note, the output here depends on all the audio files present -- we # would have to regenerate it if we added more test audio files. Note # that the -r flag is not supposed to pick up playlist files, only # audio files $r -t $transform -w csv --csv-stdout -r --summary-only $audiopath > $tmpfile1 2>/dev/null || \ fail "Fails to run transform $transform with recursive dir option" expected=$mypath/expected/all-files csvcompare $tmpfile1 $expected.csv || \ faildiff "Output mismatch for transform $transform with summaries and recursive dir option" $tmpfile1 $expected.csv # 2. Local playlist file referring to local audio files # Here we strip any leading path from the audio file in the output, # because the playlist reader will have resolved files to absolute # paths and those will differ between systems $r -t $transform -w csv --csv-stdout $audiopath/playlist.m3u --summary-only 2>/dev/null > "$tmpfile2" || \ fail "Fails to run transform $transform with playlist input" cat "$tmpfile2" | sed 's,^"[^"]*/,",' > "$tmpfile1" expected=$mypath/expected/playlist csvcompare $tmpfile1 $expected.csv || \ faildiff "Output mismatch for transform $transform with summaries and playlist input" $tmpfile1 $expected.csv # 3. Multiple files supplied directly on command line # Strip paths again, just so we can use the same output comparison # file as above $r -t $transform -w csv --csv-stdout $audiopath/3clicks.mp3 $audiopath/6clicks.ogg --summary-only 2>/dev/null > $tmpfile2 || \ fail "Fails to run transform $transform with 2-file input" cat "$tmpfile2" | sed 's,^"[^"]*/,",' > "$tmpfile1" expected=$mypath/expected/playlist csvcompare $tmpfile1 $expected.csv || \ faildiff "Output mismatch for transform $transform with summaries and 2-file input" $tmpfile1 $expected.csv # 4. Multiple files supplied directly on command line, with file: URL $r -t $transform -w csv --csv-stdout $audiopath/3clicks.mp3 file://`pwd`/$audiopath/6clicks.ogg --summary-only 2>/dev/null > $tmpfile2 || \ fail "Fails to run transform $transform with 2-file input" cat "$tmpfile2" | sed 's,^"[^"]*/,",' > "$tmpfile1" expected=$mypath/expected/playlist csvcompare $tmpfile1 $expected.csv || \ faildiff "Output mismatch for transform $transform with summaries and 2-file input using file:// URL" $tmpfile1 $expected.csv if [ "$have_network" = "yes" ]; then # 5. Remote playlist file referring to remote audio files $r -t $transform -w csv --csv-stdout $urlbase/playlist.m3u --summary-only 2>/dev/null > $tmpfile2 || \ fail "Fails to run transform $transform with remote playlist input" cat "$tmpfile2" | sed 's,^"[^"]*/,",' > "$tmpfile1" expected=$mypath/expected/playlist csvcompare $tmpfile1 $expected.csv || \ faildiff "Output mismatch for transform $transform with summaries and remote playlist input" $tmpfile1 $expected.csv # 6. Local playlist file referring to mixture of remote and local audio files $r -t $transform -w csv --csv-stdout $audiopath/remote-playlist.m3u --summary-only 2>/dev/null > $tmpfile2 || \ fail "Fails to run transform $transform with playlist of remote files" cat "$tmpfile2" | sed 's,^"[^"]*/,",' > "$tmpfile1" expected=$mypath/expected/playlist csvcompare $tmpfile1 $expected.csv || \ faildiff "Output mismatch for transform $transform with summaries and remote playlist input" $tmpfile1 $expected.csv # 7. Multiple remote files supplied directly on command line $r -t $transform -w csv --csv-stdout $urlbase/3clicks.mp3 $urlbase/6clicks.ogg --summary-only 2>/dev/null > $tmpfile2 || \ fail "Fails to run transform $transform with 2-file remote input" cat "$tmpfile2" | sed 's,^"[^"]*/,",' > "$tmpfile1" expected=$mypath/expected/playlist csvcompare $tmpfile1 $expected.csv || \ faildiff "Output mismatch for transform $transform with summaries and 2-file input" $tmpfile1 $expected.csv # 8. Mixture of remote and local files supplied on command line $r -t $transform -w csv --csv-stdout $audiopath/3clicks.mp3 $urlbase/6clicks.ogg --summary-only 2>/dev/null > $tmpfile2 || \ fail "Fails to run transform $transform with 2-file remote input" cat "$tmpfile2" | sed 's,^"[^"]*/,",' > "$tmpfile1" expected=$mypath/expected/playlist csvcompare $tmpfile1 $expected.csv || \ faildiff "Output mismatch for transform $transform with summaries and mixed local/remote 2-file input" $tmpfile1 $expected.csv fi # 9. As 3, but multiplexing rather than extracting separately from each file $r -t $transform --multiplex -w csv --csv-stdout $audiopath/3clicks.mp3 $audiopath/6clicks.ogg --summary-only 2>/dev/null > $tmpfile2 || \ fail "Fails to run transform $transform with 2-file input" cat "$tmpfile2" | sed 's,^"[^"]*/,",' > "$tmpfile1" expected=$mypath/expected/multiplexed csvcompare $tmpfile1 $expected.csv || \ faildiff "Output mismatch for transform $transform with summaries and 2-file multiplexed input" $tmpfile1 $expected.csv