#!/usr/bin/env sh

# ffmpeg 2-pass wrapper
# rewrites ffmpeg commands to use 2-pass encoding

key="$(tr -cd 'a-z0-9' < /dev/urandom | dd bs=10 count=1 2> /dev/null)"

error() { echo "$@" && exit 1; }
announce() { echo "$@"; "$@"; }

case "$1" in
	*ffmpeg*);;
	*) error 'Not a valid ffmpeg command'
esac

# isolate final opt
eval final_opt=\"\${$#}\"
for f in "$@"; do
	shift
	[ "$f" = "$final_opt" ] && continue
	set -- "$@" "$f"
done

on_exit() { rm -fv $key*.log; }
trap on_exit 0 1 2 3 6 15

for f in 1 2; do case $f in
	1) announce "$@" -passlogfile $key -pass $f -f null /dev/null;;
	2) announce "$@" -passlogfile $key -pass $f "$final_opt";;
esac; done