#!/bin/bash -e
echo >&2 "`basename $0` does not work yet!  at least, not reliably"
if [ "$#" = 0 -o "${1#-}" != "$1" -o -e "$1" ]; then
	echo >&2 "usage: `basename $0` out.ext in1.ext in2.ext ..."
	if [ -e "$1" ]; then
		echo >&2 "output file already exists: $1"
	fi
	exit 1
fi

: ${audiorate:=44100}
out="$1"; shift

d=`temp -d`
I=1
for A; do
	n=`printf %08d $I`
	mkfifo "$d/temp$n.a"
	mkfifo "$d/temp$n.v"
	I=$[$I+1]
done
mkfifo "$d/all.a"
mkfifo "$d/all.v"

I=1
for A; do
	echo "starting 2 ffmpeg processes to decode: $A"
	n=`printf %08d $I`
	ffmpeg -i "$A" -vn -f u16le -acodec pcm_s16le -ac 2 -ar "$audiorate" - > "$d/temp$n.a" < /dev/null &
	ffmpeg -i "$A" -an -f yuv4mpegpipe - > "$d/temp$n.v" < /dev/null &
	I=$[$I+1]
done

#sleep 5

cat "$d"/temp*.a > "$d/all.a" &
cat "$d"/temp*.v > "$d/all.v" &

#sleep 1

echo "starting ffmpeg process to encode: $out"
ffmpeg -f u16le -acodec pcm_s16le -ac 2 -ar "$audiorate" -i "$d/all.a" -f yuv4mpegpipe -i "$d/all.v" -sameq -y "$out"

rm -rf "$d"
