test(sync): auto-select theia host capture mode
This commit is contained in:
parent
c482f44fbc
commit
2aa4a27f9f
@ -18,13 +18,14 @@ TAIL_SECONDS=${TAIL_SECONDS:-2}
|
||||
CAPTURE_SECONDS=${CAPTURE_SECONDS:-$((PROBE_DURATION_SECONDS + PROBE_WARMUP_SECONDS + LEAD_IN_SECONDS + TAIL_SECONDS))}
|
||||
REMOTE_CAPTURE=${REMOTE_CAPTURE:-/tmp/lesavka-upstream-av-sync.mkv}
|
||||
LOCAL_OUTPUT_DIR=${LOCAL_OUTPUT_DIR:-"${REPO_ROOT}/tmp"}
|
||||
VIDEO_SIZE=${VIDEO_SIZE:-1280x720}
|
||||
VIDEO_SIZE=${VIDEO_SIZE:-auto}
|
||||
VIDEO_FPS=${VIDEO_FPS:-30}
|
||||
VIDEO_FORMAT=${VIDEO_FORMAT:-mjpeg}
|
||||
REMOTE_CAPTURE_STACK=${REMOTE_CAPTURE_STACK:-auto}
|
||||
REMOTE_AUDIO_SOURCE=${REMOTE_AUDIO_SOURCE:-auto}
|
||||
REMOTE_AUDIO_QUIESCE_USER_AUDIO=${REMOTE_AUDIO_QUIESCE_USER_AUDIO:-auto}
|
||||
ANALYSIS_NORMALIZE=${ANALYSIS_NORMALIZE:-1}
|
||||
ANALYSIS_SCALE_WIDTH=${ANALYSIS_SCALE_WIDTH:-1280}
|
||||
SSH_OPTS=${SSH_OPTS:-"-o BatchMode=yes -o ConnectTimeout=5"}
|
||||
LOCAL_AUDIO_SANITY=${LOCAL_AUDIO_SANITY:-1}
|
||||
PROBE_PREBUILD=${PROBE_PREBUILD:-1}
|
||||
@ -78,10 +79,6 @@ remote_audio_source=$7
|
||||
remote_audio_quiesce_user_audio=$8
|
||||
|
||||
rm -f "${remote_capture}"
|
||||
video_args=(-f video4linux2 -framerate "${video_fps}" -video_size "${video_size}")
|
||||
if [[ -n "${video_format}" ]]; then
|
||||
video_args+=(-input_format "${video_format}")
|
||||
fi
|
||||
|
||||
restore_user_audio() {
|
||||
systemctl --user start pipewire.socket pipewire-pulse.socket wireplumber.service >/dev/null 2>&1 || true
|
||||
@ -111,11 +108,33 @@ resolve_pulse_source() {
|
||||
'
|
||||
}
|
||||
|
||||
resolve_video_size() {
|
||||
local requested=$1
|
||||
if [[ "${requested}" != "auto" ]]; then
|
||||
printf '%s\n' "${requested}"
|
||||
return 0
|
||||
fi
|
||||
if ! command -v v4l2-ctl >/dev/null 2>&1; then
|
||||
printf '1280x720\n'
|
||||
return 0
|
||||
fi
|
||||
local listing
|
||||
listing="$(v4l2-ctl -d /dev/video0 --list-formats-ext 2>/dev/null || true)"
|
||||
local preferred
|
||||
for preferred in 1920x1080 1360x768 1280x720; do
|
||||
if grep -q "Size: Discrete ${preferred}" <<<"${listing}"; then
|
||||
printf '%s\n' "${preferred}"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
printf '1280x720\n'
|
||||
}
|
||||
|
||||
resolve_pw_audio_target() {
|
||||
if ! command -v pw-dump >/dev/null 2>&1 || ! command -v python3 >/dev/null 2>&1; then
|
||||
return 1
|
||||
fi
|
||||
pw-dump | python3 - <<'PY'
|
||||
pw-dump | python3 -c '
|
||||
import json
|
||||
import sys
|
||||
|
||||
@ -140,7 +159,7 @@ for obj in objs:
|
||||
raise SystemExit(0)
|
||||
|
||||
raise SystemExit(1)
|
||||
PY
|
||||
'
|
||||
}
|
||||
|
||||
capture_mode="alsa"
|
||||
@ -208,13 +227,20 @@ case "${remote_capture_stack}" in
|
||||
;;
|
||||
esac
|
||||
|
||||
resolved_video_size="$(resolve_video_size "${video_size}")"
|
||||
printf 'using video mode: %s (%s)\n' "${resolved_video_size}" "${video_format:-driver-default}" >&2
|
||||
video_args=(-f video4linux2 -framerate "${video_fps}" -video_size "${resolved_video_size}")
|
||||
if [[ -n "${video_format}" ]]; then
|
||||
video_args+=(-input_format "${video_format}")
|
||||
fi
|
||||
|
||||
quiesce_for_alsa=0
|
||||
case "${remote_audio_quiesce_user_audio}" in
|
||||
1|true|yes)
|
||||
quiesce_for_alsa=1
|
||||
;;
|
||||
auto)
|
||||
if [[ "${audio_mode}" == "alsa" ]]; then
|
||||
if [[ "${capture_mode}" == "alsa" ]]; then
|
||||
quiesce_for_alsa=1
|
||||
fi
|
||||
;;
|
||||
@ -305,14 +331,16 @@ if ssh ${SSH_OPTS} "${TETHYS_HOST}" "test -f '${REMOTE_CAPTURE}'"; then
|
||||
ssh ${SSH_OPTS} "${TETHYS_HOST}" bash -s -- \
|
||||
"${REMOTE_CAPTURE}" \
|
||||
"${remote_fetch_capture}" \
|
||||
"${VIDEO_FPS}" <<'REMOTE_NORMALIZE_SCRIPT' || normalize_status=$?
|
||||
"${VIDEO_FPS}" \
|
||||
"${ANALYSIS_SCALE_WIDTH}" <<'REMOTE_NORMALIZE_SCRIPT' || normalize_status=$?
|
||||
set -euo pipefail
|
||||
src=$1
|
||||
dst=$2
|
||||
fps=$3
|
||||
scale_width=$4
|
||||
ffmpeg -hide_banner -loglevel error -y \
|
||||
-i "${src}" \
|
||||
-vf "fps=${fps}" \
|
||||
-vf "fps=${fps},scale='min(${scale_width},iw)':-2" \
|
||||
-c:v libx264 -preset ultrafast -crf 12 -g 1 -pix_fmt yuv420p \
|
||||
-c:a pcm_s16le \
|
||||
"${dst}"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user