#!/usr/bin/env python3
"""Export a labelled 1440x900 excerpt and a native raw trimmed past app startup.
Usage: media-driver-v2.py before|after RAW_RECORDING OUT_ROOT START_SECONDS
Uses independent bounded segment decodes to avoid buffering the idle interval.
"""
import subprocess,pathlib,datetime,json,sys
side,source,out,first=sys.argv[1:];root=pathlib.Path(out);first=float(first)
run=root/(side+'-video-'+datetime.datetime.now(datetime.timezone.utc).strftime('%Y%m%dT%H%M%SZ'));run.mkdir()
probe=json.loads(subprocess.check_output(['ffprobe','-v','error','-show_format','-show_streams','-of','json',source]))
duration=float(probe['format']['duration']);ending=max(first+14,duration-30)
label=(f"scale=1440:900,fps=15,drawtext=fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf:text='{side.upper()} | ACP stub harness; no live Antigravity backend.':x=14:y=12:fontsize=17:fontcolor=white:box=1:boxcolor=black@0.85:boxborderw=8,"
 f"drawtext=fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf:text='Idle middle removed (source {first:.0f}-{first+14:.0f}s then {ending:.1f}s onward; app startup frames before {first:.0f}s trimmed); real 15-minute watchdog.':x=14:y=40:fontsize=14:fontcolor=white:box=1:boxcolor=black@0.85:boxborderw=6")
for name,start,length in [('dispatch',first,14),('retirement',ending,30)]:
 with open(run/(name+'-ffmpeg.log'),'w') as log:
  subprocess.run(['ffmpeg','-nostdin','-y','-threads','1','-ss',str(start),'-i',source,'-t',str(length),'-filter_threads','1','-vf',label,'-an','-c:v','libx264','-threads','2','-crf','19','-preset','fast','-pix_fmt','yuv420p','-movflags','+faststart',str(run/(name+'.mp4'))],stdout=log,stderr=subprocess.STDOUT,check=True)
(run/'concat.txt').write_text("file 'dispatch.mp4'\nfile 'retirement.mp4'\n")
subprocess.run(['ffmpeg','-nostdin','-y','-f','concat','-safe','0','-i',str(run/'concat.txt'),'-c','copy','-movflags','+faststart',str(run/(side+'-excerpt.mp4'))],stdout=open(run/'concat.log','w'),stderr=subprocess.STDOUT,check=True)
subprocess.run(['ffmpeg','-nostdin','-y','-threads','1','-ss',str(first),'-i',source,'-an','-c:v','libx264','-threads','2','-crf','23','-preset','ultrafast','-pix_fmt','yuv420p','-movflags','+faststart',str(run/(side+'-raw.mp4'))],stdout=open(run/'raw-ffmpeg.log','w'),stderr=subprocess.STDOUT,check=True)
(run/'source-metadata.json').write_text(json.dumps(probe,indent=2));print(run)
