# @name TI Transcode Tests
# @desc Test functionality of Texas Instruments' decoders and encoders
# @requires tidec
# @setup_requires

TI_S_FUNC_GST_TRANSCODE_FPS_BBB_1080p60_30s_H264 source 'ti_codecs.sh'; get_media decoder SDK_Release_Streams/bbb_1080p60_30s.h264; INPUT=$(mktemp); cp /usr/share/ti/tidec-decode/bbb_1080p60_30s.h264 $INPUT; F=$(mktemp); gst-launch-1.0 filesrc location=$INPUT ! h264parse ! v4l2h264dec capture-io-mode=dmabuf ! queue ! v4l2h265enc output-io-mode=dmabuf-import ! fpsdisplaysink text-overlay=false video-sink="fakesink sync=true" -v > $F || die "Transcode operation did not complete successfully"; FPS=`cat ${F} | grep average | tail -1 | awk -F"average: " '{print $2}' | awk -F"," '{print $1}'`; echo $FPS | grep 60 || die "fps mismatch w.r.t input file"; remove_media decoder

TI_S_FUNC_GST_TRANSCODE_FPS_BBB_1080p60_30s_H265 source 'ti_codecs.sh'; get_media decoder SDK_Release_Streams/bbb_1080p60_30s.h265; INPUT=$(mktemp); cp /usr/share/ti/tidec-decode/bbb_1080p60_30s.h265 $INPUT; F=$(mktemp); gst-launch-1.0 filesrc location=$INPUT ! h265parse ! v4l2h265dec capture-io-mode=dmabuf ! queue ! v4l2h264enc output-io-mode=dmabuf-import ! fpsdisplaysink text-overlay=false video-sink="fakesink sync=true" -v > $F || die "Transcode operation did not complete successfully";FPS=`cat ${F} | grep average | tail -1 | awk -F"average: " '{print $2}' | awk -F"," '{print $1}'`; echo $FPS | grep 60 || die "fps mismatch w.r.t input file"; remove_media decoder

TI_S_FUNC_GST_TRANSCODE_FPS_BBB_1080p30_30s_H264 source 'ti_codecs.sh'; get_media decoder SDK_Release_Streams/bbb_1080p30_30s.h264; INPUT=$(mktemp); cp /usr/share/ti/tidec-decode/bbb_1080p30_30s.h264 $INPUT;F=$(mktemp); gst-launch-1.0 filesrc location=$INPUT ! h264parse ! v4l2h264dec capture-io-mode=dmabuf ! queue ! v4l2h265enc output-io-mode=dmabuf-import ! fpsdisplaysink text-overlay=false video-sink="fakesink sync=true" -v > $F || die "Transcode operation did not complete successfully";FPS=`cat ${F} | grep average | tail -1 | awk -F"average: " '{print $2}' | awk -F"," '{print $1}'`; echo $FPS | grep 30 || die "fps mismatch w.r.t input file"; remove_media decoder

TI_S_FUNC_GST_TRANSCODE_FPS_BBB_1080p30_30s_H265 source 'ti_codecs.sh'; get_media decoder SDK_Release_Streams/bbb_1080p30_30s.h265; INPUT=$(mktemp); cp /usr/share/ti/tidec-decode/bbb_1080p30_30s.h265 $INPUT; F=$(mktemp); gst-launch-1.0 filesrc location=$INPUT ! h265parse ! v4l2h265dec capture-io-mode=dmabuf ! queue ! v4l2h264enc output-io-mode=dmabuf-import ! fpsdisplaysink text-overlay=false video-sink="fakesink sync=true" -v > $F || die "Transcode operation did not complete successfully";FPS=`cat ${F} | grep average | tail -1 | awk -F"average: " '{print $2}' | awk -F"," '{print $1}'`; echo $FPS | grep 30 || die "fps mismatch w.r.t input file"; remove_media decoder

TI_S_FUNC_GST_TRANSCODE_FPS_BBB_4kp30_30s_H264 source 'ti_codecs.sh'; get_media decoder SDK_Release_Streams/bbb_4kp30_30s.h264; INPUT=$(mktemp); cp /usr/share/ti/tidec-decode/bbb_4kp30_30s.h264 $INPUT; F=$(mktemp); gst-launch-1.0 filesrc location=$INPUT ! h264parse ! v4l2h264dec capture-io-mode=dmabuf ! queue ! v4l2h265enc output-io-mode=dmabuf-import ! fpsdisplaysink text-overlay=false video-sink="fakesink sync=true" -v > $F || die "Transcode operation did not complete successfully";FPS=`cat ${F} | grep average | tail -1 | awk -F"average: " '{print $2}' | awk -F"," '{print $1}'`; echo $FPS | grep 30 || die "fps mismatch w.r.t input file"; remove_media decoder

TI_S_FUNC_GST_TRANSCODE_FPS_BBB_4kp30_30s_H265 source 'ti_codecs.sh'; get_media decoder SDK_Release_Streams/bbb_4kp30_30s.h265; INPUT=$(mktemp); cp /usr/share/ti/tidec-decode/bbb_4kp30_30s.h265 $INPUT; F=$(mktemp); gst-launch-1.0 filesrc location=$INPUT ! h265parse ! v4l2h265dec capture-io-mode=dmabuf ! queue ! v4l2h264enc output-io-mode=dmabuf-import ! fpsdisplaysink text-overlay=false video-sink="fakesink sync=true" -v > $F || die "Transcode operation did not complete successfully";FPS=`cat ${F} | grep average | tail -1 | awk -F"average: " '{print $2}' | awk -F"," '{print $1}'`; echo $FPS | grep 30 || die "fps mismatch w.r.t input file"; remove_media decoder
