Add comprehensive Windows support roadmap: - Cross-compilation and build system - Platform-specific path handling - Windows GPU detection (NVENC/QSV/AMF) - Installer and distribution - Testing checklist Goal: Make VideoTools available for Jake and Windows users
14 KiB
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 (HIGHEST PRIORITY)
- 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
- Dropdown: Source, 24, 25, 29.97, 30, 50, 59.94, 60 fps
- Auto-suggest 60→30fps conversion with size estimate
- Show file size impact (40-45% 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