#!/command/with-contenv bash
# shellcheck shell=bash
# Start the transcode proxy (in-process with Frigate container)

set -o errexit -o nounset -o pipefail

# Logs should be sent to stdout so that s6 can collect them

echo "[INFO] Starting transcode proxy..."

# Default upstream to nginx internal port when not set
export TRANSCODE_PROXY_UPSTREAM="${TRANSCODE_PROXY_UPSTREAM:-http://127.0.0.1:5000}"

# Use Frigate's FFmpeg when not set
if [ -z "${TRANSCODE_PROXY_FFMPEG:-}" ]; then
    export TRANSCODE_PROXY_FFMPEG="$(python3 /usr/local/ffmpeg/get_ffmpeg_path.py)"
fi

# Wait for nginx/API to be ready so proxy can reach upstream
until curl -sf -o /dev/null "${TRANSCODE_PROXY_UPSTREAM}/api/version"; do
    echo "[INFO] Waiting for upstream ${TRANSCODE_PROXY_UPSTREAM}..."
    sleep 1
done

echo "[INFO] Upstream ready, starting transcode proxy on port ${TRANSCODE_PROXY_PORT:-5010}"

export PYTHONPATH="/opt/frigate:${PYTHONPATH:-}"

exec 2>&1
exec python3 -m uvicorn transcode_proxy.main:app \
    --host "${TRANSCODE_PROXY_HOST:-0.0.0.0}" \
    --port "${TRANSCODE_PROXY_PORT:-5010}"
