# Squeak Ogg vorbis / speex test programs

LIBS=  -lvorbis -logg -lvorbisenc -lspeex
OBJS= vdecode buftest vencode dump sdecode sencode packet badpointer

all: $(OBJS)

% : %.c sqOgg.o
	gcc -Wall -ggdb3 -o $@ $< sqOgg.o $(LIBS) -I..

sqOgg.o : ../sqOgg.c
	gcc -Wall -ggdb3 -c -o $@ $<

clean : testclean
	-rm $(OBJS) sqOgg.o
	-rm *.exe

testclean :
	-rm *.raw
	-rm *.ogg
	-rm *.spx
	-rm test.*

test: vtest stest misctest segfaulttest

# Even if bad data is given, a decoder finishes silently.
segfaulttest: packet vdecode sdecode
	./vdecode test.ogg test.raw ; test $$? -eq 253
	./sdecode test.ogg test.raw ; test $$? -eq 253
	@echo "Success."

misctest: packet buftest
	./packet
	./buftest

# Encode / Decode test script
#
# These scripts assume the sound file named "sound.wav" as source.
# Please make it before "make test"
# e.g.
# $ cp /cygdrive/c/WINDOWS/Media/tada.wav sound.wav
# $ cp /usr/share/sounds/startup3.wav sound.raw

# Prepare test data
sound1.raw : sound.wav
	sox $< -r 44100 -c 2 $@
sound2.raw : sound.wav
	sox $< -r 11025 -c 1 $@
sound3.raw : sound.wav
	sox $< -r 16000 -c 1 $@

# vorbis test
vtest: vencode vdecode vtest1 vtest2 vtest3 
# %.ogg.raw : %.ogg vdecode
%.ogg.raw: %.ogg
	./vdecode $< $@

# vorbis 44100 Hz 2ch
sound1.ogg : sound1.raw
	./vencode 44100 2 $< $@

vtest1 : sound1.ogg.raw
	./play.sh 44100 2 $<

# vorbis 11025 Hz 1ch
sound2.ogg : sound2.raw
	./vencode 11025 1 $< $@

vtest2 : sound2.ogg.raw
	./play.sh 11025 1 $<

# vorbis 16000 Hz 1ch
sound3.ogg : sound3.raw
	./vencode 16000 1 $< $@

vtest3 : sound3.ogg.raw
	./play.sh 16000 1 $<

# speex test
stest: sencode sdecode stest2 stest3
%.spx.raw: %.spx
	./sdecode $< $@

# speex 11025 Hz 1ch
sound2.spx : sound2.raw
	./sencode 11025 1 $< $@

stest2 : sound2.spx.raw
	./play.sh 11025 1 $<

# speex 16000 Hz 1ch
sound3.spx : sound3.raw
	./sencode 16000 1 $< $@

stest3 : sound3.spx.raw
	./play.sh 16000 1 $<
