#!/bin/bash

echo "================================================================================================================================================"
echo "####### CUBOIDS extractor (C++) cub02 offline version"
echo "================================================================================================================================================"

if [[ -z ${BINDIR} ]] ; then
	echo "$0: you need to set BINDIR environment variable."
	exit 3
fi



INPUT=
PARAMS=
OUTPUT=

while getopts "i:p:o:" flag
do
	case "${flag}" in
		i) INPUT=${OPTARG};;
		p) PARAMS=${OPTARG};;
		o) OUTPUT=${OPTARG};;
		?) exit 1
	esac
done

if [[ -z ${INPUT} ]] || [[ -z ${OUTPUT} ]] ; then
     echo "$0: not enough parameters."
     exit 2
fi

TEMP=$(mktemp -t)


echo "$0: INPUT=${INPUT}"
echo "$0: PARAMS=${PARAMS}"
echo "$0: OUTPUT=${OUTPUT}"
echo "$0: TEMP=${TEMP}"

RETURN=0

ISBLAME=`perl -e "if(\"${PARAMS}\" =~ /.*blame.*/ ){print \"YES\";}else{print \"NO\";}"`
echo "ISBLAME: $ISBLAME"

if [ $ISBLAME == "NO" ] ; then


    WIDTH=`ffmpeg -i ${INPUT} -f null -an -vn ofile.meta 2>&1|grep Video|cut -d',' -f3|cut -d' ' -f2 |cut -d'x' -f1`
    HEIGHT=`ffmpeg -i ${INPUT} -f null -an -vn ofile.meta 2>&1|grep Video|cut -d',' -f3|cut -d' ' -f2 |cut -d'x' -f2`
    ffmpeg -i ${INPUT} -f rawvideo -pix_fmt gray -dframes 1 -an -y /dev/stdout | ${BINDIR}/spacetime/spacetime.x64 -width=$WIDTH -height=$HEIGHT ${PARAMS} >${TEMP}


    FE=0
else
    echo "$0: features extracted [blame]"
    FE=0
fi

if [ $FE -eq 0 ] ; then
	echo "$0: features extracted"

	if [ ! -s "${TEMP}" ]  ; then
		rm -f "${TEMP}";
	fi

	if [ ! -s "${TEMP}"* ]  ; then
		cat >> "${TEMP}" <<-EOD
			128
			0
		EOD
	fi

	if [ $ISBLAME == "NO" ] ; then
	
	    #first convert from stip format and then put to manipulatefv
	    cat ${TEMP} |"${BINDIR}"/manipulateFV fromLIBSVM -o "${OUTPUT}"
        
    	    if [ -e ${OUTPUT} ] ; then
		echo "$0: conversion into FV format done"
	    else
		echo "$0: error occured while converting features into FV format"
		RETURN=11
	    fi
	else
            echo -e -n "FeatureVectorFile2.0\0000\0000\0000\0000\0000\0000\0000\0000" >${OUTPUT}
            echo "$0: blank fv file stored"
	fi
else
	echo "$0: error occured while extracting features"
	RETURN=10
fi

rm -f "${TEMP}"*

echo "$0: done, returning ${RETURN}..."
echo "================================================================================================================================================"

exit ${RETURN}
