#!/bin/bash
XMLMENU="menu.xml" 
BACKIMG="pozadi.jpg"
NAVPNG="navigation.png"
RESULT="menu.mpg"	

TMPFILE="tmpfile"
#	Funkce, která testuje existenci výsledného souboru
TestFile()
{
	if ! [[ -f ${1} ]]; then echo ${2}; exit 1; fi
}
# 	----------------

#	Script vytváření menu systému DVD disku
#	Požaduje:
#	1.) 	
#	XML definici menu. Základní definice může vypadat takto
#
#		<subpictures>
#		    <stream>
#        		<spu start="00:00:00.00" end="00:01:00.00" highlight="navigation.png"
#                		select="navigation.png"
#		                force="yes"
#       	 	        autooutline="infer" outlinewidth="1"
#               	 	autoorder="rows" >
#		        </spu>
#		    </stream>
#		</subpictures>
TestFile ${XMLMENU} "ERROR: XML definition for menu ( ${XMLMENU}) not found.." 1

#	2.) 
#	Požaduje obrázek ze kterého následně vytvoří podkladový
TestFile ${BACKIMG} "ERROR: Backgroud image ${BACKIMG} not found.." 2

#	3.)
#	Požaduje definici navigační mapy. Navigační obrázek ve formátu PNG, 
#	Toto PNG musí být uloženo jako 4 barevná indexovaná palety. 
TestFile ${NAVPNG} "ERROR: PNG navigation map image (4 colors indexed) ${NAVPNG} not found.." 3

#	----------------------------------------------------------------------
#	Začneme převedením jpeg pozadí na stream mpeg2-es
# 	Generujeme 25 snímků normy pal
jpeg2yuv -n 25 -I p -f 25 -j ${BACKIMG} | mpeg2enc -n p -f 8 -o ${TMPFILE}.m2v
# 	Test výsledku
TestFile ${TMPFILE}.m2v "ERROR: Nepodařilo se vytvořit mpg strem pro menu background ( ${TMPFILE}.m2v ).." 4

#	Vytvoříme si 1s (25 snímků) dlouhé ticho. Pokud bych chtěl multiplexovat hudbu, tak ji použiji místo ticha.
arecord -f dat -twav -d 1 ${TMPFILE}.wav && mp2enc -r 48000 -o ${TMPFILE}.mp2 < ${TMPFILE}.wav
TestFile ${TMPFILE}.m2v "ERROR: Nepodařilo se vytvořit zvukový stream.. ( ${TMPFILE}.m2v ).." 5

# 	Multiplexujeme menu strem s menu zvukem
mplex -f 8 -o /dev/stdout ${TMPFILE}.m2v ${TMPFILE}.mp2 > ${TMPFILE}.mpg
TestFile ${TMPFILE}.mpg "ERROR: Nepodařilo se vytvořit multiplexovaný stream pro podklad menu!" 6

# 	Multiplexujeme menu stream s navigační mapou a vytvořím výsledný soubor 
spumux ${XMLMENU} < ${TMPFILE}.mpg > ${RESULT}
TestFile ${RESULT} "ERROR: Nepodařilo se vytvořit výsledný soubor menu streamu.." 7

# 	Končíme, je to tady OK
exit 0 
