#!/bin/sh
# Run beside synthetic-source.png in a fresh directory.
# Requires FFmpeg/ffprobe with libx264; tested with FFmpeg 8.0.1.
# Named MP4/PNG outputs must not already exist.
set -eu
for mode in fit fill padding; do
  case "$mode" in
    fit) filter='scale=270:480:force_original_aspect_ratio=decrease:force_divisible_by=2,pad=270:480:(ow-iw)/2:(oh-ih)/2:color=black,setsar=1' ;;
    fill) filter='scale=270:480:force_original_aspect_ratio=increase:force_divisible_by=2,crop=270:480,setsar=1' ;;
    padding) filter='scale=270:480:force_original_aspect_ratio=decrease:force_divisible_by=2,pad=270:480:(ow-iw)/2:(oh-ih)/2:color=0x203040,setsar=1' ;;
  esac
  ffmpeg -hide_banner -loglevel error -n -loop 1 -framerate 15 -i synthetic-source.png \
    -t 1 -vf "$filter" -c:v libx264 -crf 18 -pix_fmt yuv420p -an "$mode.mp4"
  ffmpeg -hide_banner -loglevel error -n -i "$mode.mp4" -frames:v 1 "$mode-frame.png"
  ffprobe -v error -show_streams -show_format -of json "$mode.mp4" > "$mode-streams.json"
done
