#!/bin/bash

file="$1"
ext=${file##*.}
ext=`echo $ext | tr "[:upper:]" "[:lower:]"`

if [ "$ext" = "mp3" -o "$ext" = "mp2" ]; then
    wavtmp=`mktemp` && \
    mpg123 -q -m -w "$wavtmp" "$1" && \
    hz=`file "$wavtmp" | sed "s/.*, \(.*\) \(.*\) \(.*\)/\2/g"` && \
    if [ "$hz" = "$3" ]; then
        sox -t wav "$wavtmp" -l -f -t raw "$2"
    else
        sox -t wav "$wavtmp" -r $3 -l -f -t raw "$2" rate
    fi
    ret=$?

    rm -f "$wavtmp"
    exit $ret

elif [ "$ext" = "ogg" ]; then
    wavtmp=`mktemp` && \
    ogg123 -q -d wav -f  "$wavtmp" "$1" && \
    hz=`file "$wavtmp" | sed "s/.*, \(.*\) \(.*\) \(.*\)/\2/g"` && \
    if [ "$hz" = "$3" ]; then
        sox -t wav "$wavtmp" -c 1 -l -f -t raw "$2"
    else
        sox -t wav "$wavtmp" -c 1 -r $3 -l -f -t raw "$2" rate
    fi
    ret=$?

    rm -f "$wavtmp"
    exit $ret

elif [ "$ext" = "wav" ]; then
    hz=`file "$1" | sed "s/.*, \(.*\) \(.*\) \(.*\)/\2/g"` && \
    if [ "$hz" = "$3" ]; then
        sox -t wav "$1" -c 1 -l -f -t raw "$2"
    else
        sox -t wav "$1" -c 1 -r $3 -l -f -t raw "$2" rate
    fi
    ret=$?

    exit $ret
elif [ "$ext" = "aac" -o "$ext" = "m4a" ]; then
    wavtmp=`mktemp` && \
    faad -o "$wavtmp" -d "$1" && \
    hz=`file "$wavtmp" | sed "s/.*, \(.*\) \(.*\) \(.*\)/\2/g"` && \
    if [ "$hz" = "$3" ]; then
        sox -t wav "$wavtmp" -c 1 -l -f -t raw "$2"
    else
        sox -t wav "$wavtmp" -c 1 -r $3 -l -f -t raw "$2" rate
    fi
    ret=$?

    rm -f "$wavtmp"
    exit $ret
elif [ "$ext" = "flac" ]; then
    wavtmp=`mktemp` && \
    flac -f -d -o "$wavtmp" "$1" && \
    hz=`file "$wavtmp" | sed "s/.*, \(.*\) \(.*\) \(.*\)/\2/g"` && \
    if [ "$hz" = "$3" ]; then
        sox -t wav "$wavtmp" -c 1 -l -f -t raw "$2"
    else
        sox -t wav "$wavtmp" -c 1 -r $3 -l -f -t raw "$2" rate
    fi
    ret=$?

    rm -f "$wavtmp"
    exit $ret

else
    echo "mir-decoder: Unsupported audio file format: $1"

    exit -1
fi

