# VMAF Optimizer - Maintenance Guide

## Project Goals
To automatically optimize a large video library (TV Shows & Content) on Windows using an **AMD RX 9070 XT** GPU.
The goal is to reduce file size while maintaining "Visually Lossless" quality (VMAF 93+).

## Core Strategy
1.  **Hybrid Encoding:**
    *   **Encode:** Use Hardware Acceleration (`av1_amf` / `hevc_amf`) for speed (critical for 2TB+ library).
    *   **Verify:** Use `ab-av1` (software) strictly for VMAF score calculation.
2.  **Safety Net:**
    *   Extract a 60s sample.
    *   Encode sample with AV1 (QP 32).
    *   Calculate VMAF & Savings.
    *   **Decision Logic:**
        *   If VMAF > 97: Re-encode with higher QP (more compression) to save space.
        *   If VMAF < 93 or Savings < 12%: Fallback to HEVC.
        *   If HEVC fails: Keep original.
3.  **Architecture:**
    *   `smart_gpu_encoder.py`: The "Engine". Handles logic, ffmpeg calls, VMAF checks. Can run standalone.
    *   `smart_monitor.py`: The "UI/Controller". Runs the engine in threads, displays a TUI (Rich), handles caching and directory scanning.

## Current Status
*   **Working:**
    *   Hardware detection (AMD/NVIDIA/Intel).
    *   VMAF calculation (fixed regex for raw number output).
    *   Optimization logic (Smart QP adjustment).
    *   Multithreading (4 workers).
    *   Caching (Instant startup on second run).
*   **Issues:**
    *   **UI Progress:** The TUI shows "Action" but Progress/Speed columns are empty.
        *   *Root Cause:* `smart_gpu_encoder.py` sends status updates like `Encoding AV1 (size=...)` but `smart_monitor.py` expects format `Action | Progress% | Speed`.
    *   **Logs:** User reported logs might be hard to find or missing if permissions fail on `Z:`.

## Debugging Instructions
To run a simplified test without scanning the whole library:
1.  Create a folder `test_media` with 1 small video file.
2.  Run:
    ```powershell
    python smart_gpu_encoder.py --tv-dir ".\test_media" --content-dir ".\test_media" --jobs 1
    ```

## Future Todos
1.  **Fix TUI Parsing:** Update `smart_gpu_encoder.py` to format strings as `Action | Percent% | Speed`.
2.  **Sonarr Integration:** Add webhook triggers on success.
3.  **Linux Support:** Verify `av1_qsv` or `av1_vaapi` flags for Linux/Docker deployments.

---
**Key Files:**
*   `smart_gpu_encoder.py`: Core logic.
*   `smart_monitor.py`: TUI and Watchdog.
*   `library_cache.json`: Cache of scanned files to speed up startup.
