VideoTools/TODO.md
Stu Leak ca6c303b56 Add encoder preset descriptions with speed/quality trade-offs
This commit enhances the encoder preset selector with detailed information
about speed vs quality trade-offs for each preset option.

Preset Information:
- Ultrafast: ~10x faster than slow, ~30% larger files
- Superfast: ~7x faster than slow, ~20% larger files
- Very Fast: ~5x faster than slow, ~15% larger files
- Faster: ~3x faster than slow, ~10% larger files
- Fast: ~2x faster than slow, ~5% larger files
- Medium: Balanced baseline (default)
- Slow: ~2x slower than medium, ~5-10% smaller (recommended)
- Slower: ~3x slower than medium, ~10-15% smaller
- Very Slow: ~5x slower than medium, ~15-20% smaller

UI Enhancements:
- Dynamic hint label below encoder preset dropdown
- Updates automatically when preset changes
- Visual icons for different speed categories:
  -  Ultrafast/Superfast/Very Fast (prioritize speed)
  -  Faster/Fast (good balance)
  - ⚖️ Medium (baseline)
  - 🎯 Slow/Slower (recommended for quality)
  - 🐌 Very Slow (maximum compression)

Implementation:
- updateEncoderPresetHint() function provides preset details
- Called on preset selection change
- Initialized with current preset on view load
- Positioned directly under preset dropdown for visibility

Benefits:
- Helps users understand encoding time implications
- Shows file size impact of each preset
- Recommends "slow" as best quality/size ratio
- Prevents confusion about preset differences
- Enables informed decisions about encoding settings

Technical:
- All presets already supported by FFmpeg
- No changes to command generation needed
- Works with all video codecs (H.264, H.265, VP9, etc.)
- Preset names match FFmpeg standards
2025-12-03 21:36:30 -05:00

14 KiB

VideoTools TODO (v0.1.0-dev13 plan)

This file tracks upcoming features, improvements, and known issues.

