Mark auto-crop, frame rate conversion, and encoder presets as complete in TODO.md. Add detailed feature descriptions to DONE.md for all three priority features.
448 lines
14 KiB
Markdown
448 lines
14 KiB
Markdown
# 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
|
|
- [x] **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
|
|
|
|
- [x] **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)
|
|
|
|
- [x] **HEVC/H.265 encoder preset options** (v0.1.0-dev13 - COMPLETED)
|
|
- Preset dropdown: ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow
|
|
- Show time/quality trade-off estimates
|
|
- Recommend "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
|
|
- [x] Add batch conversion queue (v0.1.0-dev11)
|
|
- [x] 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
|
|
- [x] Drag-and-drop file loading (v0.1.0-dev11)
|
|
- [x] 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
|
|
- [x] Global job queue (v0.1.0-dev11)
|
|
- [x] Priority management (v0.1.0-dev11)
|
|
- [x] Pause/resume individual jobs (v0.1.0-dev11)
|
|
- [x] Queue persistence (v0.1.0-dev11)
|
|
- [x] Job history (v0.1.0-dev11)
|
|
- [x] 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
|