#!/bin/bash

function batchConvertFLAC() {
	IFS=$'\n'
	INPUT_EXT="${1:-.flac}"
	INPUT_DIR="${2:-./}"
	OUT_DIR="${3:-./output}"
	if [[ "${INPUT_DIR: -1}" != "/" ]]; then
		INPUT_DIR="$INPUT_DIR/"
	fi
	if [[ "${OUT_DIR: -1}" != "/" ]]; then
		OUT_DIR="$OUT_DIR/"
	fi

	if [[ ! -e "$OUT_DIR" ]]; then
		mkdir -pv "$OUT_DIR"
	fi
	
	jMax=${JOBS:-4};
	
	pids=()
	FROM="$(readlink -f "$INPUT_DIR")/"
	TO="$(readlink -f "$OUT_DIR")/"
	(
		cd "$FROM"
		for FLAC in *$INPUT_EXT; do
			echo "Converting '$INPUT_DIR$FLAC'..."
			while [[ "$(jobs -r | wc -l)" -ge $jMax ]]; do
				sleep 0.1
			done
			IN_FILE="$FLAC"
			OUT_FILE="$TO${FLAC/.flac/.m4a}"
			#echo "$OUT_FILE"
			ffmpeg -i "$IN_FILE" -n -ab 192k -vn "$OUT_FILE" &>/dev/null &
			pids[${i}]=$!
		done
		for PID in ${pids[@]}; do
			wait $PID
		done
		echo "done."
	)
}
#complete -F _minimal batchConvert