forked from Leak_Technologies/VideoTools
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
|