xref: /OK3568_Linux_fs/external/rockchip-test/audio/check_wavs.sh (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1#!/bin/bash
2
3WAVS_PATH=$1
4ERR_CNT=0
5
6PREFIX_LOG="/tmp/check_logs"
7TMP_STAT_LOG="tmp_stat.log"
8TMP_STATS_LOG="tmp_stats.log"
9STAT_LOG="stat.log"
10STATS_LOG="stats.log"
11RESULT_LOG="result.log"
12
13echo "WAVS_PATH: $WAVS_PATH"
14
15check_prepare()
16{
17	if [ -n "$PREFIX_LOG" ]; then
18		TMP_STAT_LOG="$PREFIX_LOG/$TMP_STAT_LOG"
19		TMP_STATS_LOG="$PREFIX_LOG/$TMP_STATS_LOG"
20		STAT_LOG="$PREFIX_LOG/$STAT_LOG"
21		STATS_LOG="$PREFIX_LOG/$STATS_LOG"
22		RESULT_LOG="$PREFIX_LOG/$RESULT_LOG"
23
24		mkdir -p $PREFIX_LOG
25	else
26		echo "PREFIX_LOG is empty"
27	fi
28
29	rm $TMP_STAT_LOG -f
30	rm $TMP_STATS_LOG -f
31	rm $STAT_LOG -f
32	rm $STATS_LOG -f
33
34	echo "there is no error on test loopback" > $RESULT_LOG
35}
36
37# There is don't need to add function keyword on busybox shell
38check_wav()
39{
40	wav=$1
41	threshold_db=-15
42
43	echo "will check wav: $wav with threshold_db: $threshold_db"
44
45	sox $wav -n stat 2> $TMP_STAT_LOG
46	sox $wav -n stats 2> $TMP_STATS_LOG
47
48	echo "======== $wav stat info: ========" >> $STAT_LOG
49	cat $TMP_STAT_LOG >> $STAT_LOG
50	echo >> $STAT_LOG
51
52	echo "======== $wav stats info: ========" >> $STATS_LOG
53	cat $TMP_STATS_LOG >> $STATS_LOG
54	echo >> $STATS_LOG
55
56	l_pk=`awk 'NR==5{ printf "%.2f", $5 }' $TMP_STATS_LOG`
57	r_pk=`awk 'NR==5{ printf "%.2f", $6 }' $TMP_STATS_LOG`
58	echo "l_pk: $l_pk, r_pk: $r_pk"
59
60	last_err=$ERR_CNT
61	ERR_CNT=$(echo $l_pk $threshold_db $ERR_CNT | awk '{
62		if ($1 > $2) {
63			$3+=1;
64		}
65	} END {
66		printf "%d", $3;
67	}')
68
69	if [ $last_err != $ERR_CNT ]; then
70		echo "ERROR! $wav Left Pk lev dB: $l_pk > $threshold_db" >> $RESULT_LOG
71	else
72		echo "OK! $wav Left Pk lev dB: $l_pk < $threshold_db" >> $RESULT_LOG
73	fi
74
75	last_err=$ERR_CNT
76	ERR_CNT=$(echo $r_pk $threshold_db $ERR_CNT | awk '{
77		if ($1 > $2) {
78			$3+=1;
79		}
80	} END {
81		printf "%d", $3;
82	}')
83
84	if [ $last_err != $ERR_CNT ]; then
85		echo "ERROR! $wav Right Pk lev dB: $r_pk > $threshold_db" >> $RESULT_LOG
86	else
87		echo "OK! $wav Right Pk lev dB: $r_pk < $threshold_db" >> $RESULT_LOG
88	fi
89
90	echo "total ERR_CNT: $ERR_CNT"
91
92	#cat $TMP_STATS_LOG | while read line
93	#do
94		# echo "line: $line"
95	#	label=`echo $line | awk '{ print $1 }'`
96	#	echo "label: $label"
97	#done
98}
99
100check_start()
101{
102	cd $WAVS_PATH
103
104	check_prepare
105
106	for file in `ls $WAVS_PATH`
107	do
108		if [ -f $file ]; then
109			# echo "found file: $file"
110
111			suffix=$(echo "$file" | cut -d . -f2)
112			# echo "found suffix: $suffix"
113
114			if [ $suffix == "wav" ]; then
115				# echo "found wav file: $file"
116				check_wav $file
117			fi
118		fi
119	done
120}
121
122check_start
123