#!/bin/sh

VIDEO=${1}

DEFAULT_USER=odroid
DEFAULT_UID=$(id -u ${DEFAULT_USER})

VIDEO_FORMAT=$(mediainfo --Inform="Video;%Format%" "${VIDEO}")
AUDIO_FORMAT=$(mediainfo --Inform="Audio;%Format%" "${VIDEO}")

# Currently available containers : QuickTime, Matroska, Avi
case "$VIDEO" in
	*.mp4 | *.mov | *.qt)
		XDEMUX=amlqtdemux
		;;
	*.mkv | *.webm)
		XDEMUX=matroskademux
		;;
	*.avi)
		XDEMUX=avidemux
		;;
	*)
		echo "No available container found: ${VIDEO##*.}"
		exit 1
		;;
esac

# Currently available codecs : H.264, H.265, AV1, VP9, MPEG-4
XEXTRA=
case "$VIDEO_FORMAT" in
	AVC)
		XCODEC=h264
		;;
	HEVC)
		XCODEC=h265
		;;
	AV1)
		XCODEC=av1
		;;
	VP9 | vp09)
		XCODEC=vp9
		;;
	MPEG-4*)
		XCODEC=mpeg4
		XEXTRA=video
		;;
	*)
		echo "No available codec found: $VIDEO_FORMAT"
		exit 1
		;;
esac

GSTREAMER_PIPELINE="filesrc location=\"${VIDEO}\""
GSTREAMER_PIPELINE="${GSTREAMER_PIPELINE} ! ${XDEMUX} name=demux"
if [ ! -z "$AUDIO_FORMAT" ]; then
	GSTREAMER_PIPELINE="${GSTREAMER_PIPELINE} demux.audio_0 ! queue ! decodebin"
	GSTREAMER_PIPELINE="${GSTREAMER_PIPELINE} ! audioconvert ! audioresample ! amlhalasink"
fi
GSTREAMER_PIPELINE="${GSTREAMER_PIPELINE} demux.video_0 ! queue ! ${XCODEC}${XEXTRA}parse"
GSTREAMER_PIPELINE="${GSTREAMER_PIPELINE} ! amlv4l2${XCODEC}dec ! amlvideosink"

sudo \
	AML_AV_SYNC_TYPE=3 \
	GST_DEBUG_FILE=/var/log/gst.log \
	GST_DEBUG_NO_COLOR=1 \
	GST_DEBUG=4 \
	GST_DEFAULT_V4L2_BUF_MODE=DMA_BUF_IMPORT \
	TSPLAYER_PRINTF_LEVEL_XCODEC=4 \
	VIDEO_RENDER_COMPOSITOR=weston \
	VIDEO_RENDER_LIMIT_SEND_FRAME=1 \
	VIDEO_RENDER_LOG_LEVEL=6 \
	VIDEO_RENDER_SEND_PTS_TO_WESTON=0 \
	XDG_RUNTIME_DIR=/run/user/${DEFAULT_UID} \
	vendor_mediasync_debug_level=4 \
	vendor_mediasync_show_firstframe_nosync=0 \
	gst-launch-1.0 ${GSTREAMER_PIPELINE}
