blob: 4d5f170431c8788b484526545b4e91c73d9d1454 [file] [log] [blame]
Chase Qi50842e52017-03-27 11:31:06 +08001#!/system/bin/sh
2# shellcheck disable=SC2039
3# shellcheck disable=SC2086
4# shellcheck disable=SC2181
5# shellcheck disable=SC2155
6# shellcheck disable=SC2166
Anders Roxellabd41ce2022-11-23 14:18:27 +01007# shellcheck disable=SC3060
Chase Qi50842e52017-03-27 11:31:06 +08008#############################################################################
9# Copyright (c) 2014 Linaro
10# All rights reserved. This program and the accompanying materials
11# are made available under the terms of the Eclipse Public License v1.0
12# which accompanies this distribution, and is available at
13# http://www.eclipse.org/legal/epl-v10.html
14#
15# Contributors:
16# Linaro <linaro-dev@lists.linaro.org>
17#############################################################################
18
19# Individual and batch test definitions
20ALL_AUDIO_CODECS="audio_codec_aac audio_codec_flac audio_codec_mp3 \
21 audio_codec_tremolo"
22ALL_SPEECH_CODECS="speech_codec_amrnb_dec speech_codec_amrnb_enc \
23 speech_codec_amrwb_dec speech_codec_amrwb_enc"
24ALL_VIDEO_CODECS="video_codec_h264_dec video_codec_h264_enc \
25 video_codec_h263_dec video_codec_h263_enc"
26ALL_CODECS="${ALL_AUDIO_CODECS} ${ALL_SPEECH_CODECS} ${ALL_VIDEO_CODECS}"
27ALL_TESTS="${ALL_CODECS}"
28
29# Script arguments for selecting tests to run
30ALL_AUDIO_CODECS_OPT="all_audio_codecs"
31ALL_SPEECH_CODECS_OPT="all_speech_codecs"
32ALL_VIDEO_CODECS_OPT="all_video_codecs"
33ALL_CODECS_OPT="all_codecs"
34ALL_TESTS_OPT="all_tests"
35
36func_md5(){
37 if [ -n "$(which md5)" ]; then
38 md5 "$@"
39 else
40 md5sum "$@"
41 fi
42}
43
44usage() {
45 echo
46 echo "Usage: $0 [-h] [-t TESTS] [-v]"
47 echo "Run all or specified Android userspace tests"
48 echo
49 printf " %-10s\t%s\n" "-h" "Print this help message"
50 printf " %-10s\t%s\n" "-t TESTS" "Run only specified TESTS from the following:"
51 printf " %-10s\t%s\n" "" "Individual tests:"
52 for CODEC in ${ALL_CODECS}; do
53 printf " %-10s\t\t%s\n" "" "${CODEC}"
54 done
55 printf " %-10s\t%s\n" "" "Batch tests:"
56 printf " %-10s\t\t%s\n" "" "${ALL_AUDIO_CODECS_OPT}"
57 printf " %-10s\t\t%s\n" "" "${ALL_SPEECH_CODECS_OPT}"
58 printf " %-10s\t\t%s\n" "" "${ALL_VIDEO_CODECS_OPT}"
59 printf " %-10s\t\t%s\n" "" "${ALL_CODECS_OPT}"
60 printf " %-10s\t\t%s\n" "" "${ALL_TESTS_OPT}"
61 printf " %-10s\t%s\n" "-v" "Turn on verbose output"
62 echo
63 echo "Example:"
64 printf "\t%s -t \"audio_codec_aac speech_codec_amrnb_dec\"\n" "$0"
65}
66
67run_audio_codec_aac()
68{
69 local TEST_FILE="/data/linaro-android-userspace-test/audio-codec/Retribution.wav"
70 local OUT_FILE="/data/local/tmp/audio-codec-test.out"
71 local EXPECTED_MD5SUM="f35771514701eaf5055b1705a4c660b7"
72
73 echo
74 echo "Running AAC encoder test"
75
76 if [ ! -f ${TEST_FILE} ]; then
77 echo "ERROR: AAC encoder test file ${TEST_FILE} does not exist"
78 echo "AAC encoder test: FAILED"
79 echo "[audio_codec_aac]: test failed"
80 return 1
81 fi
82 if [ "${VERBOSE}" -eq "1" ]; then
83 libaacenc_test ${TEST_FILE} ${OUT_FILE}
84 else
Anders Roxelld0a77562022-11-23 14:09:05 +010085 libaacenc_test ${TEST_FILE} ${OUT_FILE} > /dev/null 2>&1
Chase Qi50842e52017-03-27 11:31:06 +080086 fi
87 if [ "$?" -ne "0" ]; then
88 echo "ERROR: AAC encoder test returned error"
89 echo "AAC encoder test: FAILED"
90 echo "[audio_codec_aac]: test failed"
91 return 1
92 fi
93
94 echo "Checking MD5SUM of output file"
Anders Roxellabd41ce2022-11-23 14:18:27 +010095 local MD5SUM="$(func_md5 ${OUT_FILE})"
Chase Qi50842e52017-03-27 11:31:06 +080096 MD5SUM=${MD5SUM%% *}
97 rm ${OUT_FILE}
98 if [[ "${MD5SUM}" == "${EXPECTED_MD5SUM}" ]]; then
99 echo "AAC encoder test: PASSED"
100 echo "[audio_codec_aac]: test passed"
101 else
102 echo "ERROR: incorrect MD5SUM '${MD5SUM}' (expected '${EXPECTED_MD5SUM}')"
103 echo "AAC encoder test: FAILED"
104 echo "[audio_codec_aac]: test failed"
105 return 1
106 fi
107}
108
109run_audio_codec_flac()
110{
111 echo
112 echo "Running FLAC encoder/decoder test"
113
114 if [ "${VERBOSE}" -eq "1" ]; then
115 libFLAC_test
116 else
Anders Roxelld0a77562022-11-23 14:09:05 +0100117 libFLAC_test > /dev/null 2>&1
Chase Qi50842e52017-03-27 11:31:06 +0800118 fi
119 if [ "$?" -eq "0" ]; then
120 echo "FLAC encoder/decoder test: PASSED"
121 echo "[audio_codec_flac]: test passed"
122 else
123 echo "ERROR: FLAC encoder/decoder test returned error"
124 echo "FLAC encoder/decoder test: FAILED"
125 echo "[audio_codec_flac]: test failed"
126 return 1
127 fi
128}
129
130run_audio_codec_mp3()
131{
132 local TEST_FILE="/data/linaro-android-userspace-test/audio-codec/Retribution.mp3"
133 local OUT_FILE="/data/local/tmp/audio-codec-test.out"
134 local EXPECTED_MD5SUM="bf1456a93dfc53e474c30c9fca75c647"
135
136 echo
137 echo "Running MP3 decoder test"
138
139 if [ ! -f ${TEST_FILE} ]; then
140 echo "ERROR: MP3 test file ${TEST_FILE} does not exist"
141 echo "MP3 decoder test: FAILED"
142 echo "[audio_codec_mp3]: test failed"
143 return 1
144 fi
145 if [ "${VERBOSE}" -eq "1" ]; then
146 libstagefright_mp3dec_test ${TEST_FILE} ${OUT_FILE}
147 else
Anders Roxelld0a77562022-11-23 14:09:05 +0100148 libstagefright_mp3dec_test ${TEST_FILE} ${OUT_FILE} > /dev/null 2>&1
Chase Qi50842e52017-03-27 11:31:06 +0800149 fi
150 if [ "$?" -ne "0" ]; then
151 echo "ERROR: MP3 decoder test returned error"
152 echo "MP3 decoder test: FAILED"
153 echo "[audio_codec_mp3]: test failed"
154 return 1
155 fi
156
157 echo "Checking MD5SUM of output file"
Anders Roxellabd41ce2022-11-23 14:18:27 +0100158 local MD5SUM="$(func_md5 ${OUT_FILE})"
Chase Qi50842e52017-03-27 11:31:06 +0800159 MD5SUM=${MD5SUM%% *}
160 rm ${OUT_FILE}
161 if [[ "${MD5SUM}" == "${EXPECTED_MD5SUM}" ]]; then
162 echo "MP3 decoder test: PASSED"
163 echo "[audio_codec_mp3]: test passed"
164 else
165 echo "ERROR: incorrect MD5SUM '${MD5SUM}' (expected '${EXPECTED_MD5SUM}')"
166 echo "MP3 decoder test: FAILED"
167 echo "[audio_codec_mp3]: test failed"
168 return 1
169 fi
170}
171
172run_audio_codec_tremolo()
173{
174 local TEST_FILE="/data/linaro-android-userspace-test/audio-codec/Retribution.ogg"
175 local OUT_FILE="/data/local/tmp/audio-codec-test.out"
176 local EXPECTED_MD5SUM="49097459eb06bb624ff3d09f959d0423"
177
178 echo
179 echo "Running Tremolo decoder test"
180 if [ ! -f ${TEST_FILE} ]; then
181 echo "ERROR: Tremolo test file ${TEST_FILE} does not exist"
182 echo "Tremolo decoder test: FAILED"
183 echo "[audio_codec_tremolo]: test failed"
184 return 1
185 fi
186 if [ "${VERBOSE}" -eq "1" ]; then
187 libvorbisidec_test ${TEST_FILE} ${OUT_FILE}
188 else
Anders Roxelld0a77562022-11-23 14:09:05 +0100189 libvorbisidec_test ${TEST_FILE} ${OUT_FILE} > /dev/null 2>&1
Chase Qi50842e52017-03-27 11:31:06 +0800190 fi
191 if [ "$?" -ne "0" ]; then
192 echo "ERROR: Tremolo decoder test returned error"
193 echo "Tremolo decoder test: FAILED"
194 echo "[audio_codec_tremolo]: test failed"
195 return 1
196 fi
197
198 echo "Checking MD5SUM of output file"
Anders Roxellabd41ce2022-11-23 14:18:27 +0100199 local MD5SUM="$(func_md5 ${OUT_FILE})"
Chase Qi50842e52017-03-27 11:31:06 +0800200 MD5SUM=${MD5SUM%% *}
201 rm ${OUT_FILE}
202 if [[ "${MD5SUM}" == "${EXPECTED_MD5SUM}" ]]; then
203 echo "Tremolo decoder test: PASSED"
204 echo "[audio_codec_tremolo]: test passed"
205 else
206 echo "ERROR: incorrect MD5SUM '${MD5SUM}' (expected '${EXPECTED_MD5SUM}')"
207 echo "Tremolo decoder test: FAILED"
208 echo "[audio_codec_tremolo]: test failed"
209 return 1
210 fi
211}
212
213run_speech_codec()
214{
215 if [ "$#" -ne "6" ]; then
216 return 1
217 fi
218
219 local IS_ENCODE="${1}"
220 local TAG="${2}"
221 local NAME="${3}"
222 local DATA_DIR="${4}"
223 local MD5SUM_FILE="${5}"
224 local RUN="${6}"
225 local OUT_FILE="/data/local/tmp/speech-codec-test.out"
226
227 echo
228 echo "${TAG}: Running ${NAME}"
229 if [ ! -f ${MD5SUM_FILE} ]; then
230 echo "${TAG}: ERROR: MD5SUM file '${MD5SUM_FILE}' does not exist"
231 echo "${TAG}: ${NAME}: FAILED"
232 echo "[${TAG}]: test failed"
233 return 1
234 fi
235
236 if [ "${IS_ENCODE}" -eq "1" ]; then
237 echo -n "${TAG}: Encoding and verifying output"
238 else
239 echo -n "${TAG}: Decoding and verifying output"
240 fi
241
242 while read -r LINE
243 do
244 if [[ "${LINE:0:1}" == "#" ]]; then
245 continue
246 fi
247
248 echo -n "."
249 TEST_FILE="${LINE%%['\t' ]*}"
250 if [ -z "${TEST_FILE}" ]; then
251 echo "${TAG}: ERROR: Invalid test file/MD5SUM pair"
252 echo "${TAG}: ${NAME}: FAILED"
253 echo "[${TAG}]: test failed"
254 return 1
255 fi
256
257 # Remove the test file, leaving the MD5SUMs
258 LINE="${LINE#${TEST_FILE}}"
259
260 TEST_FILE="${DATA_DIR}/${TEST_FILE}"
261 if [ ! -f ${TEST_FILE} ]; then
262 echo "${TAG}: ERROR: test file '${TEST_FILE}' does not exist"
263 echo "${TAG}: ${NAME}: FAILED"
264 echo "[${TAG}]: test failed"
265 return 1
266 fi
267
268 local INDEX=0
269 local result=true
270 for EXPECTED_MD5SUM in ${LINE}; do
271 local cmd=""
272 if [ "${IS_ENCODE}" -eq "1" ]; then
273 cmd="${RUN} +M${INDEX} ${TEST_FILE} ${OUT_FILE}"
274 if [ "${VERBOSE}" -eq "1" ]; then
275 ${cmd}
276 else
Anders Roxelld0a77562022-11-23 14:09:05 +0100277 ${cmd} > /dev/null 2>&1
Chase Qi50842e52017-03-27 11:31:06 +0800278 fi
279 else
280 cmd="${RUN} ${TEST_FILE} ${OUT_FILE}"
281 if [ "${VERBOSE}" -eq "1" ]; then
282 ${cmd}
283 else
Anders Roxelld0a77562022-11-23 14:09:05 +0100284 ${cmd} > /dev/null 2>&1
Chase Qi50842e52017-03-27 11:31:06 +0800285 fi
286 fi
287 if [ "$?" -ne "0" ]; then
288 echo
289 echo "${TAG}: ${cmd}"
290 echo "${TAG}: ERROR: ${NAME} returned error"
291 result=false
292 continue
293 fi
294
Anders Roxellabd41ce2022-11-23 14:18:27 +0100295 local MD5SUM="$(func_md5 ${OUT_FILE})"
Chase Qi50842e52017-03-27 11:31:06 +0800296 MD5SUM="${MD5SUM%% *}"
297 if [[ "${MD5SUM}" != "${EXPECTED_MD5SUM}" ]]; then
298 echo
299 echo "${TAG}: ${cmd}"
300 echo "${TAG}: ERROR: incorrect MD5SUM '${MD5SUM}' (expected '${EXPECTED_MD5SUM}')"
301 result=false
302 continue
303 fi
304
305 ((INDEX++))
306 done
307 done < ${MD5SUM_FILE}
308 echo "done"
309
310 if [ -f ${OUT_FILE} ]; then
311 rm ${OUT_FILE}
312 fi
313
314 if $result; then
315 echo "${TAG}: ${NAME}: PASSED"
316 echo "[${TAG}]: test passed"
317 else
318 echo "${TAG}: ${NAME}: FAILED"
319 echo "[${TAG}]: test failed"
320 fi
321}
322
323run_speech_codec_amrnb_dec()
324{
325 local TAG="speech_codec_amrnb_dec"
326 local NAME="AMR NB decoder test"
327 local DATA_DIR="/data/linaro-android-userspace-test/speech-codec/amrnb"
328 local MD5SUM_FILE="${DATA_DIR}/MD5SUM.dec"
329
330 run_speech_codec 0 "${TAG}" "${NAME}" "${DATA_DIR}" "${MD5SUM_FILE}" "libstagefright_amrnbdec_test"
331 return $?
332}
333
334run_speech_codec_amrnb_enc()
335{
336 local TAG="speech_codec_amrnb_enc"
337 local NAME="AMR NB encoder test"
338 local DATA_DIR="/data/linaro-android-userspace-test/speech-codec/amrnb"
339 local MD5SUM_FILE="${DATA_DIR}/MD5SUM.enc"
340
341 run_speech_codec 1 "${TAG}" "${NAME}" "${DATA_DIR}" "${MD5SUM_FILE}" "libstagefright_amrnbenc_test"
342 return $?
343}
344
345run_speech_codec_amrwb_dec()
346{
347 local TAG="speech_codec_amrwb_dec"
348 local NAME="AMR WB decoder test"
349 local DATA_DIR="/data/linaro-android-userspace-test/speech-codec/amrwb"
350 local MD5SUM_FILE="${DATA_DIR}/MD5SUM.dec"
351
352 run_speech_codec 0 "${TAG}" "${NAME}" "${DATA_DIR}" "${MD5SUM_FILE}" "libstagefright_amrwbdec_test"
353 return $?
354}
355
356run_speech_codec_amrwb_enc()
357{
358 local TAG="speech_codec_amrwb_enc"
359 local NAME="AMR WB encoder test"
360 local DATA_DIR="/data/linaro-android-userspace-test/speech-codec/amrwb"
361 local MD5SUM_FILE="${DATA_DIR}/MD5SUM.enc"
362
363 run_speech_codec 1 "${TAG}" "${NAME}" "${DATA_DIR}" "${MD5SUM_FILE}" "libstagefright_amrwbenc_test"
364 return $?
365}
366
367run_video_codec_h264_dec()
368{
369 local TAG="video_codec_h264_dec"
370 local NAME="H.264 decoder test"
371 local DATA_DIR="/data/linaro-android-userspace-test/video-codec/h264"
372 local MD5SUM_FILE="${DATA_DIR}/MD5SUM.dec"
373 local RUN="libstagefright_h264dec_test"
374 local OUT_FILE="/data/local/tmp/video-codec-test.out"
375
376 echo
377 echo "${TAG}: Running ${NAME}"
378 if [ ! -f ${MD5SUM_FILE} ]; then
379 echo "${TAG}: ERROR: MD5SUM file '${MD5SUM_FILE}' does not exist"
380 echo "${TAG}: ${NAME}: FAILED"
381 echo "[${TAG}]: test failed"
382 return 1
383 fi
384
385 echo -n "${TAG}: Decoding and verifying output"
386
387 local TEST_FILE=""
388 local EXPECTED_MD5SUM=""
389 local LINE=0
390 while read -r TEST_FILE EXPECTED_MD5SUM
391 do
392 ((LINE++))
393
394 # Skip comment or empty lines
395 if [[ "${TEST_FILE:0:1}" == "#" ]] || [ -z "${TEST_FILE}" ]; then
396 continue
397 fi
398
399 echo -n "."
400 if [ -z "${EXPECTED_MD5SUM}" ]; then
401 echo "${TAG}: ERROR: invalid MD5SUM entry (${MD5SUM_FILE}:${LINE})"
402 echo "${TAG}: ${NAME}: FAILED"
403 echo "[${TAG}]: test failed"
404 return 1
405 fi
406
407 TEST_FILE="${DATA_DIR}/${TEST_FILE}"
408 if [ ! -f ${TEST_FILE} ]; then
409 echo "${TAG}: ERROR: test file '${TEST_FILE}' does not exist"
410 echo "${TAG}: ${NAME}: FAILED"
411 echo "[${TAG}]: test failed"
412 return 1
413 fi
414
415 if [ "${VERBOSE}" -eq "1" ]; then
416 ${RUN} -O${OUT_FILE} ${TEST_FILE}
417 else
Anders Roxelld0a77562022-11-23 14:09:05 +0100418 ${RUN} -O${OUT_FILE} ${TEST_FILE} > /dev/null 2>&1
Chase Qi50842e52017-03-27 11:31:06 +0800419 fi
420
421 if [ "$?" -ne "0" ]; then
422 echo
423 echo "${TAG}: ERROR: ${NAME} returned error for ${MD5SUM_FILE}:${LINE}"
424 echo "${TAG}: ${NAME}: FAILED"
425 echo "[${TAG}]: test failed"
426 return 1
427 fi
428
Anders Roxellabd41ce2022-11-23 14:18:27 +0100429 local MD5SUM="$(func_md5 ${OUT_FILE})"
Chase Qi50842e52017-03-27 11:31:06 +0800430 MD5SUM="${MD5SUM%% *}"
431 if [[ "${MD5SUM}" != "${EXPECTED_MD5SUM}" ]]; then
432 echo
433 echo "${TAG}: ERROR: incorrect MD5SUM '${MD5SUM}' (expected '${EXPECTED_MD5SUM}')"
434 echo "${TAG}: ${NAME}: FAILED"
435 echo "[${TAG}]: test failed"
436 return 1
437 fi
438 done < ${MD5SUM_FILE}
439 echo "done"
440
441 if [ -f ${OUT_FILE} ]; then
442 rm ${OUT_FILE}
443 fi
444
445 echo "${TAG}: ${NAME}: PASSED"
446 echo "[${TAG}]: test passed"
447 return $?
448}
449
450run_video_codec_h264_enc()
451{
452 local TAG="video_codec_h264_enc"
453 local NAME="H.264 encoder test"
454 local DATA_DIR="/data/linaro-android-userspace-test/video-codec/h264"
455 local MD5SUM_FILE="${DATA_DIR}/MD5SUM.enc"
456 local RUN="libstagefright_h264enc_test"
457 local OUT_FILE="/data/local/tmp/video-codec-test.out"
458
459 echo
460 echo "${TAG}: Running ${NAME}"
461 if [ ! -f ${MD5SUM_FILE} ]; then
462 echo "${TAG}: ERROR: MD5SUM file '${MD5SUM_FILE}' does not exist"
463 echo "${TAG}: ${NAME}: FAILED"
464 echo "[${TAG}]: test failed"
465 return 1
466 fi
467
468 echo -n "${TAG}: Encoding and verifying output"
469
470 local TEST_FILE=""
471 local OUT_WIDTH=""
472 local OUT_HEIGHT=""
473 local OUT_FRAMERATE=""
474 local OUT_BITRATE=""
475 local EXPECTED_MD5SUM=""
476 local LINE=0
477 local result=true
478 while read -r TEST_FILE OUT_WIDTH OUT_HEIGHT OUT_FRAMERATE OUT_BITRATE EXPECTED_MD5SUM
479 do
480 ((LINE++))
481
482 # Skip comment or empty lines
483 if [[ "${TEST_FILE:0:1}" == "#" ]] || [ -z "${TEST_FILE}" ]; then
484 continue
485 fi
486
487 echo -n "."
488
489 if [ -z "${OUT_WIDTH}" -o -z "${OUT_HEIGHT}" -o -z "${OUT_FRAMERATE}" -o -z "${OUT_BITRATE}" -o -z "${EXPECTED_MD5SUM}" ]; then
490 echo "${TAG}: ERROR: invalid MD5SUM entry (${MD5SUM_FILE}:${LINE})"
491 echo "${TAG}: ${NAME}: FAILED"
492 echo "[${TAG}]: test failed"
493 return 1
494 fi
495
496 TEST_FILE="${DATA_DIR}/${TEST_FILE}"
497 if [ ! -f ${TEST_FILE} ]; then
498 echo "${TAG}: ERROR: test file '${TEST_FILE}' does not exist"
499 echo "${TAG}: ${NAME}: FAILED"
500 echo "[${TAG}]: test failed"
501 return 1
502 fi
503 local cmd="${RUN} ${TEST_FILE} ${OUT_FILE} ${OUT_WIDTH} ${OUT_HEIGHT} ${OUT_FRAMERATE} ${OUT_BITRATE}"
504 if [ "${VERBOSE}" -eq "1" ]; then
505 $cmd
506 else
Anders Roxelld0a77562022-11-23 14:09:05 +0100507 ${cmd} > /dev/null 2>&1
Chase Qi50842e52017-03-27 11:31:06 +0800508 fi
509
510 if [ "$?" -ne "0" ]; then
511 echo
512 echo "${TAG}: ${cmd}"
513 echo "${TAG}: ERROR: ${NAME} returned error for ${MD5SUM_FILE}:${LINE}"
514 result=false
515 continue
516 fi
517
Anders Roxellabd41ce2022-11-23 14:18:27 +0100518 local MD5SUM="$(func_md5 ${OUT_FILE})"
Chase Qi50842e52017-03-27 11:31:06 +0800519 MD5SUM="${MD5SUM%% *}"
520 if [[ "${MD5SUM}" != "${EXPECTED_MD5SUM}" ]]; then
521 echo
522 echo "${TAG}: ${cmd}"
523 echo "${TAG}: ERROR: incorrect MD5SUM '${MD5SUM}' (expected '${EXPECTED_MD5SUM}')"
524 result=false
525 continue
526 fi
527 done < ${MD5SUM_FILE}
528 echo "done"
529
530 if [ -f ${OUT_FILE} ]; then
531 rm ${OUT_FILE}
532 fi
533
534 if ${result}; then
535 echo "${TAG}: ${NAME}: PASSED"
536 echo "[${TAG}]: test passed"
537 else
538 echo "${TAG}: ${NAME}: FAILED"
539 echo "[${TAG}]: test failed"
540 fi
541 return 0
542}
543
544run_video_codec_h263_dec()
545{
546 local TAG="video_codec_h263_dec"
547 local NAME="H.263 decoder test"
548 local DATA_DIR="/data/linaro-android-userspace-test/video-codec/h263"
549 local MD5SUM_FILE="${DATA_DIR}/MD5SUM.dec"
550 local RUN="libstagefright_m4vh263dec_test"
551 local OUT_FILE="/data/local/tmp/video-codec-test.out"
552
553 echo
554 echo "${TAG}: Running ${NAME}"
555 if [ ! -f ${MD5SUM_FILE} ]; then
556 echo "${TAG}: ERROR: MD5SUM file '${MD5SUM_FILE}' does not exist"
557 echo "${TAG}: ${NAME}: FAILED"
558 echo "[${TAG}]: test failed"
559 return 1
560 fi
561
562 echo -n "${TAG}: Decoding and verifying output"
563
564 local TEST_FILE=""
565 local OUT_WIDTH=""
566 local OUT_HEIGHT=""
567 local EXPECTED_MD5SUM=""
568 local LINE=0
569 while read -r TEST_FILE OUT_WIDTH OUT_HEIGHT EXPECTED_MD5SUM
570 do
571 ((LINE++))
572
573 # Skip comment or empty lines
574 if [[ "${TEST_FILE:0:1}" == "#" ]] || [ -z "${TEST_FILE}" ]; then
575 continue
576 fi
577
578 echo -n "."
579
580 if [ -z "${OUT_WIDTH}" -o -z "${OUT_HEIGHT}" -o -z "${EXPECTED_MD5SUM}" ]; then
581 echo "${TAG}: ERROR: invalid MD5SUM entry (${MD5SUM_FILE}:${LINE})"
582 echo "${TAG}: ${NAME}: FAILED"
583 echo "[${TAG}]: test failed"
584 return 1
585 fi
586
587 TEST_FILE="${DATA_DIR}/${TEST_FILE}"
588 if [ ! -f ${TEST_FILE} ]; then
589 echo "${TAG}: ERROR: test file '${TEST_FILE}' does not exist"
590 echo "${TAG}: ${NAME}: FAILED"
591 echo "[${TAG}]: test failed"
592 return 1
593 fi
594
595 if [ "${VERBOSE}" -eq "1" ]; then
596 ${RUN} ${TEST_FILE} ${OUT_FILE} ${OUT_WIDTH} ${OUT_HEIGHT}
597 else
Anders Roxelld0a77562022-11-23 14:09:05 +0100598 ${RUN} ${TEST_FILE} ${OUT_FILE} ${OUT_WIDTH} ${OUT_HEIGHT} > /dev/null 2>&1
Chase Qi50842e52017-03-27 11:31:06 +0800599 fi
600
601 if [ "$?" -ne "0" ]; then
602 echo
603 echo "${TAG}: ERROR: ${NAME} returned error for ${MD5SUM_FILE}:${LINE}"
604 echo "${TAG}: ${NAME}: FAILED"
605 echo "[${TAG}]: test failed"
606 return 1
607 fi
608
Anders Roxellabd41ce2022-11-23 14:18:27 +0100609 local MD5SUM="$(func_md5 ${OUT_FILE})"
Chase Qi50842e52017-03-27 11:31:06 +0800610 MD5SUM="${MD5SUM%% *}"
611 if [[ "${MD5SUM}" != "${EXPECTED_MD5SUM}" ]]; then
612 echo
613 echo "${TAG}: ERROR: incorrect MD5SUM '${MD5SUM}' (expected '${EXPECTED_MD5SUM}')"
614 echo "${TAG}: ${NAME}: FAILED"
615 echo "[${TAG}]: test failed"
616 return 1
617 fi
618 done < ${MD5SUM_FILE}
619 echo "done"
620
621 if [ -f ${OUT_FILE} ]; then
622 rm ${OUT_FILE}
623 fi
624
625 echo "${TAG}: ${NAME}: PASSED"
626 echo "[${TAG}]: test passed"
627 return $?
628}
629
630run_video_codec_h263_enc()
631{
632 local TAG="video_codec_h263_enc"
633 local NAME="H.263 encoder test"
634 local DATA_DIR="/data/linaro-android-userspace-test/video-codec/h263"
635 local MD5SUM_FILE="${DATA_DIR}/MD5SUM.enc"
636 local RUN="libstagefright_m4vh263enc_test"
637 local OUT_FILE="/data/local/tmp/video-codec-test.out"
638
639 echo
640 echo "${TAG}: Running ${NAME}"
641 if [ ! -f ${MD5SUM_FILE} ]; then
642 echo "${TAG}: ERROR: MD5SUM file '${MD5SUM_FILE}' does not exist"
643 echo "${TAG}: ${NAME}: FAILED"
644 echo "[${TAG}]: test failed"
645 return 1
646 fi
647
648 echo -n "${TAG}: Encoding and verifying output"
649
650 local TEST_FILE=""
651 local OUT_WIDTH=""
652 local OUT_HEIGHT=""
653 local OUT_FRAMERATE=""
654 local OUT_BITRATE=""
655 local EXPECTED_MD5SUM=""
656 local LINE=0
657 while read -r TEST_FILE OUT_WIDTH OUT_HEIGHT OUT_FRAMERATE OUT_BITRATE EXPECTED_MD5SUM
658 do
659 ((LINE++))
660
661 # Skip comment or empty lines
662 if [[ "${TEST_FILE:0:1}" == "#" ]] || [ -z "${TEST_FILE}" ]; then
663 continue
664 fi
665
666 echo -n "."
667 if [ -z "${OUT_WIDTH}" -o -z "${OUT_HEIGHT}" -o -z "${OUT_FRAMERATE}" -o -z "${OUT_BITRATE}" -o -z "${EXPECTED_MD5SUM}" ]; then
668 echo "${TAG}: ERROR: invalid MD5SUM entry (${MD5SUM_FILE}:${LINE})"
669 echo "${TAG}: ${NAME}: FAILED"
670 echo "[${TAG}]: test failed"
671 return 1
672 fi
673
674 TEST_FILE="${DATA_DIR}/${TEST_FILE}"
675 if [ ! -f ${TEST_FILE} ]; then
676 echo "${TAG}: ERROR: test file '${TEST_FILE}' does not exist"
677 echo "${TAG}: ${NAME}: FAILED"
678 echo "[${TAG}]: test failed"
679 return 1
680 fi
681
682 if [ "${VERBOSE}" -eq "1" ]; then
683 ${RUN} ${TEST_FILE} ${OUT_FILE} mpeg4 ${OUT_WIDTH} ${OUT_HEIGHT} ${OUT_FRAMERATE} ${OUT_BITRATE}
684 else
Anders Roxelld0a77562022-11-23 14:09:05 +0100685 ${RUN} ${TEST_FILE} ${OUT_FILE} mpeg4 ${OUT_WIDTH} ${OUT_HEIGHT} ${OUT_FRAMERATE} ${OUT_BITRATE} > /dev/null 2>&1
Chase Qi50842e52017-03-27 11:31:06 +0800686 fi
687
688 if [ "$?" -ne "0" ]; then
689 echo
690 echo "${TAG}: ERROR: ${NAME} returned error for ${MD5SUM_FILE}:${LINE}"
691 echo "${TAG}: ${NAME}: FAILED"
692 echo "[${TAG}]: test failed"
693 return 1
694 fi
695
Anders Roxellabd41ce2022-11-23 14:18:27 +0100696 local MD5SUM="$(func_md5 ${OUT_FILE})"
Chase Qi50842e52017-03-27 11:31:06 +0800697 MD5SUM="${MD5SUM%% *}"
698 if [[ "${MD5SUM}" != "${EXPECTED_MD5SUM}" ]]; then
699 echo
700 echo "${TAG}: ERROR: incorrect MD5SUM '${MD5SUM}' (expected '${EXPECTED_MD5SUM}')"
701 echo "${TAG}: ${NAME}: FAILED"
702 echo "[${TAG}]: test failed"
703 echo "${MD5SUM}" >> /sdcard/md5.txt
704 return 1
705 fi
706 done < ${MD5SUM_FILE}
707 echo "done"
708
709 if [ -f ${OUT_FILE} ]; then
710 rm ${OUT_FILE}
711 fi
712
713 echo "${TAG}: ${NAME}: PASSED"
714 echo "[${TAG}]: test passed"
715 return $?
716}
717
718run_tests() {
719 local RET=0
720 for TEST in $TESTS;
721 do
722 if [[ "${ALL_TESTS}" == *"${TEST}"* ]]; then
723 # Function names follow the naming convention of:
724 # run_<test_name>
725 run_${TEST}
726 RET=$(( RET + $? ))
727 else
728 echo
729 echo "Unrecognized test '${TEST}'"
730 usage
731 RET=$(( RET + 1 ))
732 break
733 fi
734 done
735 return ${RET}
736}
737
738# Terse output by default
739VERBOSE=0
740
741TESTS=""
742
743while getopts "hvt:" OPT
744do
745 case $OPT in
746 h)
747 usage
748 exit 1
749 ;;
750 t)
751 TESTS=$OPTARG
752 ;;
753 v)
754 VERBOSE=1
755 ;;
756 *)
757 usage
758 exit
759 esac
760done
761
762if [ -z "${TESTS}" ]; then
763 # Run all tests by default
764 TESTS="${ALL_TESTS}"
765 echo "Running all tests"
766else
767 # Expand out any batch tests
768 TESTS="${TESTS//${ALL_AUDIO_CODECS_OPT}/${ALL_AUDIO_CODECS}}"
769 TESTS="${TESTS//${ALL_SPEECH_CODECS_OPT}/${ALL_SPEECH_CODECS}}"
770 TESTS="${TESTS//${ALL_VIDEO_CODECS_OPT}/${ALL_VIDEO_CODECS}}"
771 TESTS="${TESTS//${ALL_CODECS_OPT}/${ALL_CODECS}}"
772 TESTS="${TESTS//${ALL_TESTS_OPT}/${ALL_TESTS}}"
773fi
774
775run_tests
776return $?