Priority Features for dev13 (Based on Jake's research)

Quality & Compression Improvements

  • Automatic black bar detection and cropping (v0.1.0-dev13 - COMPLETED)

    • Implement ffmpeg cropdetect analysis pass
    • Auto-apply detected crop values
    • 15-30% file size reduction with zero quality loss
    • Add manual crop override option
  • Frame rate conversion UI (v0.1.0-dev13 - COMPLETED)

    • Dropdown: Source, 23.976, 24, 25, 29.97, 30, 50, 59.94, 60 fps
    • Auto-suggest 60→30fps conversion with size estimate
    • Show file size impact (40-50% reduction for 60→30)
  • HEVC/H.265 preset options

    • Add preset dropdown: ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow
    • Show time/quality trade-off estimates
    • Default to "slow" for best quality/size balance
  • Advanced filters module

    • Denoising: hqdn3d (fast), nlmeans (slow, high quality)
    • Sharpening: unsharp filter with strength slider
    • Deblocking: remove compression artifacts
    • All with strength sliders and preview

Encoding Features

  • 2-pass encoding for precise bitrate targeting

    • UI for target file size
    • Auto-calculate bitrate from duration + size
    • Progress tracking for both passes
  • SVT-AV1 codec support

    • Faster than H.265, smaller files
    • Add compatibility warnings for iOS
    • Preset selection (0-13)

UI & Workflow

  • Add UI controls for dev12 backend features

    • H.264 profile/level dropdowns
    • Deinterlace method selector (yadif/bwdif)
    • Audio normalization checkbox
    • Auto-crop toggle
  • Encoding presets system

    • "iPhone Compatible" preset (main/4.0, stereo, 48kHz, auto-crop)
    • "Maximum Compression" preset (H.265, slower, CRF 24, 10-bit, auto-crop)
    • "Fast Encode" preset (medium, hardware encoding)
    • Save custom presets
  • File size estimator

    • Show estimated output size before encoding
    • Based on source duration, target bitrate/CRF
    • Update in real-time as settings change

VR & Advanced Features

  • VR video support infrastructure

    • Detect VR metadata tags
    • Side-by-side and over-under format detection
    • Preserve VR metadata in output
    • Add VR-specific presets
  • Batch folder import

    • Select folder, auto-add all videos to queue
    • Filter by extension
    • Apply same settings to all files
    • Progress indicator for folder scanning

Windows Compatibility (v0.1.0-dev14)

Build System

  • Cross-compilation setup

    • Configure CGO for Windows cross-compilation
    • Set up MinGW-w64 toolchain
    • Test Fyne compilation on Windows
    • Create Windows build script equivalent to build.sh
  • Dependency bundling

    • Bundle ffmpeg.exe with Windows builds
    • Include all required DLLs (OpenGL, etc.)
    • Create installer with dependencies
    • Add ffmpeg to PATH or bundle in application directory

Platform-Specific Code

  • Path handling

    • Replace Unix path separators with filepath.Separator
    • Handle Windows drive letters (C:, D:, etc.)
    • Support UNC paths (\server\share)
    • Test with spaces and special characters in paths
  • File dialogs

    • Ensure Fyne file dialogs work on Windows
    • Test drag-and-drop on Windows Explorer
    • Handle Windows file associations
    • Add "Open with VideoTools" context menu option
  • Process management

    • Test ffmpeg process spawning on Windows
    • Handle Windows process termination (no SIGTERM)
    • Support Windows-style console output
    • Test background process handling

Hardware Detection

  • Windows GPU detection

    • Detect NVIDIA GPUs (NVENC) on Windows
    • Detect Intel integrated graphics (QSV)
    • Detect AMD GPUs (AMF)
    • Auto-select best available encoder
  • Windows-specific encoders

    • Add Windows Media Foundation encoders
    • Test NVENC on Windows (h264_nvenc, hevc_nvenc)
    • Test Intel QSV on Windows
    • Add fallback to software encoding

Testing & Distribution

  • Windows testing

    • Test on Windows 10
    • Test on Windows 11
    • Test with different GPU vendors
    • Test on systems without GPU
  • Installation

    • Create Windows installer (MSI or NSIS)
    • Add to Windows Start Menu
    • Create desktop shortcut option
    • Auto-update mechanism
  • Documentation

    • Windows installation guide
    • Windows-specific troubleshooting
    • GPU driver requirements
    • Antivirus whitelist instructions

Nice-to-Have

  • Windows Store submission
  • Portable/USB-stick version
  • Windows taskbar progress integration
  • File thumbnail generation for Windows Explorer
  • Windows notification system integration

Critical Issues / Polishing

  • Queue polish: ensure scroll/refresh stability with 10+ jobs and long runs
  • Direct+queue parity: verify label/progress/order are correct when mixing modes
  • Conversion error surfacing: include stderr snippet in dialog for faster debug
  • DVD author helper (optional): one-click VIDEO_TS/ISO from DVD .mpg
  • Build reliability: document cgo/GL deps and avoid accidental cache wipes

Core Features

Persistent Video Context

  • Implement video info bar UI component
  • Add "Clear Video" button globally accessible
  • Update all modules to check for state.source
  • Add "Use Different Video" option in modules
  • Implement auto-clear preferences
  • Add recent files tracking and dropdown menu
  • Test video persistence across module switches

Convert Module Completion (dev12 focus)

  • Add hardware acceleration UI controls (NVENC, QSV, VAAPI)
  • Implement two-pass encoding mode
  • Add bitrate-based encoding option (not just CRF)
  • Implement custom FFmpeg arguments field
  • Add preset save/load functionality
  • Add batch conversion queue (v0.1.0-dev11)
  • Multi-video loading and navigation (v0.1.0-dev11)
  • Estimated file size calculator
  • Preview/comparison mode
  • Audio-only output option
  • Add more codec options (AV1, VP9)

Merge Module (Not Started)

  • Design UI layout
  • Implement file list/order management
  • Add drag-and-drop reordering
  • Preview transitions
  • Handle mixed formats/resolutions
  • Audio normalization across clips
  • Transition effects (optional)
  • Chapter markers at join points

Trim Module (Not Started)

  • Design UI with timeline
  • Implement frame-accurate seeking
  • Visual timeline with preview thumbnails
  • Multiple trim ranges selection
  • Chapter-based splitting
  • Smart copy mode (no re-encode)
  • Batch trim operations
  • Keyboard shortcuts for marking in/out points

Filters Module (Not Started)

  • Design filter selection UI
  • Implement color correction filters
    • Brightness/Contrast
    • Saturation/Hue
    • Color balance
    • Curves/Levels
  • Implement enhancement filters
    • Sharpen/Blur
    • Denoise
    • Deband
  • Implement creative filters
    • Grayscale/Sepia
    • Vignette
    • Speed adjustment
    • Rotation/Flip
  • Implement stabilization
  • Add real-time preview
  • Filter presets
  • Custom filter chains

Upscale Module (Not Started)

  • Design UI for upscaling
  • Implement traditional scaling (Lanczos, Bicubic)
  • Integrate Waifu2x (if feasible)
  • Integrate Real-ESRGAN (if feasible)
  • Add resolution presets
  • Quality vs. speed slider
  • Before/after comparison
  • Batch upscaling

Audio Module (Not Started)

  • Design audio extraction UI
  • Implement audio track extraction
  • Audio track replacement/addition
  • Multi-track management
  • Volume normalization
  • Audio delay correction
  • Format conversion
  • Channel mapping
  • Audio-only operations

Thumb Module (Not Started)

  • Design thumbnail generation UI
  • Single thumbnail extraction
  • Grid/contact sheet generation
  • Customizable layouts
  • Scene detection
  • Animated thumbnails
  • Batch processing
  • Template system

Inspect Module (Partial)

  • Enhanced metadata display
  • Stream information viewer
  • Chapter viewer/editor
  • Cover art viewer/extractor
  • HDR metadata display
  • Export reports (text/JSON)
  • MediaInfo integration
  • Comparison mode (before/after conversion)

Rip Module (Not Started)

  • Design disc ripping UI
  • DVD drive detection and scanning
  • Blu-ray drive support
  • ISO file loading
  • Title selection interface
  • Track management (audio/subtitle)
  • libdvdcss integration
  • libaacs integration
  • Batch ripping
  • Metadata lookup integration

Additional Modules

Subtitle Module (Proposed)

  • Requirements analysis
  • UI design
  • Extract subtitle tracks
  • Add/replace subtitles
  • Burn subtitles into video
  • Format conversion
  • Timing adjustment
  • Multi-language support

Streams Module (Proposed)

  • Requirements analysis
  • UI design
  • Stream viewer/inspector
  • Stream selection/removal
  • Stream reordering
  • Map streams to outputs
  • Default flag management

GIF Module (Proposed)

  • Requirements analysis
  • UI design
  • Video segment to GIF
  • Palette optimization
  • Frame rate control
  • Loop settings
  • Dithering options
  • Preview before export

Crop Module (Proposed)

  • Requirements analysis
  • UI design
  • Visual crop selector
  • Auto-detect black bars
  • Aspect ratio presets
  • Preview with crop overlay
  • Batch crop with presets

Screenshots Module (Proposed)

  • Requirements analysis
  • UI design
  • Single frame extraction
  • Burst capture
  • Scene-based capture
  • Format options
  • Batch processing

UI/UX Improvements

General Interface

  • Keyboard shortcuts system
  • Drag-and-drop file loading (v0.1.0-dev11)
  • Multiple file drag-and-drop with batch processing (v0.1.0-dev11)
  • Dark/light theme toggle
  • Custom color schemes
  • Window size/position persistence
  • Multi-window support
  • Responsive layout improvements

Media Player

  • Enhanced playback controls
  • Frame-by-frame navigation
  • Playback speed control
  • A-B repeat loop
  • Snapshot/screenshot button
  • Audio waveform display
  • Subtitle display during playback

Queue/Batch System

  • Global job queue (v0.1.0-dev11)
  • Priority management (v0.1.0-dev11)
  • Pause/resume individual jobs (v0.1.0-dev11)
  • Queue persistence (v0.1.0-dev11)
  • Job history (v0.1.0-dev11)
  • Persistent status bar showing queue stats (v0.1.0-dev11)
  • Parallel processing option
  • Estimated completion time

Settings/Preferences

  • Settings dialog
  • Default output directory
  • FFmpeg path configuration
  • Hardware acceleration preferences
  • Auto-clear video behavior
  • Preview quality settings
  • Logging verbosity
  • Update checking

Performance & Optimization

  • Optimize preview frame generation
  • Cache metadata for recently opened files
  • Implement progressive loading for large files
  • Add GPU acceleration detection
  • Optimize memory usage for long videos
  • Background processing improvements
  • FFmpeg process management enhancements

Testing & Quality

  • Unit tests for core functions
  • Integration tests for FFmpeg commands
  • UI automation tests
  • Test suite for different video formats
  • Regression tests
  • Performance benchmarks
  • Error handling improvements
  • Logging system enhancements

Documentation

User Documentation

  • Complete README.md for all modules
  • Getting Started guide
  • Installation instructions (Windows, macOS, Linux)
  • Keyboard shortcuts reference
  • Workflow examples
  • FAQ section
  • Troubleshooting guide
  • Video tutorials (consider for future)

Developer Documentation

  • Architecture overview
  • Code structure documentation
  • FFmpeg integration guide
  • Contributing guidelines
  • Build instructions for all platforms
  • Release process documentation
  • API documentation (if applicable)

Packaging & Distribution

  • Create installers for Windows (.exe/.msi)
  • Create macOS app bundle (.dmg)
  • Create Linux packages (.deb, .rpm, AppImage)
  • Set up CI/CD pipeline
  • Automatic builds for releases
  • Code signing (Windows/macOS)
  • Update mechanism
  • Crash reporting system

Future Considerations

  • Plugin system for extending functionality
  • Scripting/automation support
  • Command-line interface mode
  • Web-based remote control
  • Cloud storage integration
  • Collaborative features
  • AI-powered scene detection
  • AI-powered quality enhancement
  • Streaming output support
  • Live input support (webcam, capture card)

Known Issues

  • Build hangs on GCC 15.2.1 - CGO compilation freezes during OpenGL binding compilation
  • No Windows/macOS builds tested yet
  • Preview frames not cleaned up on crash

Fixed Issues (v0.1.0-dev11)

  • Limited error messages for FFmpeg failures - Added "Copy Error" button to all error dialogs
  • No progress indication during metadata parsing - Added persistent stats bar showing real-time progress
  • Crash when dragging multiple files - Improved error handling with detailed reporting
  • Queue callback deadlocks - Fixed by running callbacks in goroutines
  • Queue deserialization panic - Fixed formatOption struct handling

Research Needed

  • Best practices for FFmpeg filter chain optimization
  • GPU acceleration capabilities across platforms
  • AI upscaling integration options
  • Disc copy protection legal landscape
  • Cross-platform video codecs support
  • HDR/Dolby Vision handling