Files
ampere-fourier/phase3_scripts/safe_probe.sh
T

27 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
# Safe baseline probe — only the 3 codecs that should work on this kernel.
# HEVC SKIPPED (oopses kernel rkvdec_hevc_prepare_hw_st_rps).
# VP9 SKIPPED (mainline-rc3 RK3588 rkvdec doesn't expose V4L2_PIX_FMT_VP9_FRAME).
# AV1 SKIPPED (libva backend iter38b only probes 2 fds, not the av1-vpu-dec at /dev/media3).
echo "=== ampere baseline: libva HW decode probe (H.264 + VP8 + MPEG-2) ==="
for codec in h264 vp8 mpeg2; do
case $codec in
h264) cf=$HOME/measurements/encoded/bbb_60s_720p.h264.mp4 ; route="rkvdec /dev/video1" ;;
mpeg2) cf=$HOME/measurements/encoded/bbb_60s_720p.mpeg2.ts ; route="hantro /dev/video2" ;;
vp8) cf=$HOME/measurements/encoded/bbb_60s_720p.vp8.webm ; route="hantro /dev/video2" ;;
esac
t0=$(date +%s.%N)
out=$(LIBVA_DRIVER_NAME=v4l2_request timeout 12 ffmpeg -hide_banner -loglevel error \
-hwaccel vaapi -hwaccel_output_format vaapi \
-i "$cf" -vf "hwdownload,format=nv12" -f null - 2>&1 </dev/null)
rc=$?
t1=$(date +%s.%N)
el=$(awk "BEGIN { printf \"%.2f\", $t1-$t0 }")
status=$([ $rc -eq 0 ] && echo "OK" || echo "FAIL rc=$rc")
fps=$(echo "$out" | grep -oE "fps=[ ]*[0-9.]+" | tail -1)
frames=$(echo "$out" | grep -oE "frame=[ ]*[0-9]+" | tail -1)
err=$(echo "$out" | grep -iE "error|invalid|failed|not supported|unable" | head -1)
printf " %-6s %-25s %s elapsed=%ss %s %s %s\n" "$codec" "$route" "$status" "$el" "${frames}" "${fps}" "$err"
done
echo "=== done $(date -Iseconds) ==="