VERSION=tvgen-1.2
EPSPNG= gs -dQUIET -dNOPAUSE -dBATCH -sDEVICE=png16m
ASY=    asy
SCRIPT= tvgen.asy 
SOURCES=pal0.eps pal0e.eps pal1.eps pal1e.eps pal2.eps pal3.eps \
	pal4.eps pal5.eps pal6.eps pal7.eps \
	pal8.eps ntsc8.eps pal9.eps ntsc9.eps \
	pal10.eps ntsc10.eps pal11.eps pal12.eps
TARGETS=$(SOURCES:.eps=.png) 
TESTTONES=t1khz.wav t440hz.wav tzero.wav tall.wav
TESTAVIS=pal1.avi pal2.avi pal2il.avi pal3.avi pal7.avi ntsc10.avi pal11.avi
# Movie duration is 10 second at 25 Hz or 30 Hz framefrequency.
TFMS=250
TFXS=300
# 9 s tone and 1 s trailing zeros, samplefrequency is 48 kHz.
TTONES=432000s
TZEROS=48000s

all: eps png avi

avi: $(TESTAVIS)

clean:
	rm -f $(TESTAVIS)
	rm -f $(TESTTONES) $(TARGETS) $(SOURCES)
	rm -f divx2pass.log tmpz.wav card*.png

eps: $(SOURCES)

png: $(TARGETS)

wav: $(TESTTONES)

release: all
	(cd .. && tar czf $(VERSION).tgz $(VERSION))

.PHONY: all avi clean eps png release wav

.SUFFIXES:
.SUFFIXES: .asy .avi .eps .png .wav

# Test tone conventional amplitude.
# Broadcast VTR/VCR audio track (FS = full scale): 
#   nominal speech:         -9      dB FS
#   acceptable range:   -12 .. -6   dB FS
#   digital peak level:     -6      dB FS
#   test tone 1 kHz:       -20      dB FS
# CD recording:
#   digital peak level:     -0.0003 dB FS
#   test tone 1 kHz:       -14      dB peak
MENCODERILDCT=-audiofile tall.wav -af volume=-20 -oac pcm -ovc lavc \
	-lavcopts vcodec=mpeg4:mbd=2:trell:autoaspect:v4mv:ildct:ilme:vbitrate=3500:vpass=1
# The wdlive media player does line doubling when using ildct:ilme and 
# decodes, per frame, odd followed by even.  A single white line thus flickers 
# at the framefrequency.   
MENCODEROPTS=-audiofile tall.wav -af volume=-20 -oac pcm -ovc lavc \
	-lavcopts vcodec=mpeg4:mbd=2:trell:autoaspect:v4mv:vbitrate=3500:vpass=1

pal1.avi: pal1.png tall.wav
	for ((i=0; i<$(TFMS); i=i+1)); do ln -sf $< card$${i}.png; done
	mencoder -aspect 4/3 $(MENCODEROPTS) -o $@ mf://card*.png
	rm -f card*.png

pal2.avi: pal2.png tall.wav
	for ((i=0; i<$(TFMS); i=i+1)); do ln -sf $< card$${i}.png; done
	mencoder -aspect 15/11 $(MENCODEROPTS) -o $@ mf://card*.png
	rm -f card*.png

pal2il.avi: pal2.png tall.wav
	for ((i=0; i<$(TFMS); i=i+1)); do ln -sf $< card$${i}.png; done
	mencoder -aspect 15/11 $(MENCODERILDCT) -o $@ mf://card*.png
	rm -f card*.png

pal3.avi: pal3.png tall.wav
	for ((i=0; i<$(TFMS); i=i+1)); do ln -sf $< card$${i}.png; done
	mencoder -aspect 20/11 $(MENCODEROPTS) -o $@ mf://card*.png
	rm -f card*.png

pal7.avi: pal7.png tall.wav
	for ((i=0; i<$(TFMS); i=i+1)); do ln -sf $< card$${i}.png; done
	mencoder -aspect 16/9 $(MENCODEROPTS) -o $@ mf://card*.png
	rm -f card*.png

ntsc10.avi: ntsc10.png tall.wav
	for ((i=0; i<$(TFXS); i=i+1)); do ln -sf $< card$${i}.png; done
	mencoder -aspect 15/11 -mf fps=30 $(MENCODEROPTS) -o $@ mf://card*.png
	rm -f card*.png

pal11.avi: pal11.png tall.wav
	for ((i=0; i<$(TFMS); i=i+1)); do ln -sf $< card$${i}.png; done
	mencoder -aspect 16/9 $(MENCODEROPTS) -o $@ mf://card*.png
	rm -f card*.png

# test tone at 1000 Hz
t1khz.wav: /dev/zero Makefile
	sox -t raw -r 48000 -swc 1 $< tmpz.wav trim 0s $(TTONES)
	sox tmpz.wav $@ synth sine create 1000
	sox $@ tmpz.wav fade h 480s $(TTONES) 480s
	mv tmpz.wav $@

t440hz.wav: /dev/zero Makefile
	sox -t raw -r 48000 -swc 1 $< tmpz.wav trim 0s $(TTONES)
	sox tmpz.wav $@ synth sine create 440
	sox $@ tmpz.wav fade h 480s $(TTONES) 480s
	mv tmpz.wav $@

