#!/usr/bin/env bash
set -euo pipefail

if [ "$#" -lt 2 ] || [ "$#" -gt 4 ]; then
  echo "Usage: $0 <input-video> <output-video> [start] [duration]" >&2
  exit 2
fi

in="$1"
out="$2"
start="${3:-00:00:20}"
duration="${4:-20}"

# Tuned for this source: subtitles are concentrated in a narrow lower band.
subtitle_y1=760
subtitle_y2=950
side_margin=120
white_threshold=135
edge_threshold=18

ffmpeg -hide_banner -y -ss "$start" -t "$duration" -i "$in" \
  -filter_complex "[0:v]format=yuv420p,split=3[base][masksrc][fillsrc]; \
    [masksrc]format=gray,eq=contrast=2.0:brightness=0.05,split=2[wsrc][esrc]; \
    [wsrc]lutyuv=y='if(gt(val,${white_threshold}),255,0)'[wm]; \
    [esrc]edgedetect=low=0.02:high=0.08,lutyuv=y='if(gt(val,${edge_threshold}),255,0)'[em]; \
    [wm][em]blend=all_mode=multiply,boxblur=2:1,lutyuv=y='if(gt(val,10),255,0)',dilation,dilation,drawbox=x=0:y=0:w=iw:h=${subtitle_y1}:color=black:t=fill,drawbox=x=0:y=${subtitle_y2}:w=iw:h=ih-${subtitle_y2}:color=black:t=fill,drawbox=x=0:y=${subtitle_y1}:w=${side_margin}:h=${subtitle_y2}-${subtitle_y1}:color=black:t=fill,drawbox=x=iw-${side_margin}:y=${subtitle_y1}:w=${side_margin}:h=${subtitle_y2}-${subtitle_y1}:color=black:t=fill,format=yuv420p[mask]; \
    [fillsrc]boxblur=18:8,format=yuv420p[fill]; \
    [base][fill][mask]maskedmerge[outv]" \
  -map "[outv]" -map 0:a? \
  -c:v libx264 -preset medium -crf 17 -pix_fmt yuv420p \
  -c:a copy "$out"

echo "Subtitle-removal preview generated: $out"
