#! /bin/sh # test libgsm's encoding/decoding case "$1" in gen) # generate input files from intro.wav # 16 bit signed linear sox intro.wav -r 8000 -c 1 -2 -s -t raw intro.l # 8 bit u-law sox intro.wav -r 8000 -c 1 -1 -U -t raw intro.u # 8 bit A-law sox intro.wav -r 8000 -c 1 -1 -A -t raw intro.A # Sun 8 bit u-law with header sox intro.wav -r 8000 -c 1 -1 intro.au # Make reference encoded files toast -c intro.l > intro.l.gsm toast -c intro.u > intro.u.gsm toast -c intro.A > intro.A.gsm toast -c intro.au > intro.au.gsm # decode best-quality gsm encoding to all output formats tcat -l intro.l.gsm > intro.l.out tcat -u intro.l.gsm > intro.u.out tcat -a intro.l.gsm > intro.A.out tcat -s intro.l.gsm > intro.au.out ;; test) set -e toast -c intro.l | cmp - intro.l.gsm toast -c intro.u | cmp - intro.u.gsm toast -c intro.A | cmp - intro.A.gsm toast -c intro.au | cmp - intro.au.gsm tcat -l intro.l.gsm | cmp - intro.l.out tcat -u intro.l.gsm | cmp - intro.u.out tcat -a intro.l.gsm | cmp - intro.A.out tcat -s intro.l.gsm | cmp - intro.au.out ;; clean) # Leave intro.l cos the webpage points to it rm intro.{u,A,au}{,.{gsm,out}} exit $? ;; *) echo "Usage: $0 [gen|test|clean]" 1>&2 exit 1 ;; esac