#!/usr/bin/env bash
# gpu-svt-extra.sh —— 新版 SVT-AV1 v4.2.0 补跑更慢档位（p3/p2），既然快 8 倍，慢档就实用了
set -uo pipefail
SRC="${1:?源文件}"; OUT="${2:?输出目录}"; FF="${3:-ffmpeg}"; THREADS="${4:-12}"
SEGS=(900 3000 5200); DUR=40
mkdir -p "$OUT"
# 等前面的任务结束
while pgrep -f "gpu-svt-[n]ew-test.sh" >/dev/null; do sleep 10; done
echo "  前面的任务已结束，开始补跑慢档"
for item in "p3-c21|3|21" "p2-c21|2|21"; do
  IFS='|' read -r name preset crf <<<"$item"
  for s in "${SEGS[@]}"; do
    out="$OUT/av1-svtnew-$name-$s.mp4"
    [ -s "$out" ] && continue
    t0=$(date +%s.%N)
    nice -n 19 "$FF" -hide_banner -nostdin -loglevel error -y -ss "$s" -t "$DUR" -i "$SRC" \
      -map 0:v:0 -map "0:a:0?" -c:a aac -b:a 128k \
      -c:v libsvtav1 -preset "$preset" -crf "$crf" \
      -svtav1-params "lp=$THREADS:enable-tf=0:tune=0" -threads "$THREADS" \
      -pix_fmt yuv420p10le -movflags +faststart "$out" 2>"$OUT/err-svtnew-$name-$s.log" \
      || { echo "  ❌ $name @ ${s}s 失败"; continue; }
    t1=$(date +%s.%N); secs=$(echo "$t1 - $t0" | bc)
    echo "  svtnew-$name @ ${s}s → ${secs%.*}s（$(printf %.2f "$(echo "40/$secs"|bc -l)")x 实时）  $(du -h "$out"|cut -f1)  $(( $(stat -c%s "$out")*8/40/1000 ))kbps"
  done
done
echo "✅ 慢档补跑完成"
