#! /bin/sh

# Script to convert an image file into an AVI file which can be used as a 
# background video for audio playback on *MoviX*.
# Requires a mencoder version of at least 1.0pre1 (with small syntax changes,
# it should work with older versions, too). Also uudecode and "composite" from
# the ImageMagick package.

# Parameter $1: name of an image file

# Output: movix.music.avi 

# how many frames are necessary for a well-working mplayer background video
FRAMES=50

# which format to convert to (png or jpeg)
BGFORMAT=jpeg

if [ $# != 1 ]; then
	echo "Usage: $0 /path/to/imagefile"
	exit 1
fi

if [ -e movix.music.avi ]; then
	echo "movix.music.avi already exists, exiting."
	exit 2
fi

if [ -e "$1" ]; then
# file is there
	tempdir=`mktemp -d /tmp/image2bgavi.XXXXXXXXXX`

	# Create the background JPEG so GIF images can be converted
	echo "begin-base64 644 black.jpg.gz
H4sICDKj8T8CA2JsYWNrLmpwZwD7f+P/AwYBLzdPNwZGRkYGDyBk+P+PQdy5
KDWxJDVFoTyzJEMhJCNVwd3TN+D/bQZnBg42NnY2Vg52dnZOTg4uHhFeHm5u
HkkhYX4RWSl5OVkpGRkFFT11BSUdZRkZDXNNHQNDExMTeXVLWwsjGz1jEyOQ
IYycnJw83DwSvLwSRooyikYkg/8HGAQ5GB8wNTAzKjEwCTIyCzL+P8IgBvYD
CmDiAIpLCjCCAZI4MyOToCFQShRDBwPIJHFBRnQJoIb/txh4mBmB9jELMtgz
nH/AMApGwSgYBaNgFAxtwPRa77HvXONzm99VNeZs+tTAQa5BesXvrpw8b/u6
Ln31nLuRKm8X/78JAAWipYxkCAAA
====
" > "$tempdir/black.uu"

	cat "$tempdir/black.uu" | uudecode -o "$tempdir/black.jpg.gz"
	gunzip "$tempdir/black.jpg.gz"

	#convert -verbose -colorspace RGB "$1" 
	composite -gravity center -resize 640x480 -quality 90 "$1" "$tempdir/black.jpg" "$tempdir/bg.$BGFORMAT"

	if [ -e "$tempdir/bg.$BGFORMAT" ] ; then

		#display "$tempdir/bg.$BGFORMAT"
	
		for i in `seq 1 $FRAMES`; do
			ln -s "$tempdir/bg.$BGFORMAT" "$tempdir/bg-$i.$BGFORMAT"
		done

		mencoder -ovc lavc \
			-vf format=bgr24,scale=640:480 \
			-o movix.music.avi \
			"mf://$tempdir/bg-*.$BGFORMAT" \
			2>&1 > /dev/null

		ls -la movix.music.avi
	else
		"The image file couldn't be converted."
	fi
	rm -rf "$tempdir"
else
	echo "$1 not found!"
	exit 4
fi