tzero.wav: /dev/zero Makefile
	sox -t raw -r 48000 -swc 1 $< $@ trim 0s $(TZEROS)

tall.wav: t1khz.wav tzero.wav
	sox $+ $@

# 625-line
pal0.eps: $(SCRIPT)
	$(ASY) -u bsys=0 -u colortv=1 -u os=1 -a Z -o $@ $<

pal0.png: pal0.eps
	$(EPSPNG) -r132x144 -g704x576 -sOutputFile=$@ $<

pal0e.eps: $(SCRIPT)
	$(ASY) -u bsys=0 -u colortv=1 -u os=2 -a Z -o $@ $<

pal0e.png: pal0e.eps
	$(EPSPNG) -r264x144 -g1408x576 -sOutputFile=$@ $<

pal1.eps: $(SCRIPT)
	$(ASY) -u bsys=1 -u colortv=1 -u os=1 -a Z -o $@ $<

pal1.png: pal1.eps
	$(EPSPNG) -r135x144 -g720x576 -sOutputFile=$@ $<

pal1e.eps: $(SCRIPT)
	$(ASY) -u bsys=1 -u colortv=1 -u os=8 -a Z -o $@ $<

pal1e.png: pal1e.eps
	$(EPSPNG) -r1080x144 -g5760x576 -sOutputFile=$@ $<

pal2.eps: $(SCRIPT)
	$(ASY) -u bsys=2 -u colortv=1 -u os=1 -a Z -o $@ $<

pal2.png: pal2.eps
	$(EPSPNG) -r132x144 -g720x576 -sOutputFile=$@ $<

pal3.eps: $(SCRIPT)
	$(ASY) -u bsys=3 -u colortv=1 -u os=1 -a Z -o $@ $<

pal3.png: pal3.eps
	$(EPSPNG) -r99x144 -g720x576 -sOutputFile=$@ $<

#625-line square dot
pal4.eps: $(SCRIPT)
	$(ASY) -u bsys=4 -u colortv=1 -u os=1 -a Z -o $@ $<

pal4.png: pal4.eps
	$(EPSPNG) -r144x144 -g768x576 -sOutputFile=$@ $<

pal5.eps: $(SCRIPT)
	$(ASY) -u bsys=5 -u colortv=1 -u os=1 -a Z -o $@ $<

pal5.png: pal5.eps
	$(EPSPNG) -r144x144 -g768x576 -sOutputFile=$@ $<

pal6.eps: $(SCRIPT)
	$(ASY) -u bsys=6 -u colortv=1 -u os=1 -a Z -o $@ $<

pal6.png: pal6.eps
	$(EPSPNG) -r144x144 -g786x576 -sOutputFile=$@ $<

pal7.eps: $(SCRIPT)
	$(ASY) -u bsys=7 -u colortv=1 -u os=1 -a Z -o $@ $<

pal7.png: pal7.eps
	$(EPSPNG) -r90x128 -g720x576 -sOutputFile=$@ $<

#525-line
pal8.eps: $(SCRIPT)
	$(ASY) -u bsys=8 -u colortv=1 -u os=1 -a Z -o $@ $<

pal8.png: pal8.eps
	$(EPSPNG) -r132x120 -g704x480 -sOutputFile=$@ $<

ntsc8.eps: $(SCRIPT)
	$(ASY) -u bsys=8 -u colortv=2 -u os=1 -a Z -o $@ $<

ntsc8.png: ntsc8.eps
	$(EPSPNG) -r132x120 -g704x480 -sOutputFile=$@ $<

pal9.eps: $(SCRIPT)
	$(ASY) -u bsys=9 -u colortv=1 -u os=1 -a Z -o $@ $<

pal9.png: pal9.eps
	$(EPSPNG) -r135x120 -g720x480 -sOutputFile=$@ $<

ntsc9.eps: $(SCRIPT)
	$(ASY) -u bsys=9 -u colortv=2 -u os=1 -a Z -o $@ $<

ntsc9.png: ntsc9.eps
	$(EPSPNG) -r135x120 -g720x480 -sOutputFile=$@ $<

pal10.eps: $(SCRIPT)
	$(ASY) -u bsys=10 -u colortv=1 -u os=1 -a Z -o $@ $<

pal10.png: pal10.eps
	$(EPSPNG) -r132x120 -g720x480 -sOutputFile=$@ $<

ntsc10.eps: $(SCRIPT)
	$(ASY) -u bsys=10 -u colortv=2 -u os=1 -a Z -o $@ $<

ntsc10.png: ntsc10.eps
	$(EPSPNG) -r132x120 -g720x480 -sOutputFile=$@ $<

#1250-line 1920x1080
pal11.eps: $(SCRIPT)
	$(ASY) -u bsys=11 -u colortv=1 -u os=1 -a Z -o $@ $<

pal11.png: pal11.eps
	$(EPSPNG) -r270x270 -g1920x1080 -sOutputFile=$@ $<

#1250-line 1600x1200
pal12.eps: $(SCRIPT)
	$(ASY) -u bsys=12 -u colortv=1 -u os=1 -a Z -o $@ $<

pal12.png: pal12.eps
	$(EPSPNG) -r300x300 -g1600x1200 -sOutputFile=$@ $<

$(SCRIPT): 
	@echo "Error: source $@ not found"
	@exit 1
