@@ -1534,47 +1534,85 @@ restore_topology() {
15341534 check_topology
15351535}
15361536
1537+ # Check aplay output for warnings about incorrect sample rate
1538+ # Arguments: 1-aplay output
1539+ check_for_aplay_warnings ()
1540+ {
1541+ dlogi " $1 "
1542+ if echo " $1 " | grep -q " Warning:" ; then
1543+ dlogw " Caught aplay warning!"
1544+ return 1
1545+ fi
1546+ return 0
1547+ }
1548+
15371549# Play sound and record it
15381550# Arguments: 1-arecord options 2-aplay options
15391551play_and_record ()
15401552{
1553+ errors=0
15411554 dlogi " Play [aplay $SOF_ALSA_OPTS $SOF_APLAY_OPTS $2 ] and capture sound [arecord $1 ]"
15421555 # shellcheck disable=SC2086
15431556 arecord $SOF_ALSA_OPTS $SOF_ARECORD_OPTS $1 & PID=$!
1557+ if [ $? -ne 0 ]; then
1558+ errors=$(( errors+ 1 ))
1559+ fi
15441560 # shellcheck disable=SC2086
1545- aplay $SOF_ALSA_OPTS $SOF_APLAY_OPTS $2
1561+ aplay_output=$( aplay $SOF_ALSA_OPTS $SOF_APLAY_OPTS $2 2>&1 )
1562+ if [ $? -ne 0 ]; then
1563+ errors=$(( errors+ 1 ))
1564+ fi
15461565 wait $PID
15471566 sleep 1
1567+ check_for_aplay_warnings " $aplay_output "
1568+ if [ $? -ne 0 ]; then
1569+ errors=$(( errors+ 1 ))
1570+ fi
1571+
1572+ if [ " $errors " = 0 ]; then
1573+ return 0
1574+ fi
1575+ return 1
15481576}
15491577
1550- # Analyze files to look for glitches.
1578+ # Analyze file to look for glitches.
15511579# Returns exit code 0 if there are no glitches, 1 if there are.
1552- # Arguments: the list of filenames
1580+ # Arguments: filename
15531581check_soundfile_for_glitches ()
15541582{
1555- glitched_files=0
1583+ if [ -f " $result_filename " ]; then
1584+ dlogi " Analyzing $result_filename file..."
1585+ if python3 " $SCRIPT_HOME " /tools/analyze-wav.py " $result_filename " ; then
1586+ dlogi " $result_filename file is correct"
1587+ else
1588+ dlogw " GLITCHED FILE: $result_filename "
1589+ return 1
1590+ fi
1591+ else
1592+ dlogw " MISSING FILE: $result_filename "
1593+ return 1
1594+ fi
1595+ }
1596+
1597+ # Check list of soundfiles for glitches
1598+ # Returns exit code 0 if there are no glitches, 1 if there are.
1599+ # Arguments: list of filenames
1600+ check_soundfiles_for_glitches ()
1601+ {
1602+ failures=0
15561603 # shellcheck disable=SC2154
15571604 for result_filename in " ${all_result_files[@]} "
15581605 do
1559- if [ -f " $result_filename " ]; then
1560- dlogi " Analyzing $result_filename file..."
1561- if python3 " $SCRIPT_HOME " /tools/analyze-wav.py " $result_filename " ; then
1562- dlogi " $result_filename file is correct"
1563- else
1564- dlogw " Found issues in $result_filename file"
1565- glitched_files=$(( glitched_files+ 1 ))
1566- fi
1567- else
1568- dlogw " $result_filename file not found, check for previous errors"
1569- glitched_files=$(( glitched_files+ 1 ))
1606+ if ! check_soundfile_for_glitches " $result_filename " ; then
1607+ failures=$(( failures+ 1 ))
15701608 fi
15711609 done
15721610
1573- if [ $glitched_files -eq 0 ]; then
1574- dlogi " Analysis finished, no issues found "
1611+ if [ " $failures " = 0 ]; then
1612+ dlogi " All files correct "
15751613 return 0
15761614 else
1577- dlogi " $glitched_files files corrupted"
1615+ dlogw " Found $failures corrupted files "
15781616 return 1
15791617 fi
15801618}
0 commit comments