forked from Leak_Technologies/VideoTools
Update VT Player done/todo docs
This commit is contained in:
parent
eaea93e0e6
commit
5cc42c9ca0
434
docs/DONE.md
434
docs/DONE.md
|
|
@ -1,427 +1,9 @@
|
|||
# VideoTools - Completed Features
|
||||
# VT Player – Completed Items
|
||||
|
||||
This file tracks completed features, fixes, and milestones.
|
||||
|
||||
## Version 0.1.0-dev13 (In Progress - 2025-12-03)
|
||||
|
||||
### Features
|
||||
- ✅ **Automatic Black Bar Detection and Cropping**
|
||||
- Detects and removes black bars to reduce file size (15-30% typical reduction)
|
||||
- One-click "Detect Crop" button analyzes video using FFmpeg cropdetect
|
||||
- Samples 10 seconds from middle of video for stable detection
|
||||
- Shows estimated file size reduction percentage before applying
|
||||
- User confirmation dialog displays before/after dimensions
|
||||
- Manual crop override capability (width, height, X/Y offsets)
|
||||
- Applied before scaling for optimal results
|
||||
- Works in both direct convert and queue job execution
|
||||
- Proper handling for videos without black bars
|
||||
- 30-second timeout protection for detection process
|
||||
|
||||
- ✅ **Frame Rate Conversion UI with Size Estimates**
|
||||
- Comprehensive frame rate options: Source, 23.976, 24, 25, 29.97, 30, 50, 59.94, 60
|
||||
- Intelligent file size reduction estimates (40-50% for 60→30 fps)
|
||||
- Real-time hints showing "Converting X → Y fps: ~Z% smaller file"
|
||||
- Warning for upscaling attempts with judder notice
|
||||
- Automatic calculation based on source and target frame rates
|
||||
- Dynamic updates when video or frame rate changes
|
||||
- Supports both film (24 fps) and broadcast standards (25/29.97/30)
|
||||
- Uses FFmpeg fps filter for frame rate conversion
|
||||
|
||||
- ✅ **Encoder Preset Descriptions with Speed/Quality Trade-offs**
|
||||
- Detailed information for all 9 preset options
|
||||
- Speed comparisons relative to "slow" and "medium" baselines
|
||||
- File size impact percentages for each preset
|
||||
- Visual icons indicating speed categories (⚡⏩⚖️🎯🐌)
|
||||
- Recommends "slow" as best quality/size ratio
|
||||
- Dynamic hint updates when preset changes
|
||||
- Helps users make informed encoding time decisions
|
||||
- Ranges from ultrafast (~10x faster, ~30% larger) to veryslow (~5x slower, ~15-20% smaller)
|
||||
|
||||
- ✅ **Compare Module**
|
||||
- Side-by-side video comparison interface
|
||||
- Load two videos and compare detailed metadata
|
||||
- Displays format, resolution, codecs, bitrates, frame rate, pixel format
|
||||
- Shows color space, color range, GOP size, field order
|
||||
- Indicates presence of chapters and metadata
|
||||
- Accessible via GUI button (pink color) or CLI: `videotools compare <file1> <file2>`
|
||||
- Added formatBitrate() helper function for consistent bitrate display
|
||||
|
||||
- ✅ **Target File Size Encoding Mode**
|
||||
- New "Target Size" bitrate mode in convert module
|
||||
- Specify desired output file size (e.g., "25MB", "100MB", "8MB")
|
||||
- Automatically calculates required video bitrate based on:
|
||||
- Target file size
|
||||
- Video duration
|
||||
- Audio bitrate
|
||||
- Container overhead (3% reserved)
|
||||
- Implemented ParseFileSize() to parse size strings (KB, MB, GB)
|
||||
- Implemented CalculateBitrateForTargetSize() for bitrate calculation
|
||||
- Works in both GUI convert view and job queue execution
|
||||
- Minimum bitrate sanity check (100 kbps) to prevent invalid outputs
|
||||
|
||||
### Technical Improvements
|
||||
- ✅ Added compare command to CLI help text
|
||||
- ✅ Consistent "Target Size" naming throughout UI and code
|
||||
- ✅ Added compareFile1 and compareFile2 to appState for video comparison
|
||||
- ✅ Module button grid updated with compare button (pink/magenta color)
|
||||
|
||||
## Version 0.1.0-dev12 (2025-12-02)
|
||||
|
||||
### Features
|
||||
- ✅ **Automatic hardware encoder detection and selection**
|
||||
- Prioritizes NVIDIA NVENC > Intel QSV > VA-API > OpenH264
|
||||
- Falls back to software encoders (libx264/libx265) if no hardware acceleration available
|
||||
- Automatically uses best available encoder without user configuration
|
||||
- Significant performance improvement on systems with GPU encoding support
|
||||
|
||||
- ✅ **iPhone/mobile device compatibility settings**
|
||||
- H.264 profile selection (baseline, main, high)
|
||||
- H.264 level selection (3.0, 3.1, 4.0, 4.1, 5.0, 5.1)
|
||||
- Defaults to main profile, level 4.0 for maximum compatibility
|
||||
- Ensures videos play on iPhone 4 and newer devices
|
||||
|
||||
- ✅ **Advanced deinterlacing with dual methods**
|
||||
- Added bwdif (Bob Weaver) deinterlacing - higher quality than yadif
|
||||
- Kept yadif for faster processing when speed is priority
|
||||
- Auto-detect interlaced content based on field_order metadata
|
||||
- Deinterlace modes: Auto (detect and apply), Force, Off
|
||||
- Defaults to bwdif for best quality
|
||||
|
||||
- ✅ **Audio normalization for compatibility**
|
||||
- Force stereo (2 channels) output
|
||||
- Force 48kHz sample rate
|
||||
- Ensures consistent playback across all devices
|
||||
- Optional toggle for maximum compatibility mode
|
||||
|
||||
- ✅ **10-bit encoding for better compression**
|
||||
- Changed default pixel format from yuv420p to yuv420p10le
|
||||
- Provides 10-20% file size reduction at same visual quality
|
||||
- Better handling of color gradients and banding
|
||||
- Automatic for all H.264/H.265 conversions
|
||||
|
||||
- ✅ **Browser desync fix**
|
||||
- Added `-fflags +genpts` to regenerate timestamps
|
||||
- Added `-r` flag to enforce constant frame rate (CFR)
|
||||
- Fixes "desync after multiple plays" issue in Chromium browsers (Chrome, Edge, Vivaldi)
|
||||
- Eliminates gradual audio drift when scrubbing/seeking
|
||||
|
||||
- ✅ **Extended resolution support**
|
||||
- Added 8K (4320p) resolution option
|
||||
- Supports: 720p, 1080p, 1440p, 4K (2160p), 8K (4320p)
|
||||
- Prepared for future VR and ultra-high-resolution content
|
||||
|
||||
- ✅ **Black bar cropping infrastructure**
|
||||
- Added AutoCrop configuration option
|
||||
- Cropdetect filter support for future auto-detection
|
||||
- Foundation for 15-30% file size reduction in dev13
|
||||
|
||||
### Technical Improvements
|
||||
- ✅ All new settings propagate to both direct convert and queue processing
|
||||
- ✅ Backward compatible with legacy InverseTelecine setting
|
||||
- ✅ Comprehensive logging for all encoding decisions
|
||||
- ✅ Settings persist across video loads
|
||||
|
||||
### Bug Fixes
|
||||
- ✅ Fixed VFR (Variable Frame Rate) handling that caused desync
|
||||
- ✅ Prevented timestamp drift in long videos
|
||||
- ✅ Improved browser playback compatibility
|
||||
|
||||
## Version 0.1.0-dev11 (2025-11-30)
|
||||
|
||||
### Features
|
||||
- ✅ Added persistent conversion stats bar visible on all screens
|
||||
- Real-time progress updates for running jobs
|
||||
- Displays pending/completed/failed job counts
|
||||
- Clickable to open queue view
|
||||
- Shows job title and progress percentage
|
||||
- ✅ Added multi-video navigation with Prev/Next buttons
|
||||
- Load multiple videos for batch queue setup
|
||||
- Switch between loaded videos to review settings before queuing
|
||||
- Shows "Video X of Y" counter
|
||||
- ✅ Added installation script with animated loading spinner
|
||||
- Braille character animations
|
||||
- Shows current task during build and install
|
||||
- Interactive path selection (system-wide or user-local)
|
||||
- ✅ Added error dialogs with "Copy Error" button
|
||||
- One-click error message copying for debugging
|
||||
- Applied to all major error scenarios
|
||||
- Better user experience when reporting issues
|
||||
|
||||
### Improvements
|
||||
- ✅ Align direct convert and queue behavior
|
||||
- Show active direct convert inline in queue with live progress
|
||||
- Preserve queue scroll position during updates
|
||||
- Back button from queue returns to originating module
|
||||
- Queue badge includes active direct conversions
|
||||
- Allow adding to queue while a convert is running
|
||||
- ✅ DVD-compliant outputs
|
||||
- Enforce MPEG-2 video + AC-3 audio, yuv420p
|
||||
- Apply NTSC/PAL targets with correct fps/resolution
|
||||
- Disable cover art for DVD targets to avoid mux errors
|
||||
- Unified settings for direct and queued jobs
|
||||
- ✅ Updated queue tile to show active/total jobs instead of completed/total
|
||||
- Shows pending + running jobs out of total
|
||||
- More intuitive status at a glance
|
||||
- ✅ Fixed critical deadlock in queue callback system
|
||||
- Callbacks now run in goroutines to prevent blocking
|
||||
- Prevents app freezing when adding jobs to queue
|
||||
- ✅ Improved batch file handling with detailed error reporting
|
||||
- Shows which specific files failed to analyze
|
||||
- Continues processing valid files when some fail
|
||||
- Clear summary messages
|
||||
- ✅ Fixed queue status display
|
||||
- Always shows progress percentage (even at 0%)
|
||||
- Clearer indication when job is running vs. pending
|
||||
- ✅ Fixed queue deserialization for formatOption struct
|
||||
- Handles JSON map conversion properly
|
||||
- Prevents panic when reloading saved queue on startup
|
||||
|
||||
### Bug Fixes
|
||||
- ✅ Fixed crash when dragging multiple files
|
||||
- Better error handling in batch processing
|
||||
- Graceful degradation for problematic files
|
||||
- ✅ Fixed deadlock when queue callbacks tried to read stats
|
||||
- ✅ Fixed formatOption deserialization from saved queue
|
||||
|
||||
## Version 0.1.0-dev7 (2025-11-23)
|
||||
|
||||
### Features
|
||||
- ✅ Changed default aspect ratio from 16:9 to Source across all instances
|
||||
- Updated initial state default
|
||||
- Updated empty fallback default
|
||||
- Updated reset button behavior
|
||||
- Updated clear video behavior
|
||||
- Updated hint label text
|
||||
|
||||
### Documentation
|
||||
- ✅ Created comprehensive MODULES.md with all planned modules
|
||||
- ✅ Created PERSISTENT_VIDEO_CONTEXT.md design document
|
||||
- ✅ Created VIDEO_PLAYER.md documenting custom player implementation
|
||||
- ✅ Reorganized docs into module-specific folders
|
||||
- ✅ Created detailed Convert module documentation
|
||||
- ✅ Created detailed Inspect module documentation
|
||||
- ✅ Created detailed Rip module documentation
|
||||
- ✅ Created docs/README.md navigation hub
|
||||
- ✅ Created TODO.md and DONE.md tracking files
|
||||
|
||||
## Version 0.1.0-dev6 and Earlier
|
||||
|
||||
### Core Application
|
||||
- ✅ Fyne-based GUI framework
|
||||
- ✅ Multi-module architecture with tile-based main menu
|
||||
- ✅ Application icon and branding
|
||||
- ✅ Debug logging system (VIDEOTOOLS_DEBUG environment variable)
|
||||
- ✅ Cross-module state management
|
||||
- ✅ Window initialization and sizing
|
||||
|
||||
### Convert Module (Partial Implementation)
|
||||
- ✅ Basic video conversion functionality
|
||||
- ✅ Format selection (MP4, MKV, WebM, MOV, AVI)
|
||||
- ✅ Codec selection (H.264, H.265, VP9)
|
||||
- ✅ Quality presets (CRF-based encoding)
|
||||
- ✅ Output aspect ratio selection
|
||||
- Source, 16:9, 4:3, 1:1, 9:16, 21:9
|
||||
- ✅ Aspect ratio handling methods
|
||||
- Auto, Letterbox, Pillarbox, Blur Fill
|
||||
- ✅ Deinterlacing options
|
||||
- Inverse telecine with default smoothing
|
||||
- ✅ Mode toggle (Simple/Advanced)
|
||||
- ✅ Output filename customization
|
||||
- ✅ Default output naming ("-convert" suffix)
|
||||
- ✅ Status indicator during conversion
|
||||
- ✅ Cancelable conversion process
|
||||
- ✅ FFmpeg command construction
|
||||
- ✅ Process management and execution
|
||||
|
||||
### Video Loading & Metadata
|
||||
- ✅ File selection dialog
|
||||
- ✅ FFprobe integration for metadata parsing
|
||||
- ✅ Video source structure with comprehensive metadata
|
||||
- Path, format, resolution, duration
|
||||
- Video/audio codecs
|
||||
- Bitrate, framerate, pixel format
|
||||
- Field order detection
|
||||
- ✅ Preview frame generation (24 frames)
|
||||
- ✅ Temporary directory management for previews
|
||||
|
||||
### Media Player
|
||||
- ✅ Embedded video playback using FFmpeg
|
||||
- ✅ Audio playback with SDL2
|
||||
- ✅ Frame-accurate rendering
|
||||
- ✅ Playback controls (play/pause)
|
||||
- ✅ Volume control
|
||||
- ✅ Seek functionality with progress bar
|
||||
- ✅ Player window sizing based on video aspect ratio
|
||||
- ✅ Frame pump system for smooth playback
|
||||
- ✅ Audio/video synchronization
|
||||
- ✅ Stable seeking and embedded video rendering
|
||||
|
||||
### Metadata Display
|
||||
- ✅ Metadata panel showing key video information
|
||||
- ✅ Resolution display
|
||||
- ✅ Duration formatting
|
||||
- ✅ Codec information
|
||||
- ✅ Aspect ratio display
|
||||
- ✅ Field order indication
|
||||
|
||||
### Inspect Module (Basic)
|
||||
- ✅ Video metadata viewing
|
||||
- ✅ Technical details display
|
||||
- ✅ Comprehensive information in Convert module metadata panel
|
||||
- ✅ Cover art preview capability
|
||||
|
||||
### UI Components
|
||||
- ✅ Main menu with 8 module tiles
|
||||
- Convert, Merge, Trim, Filters, Upscale, Audio, Thumb, Inspect
|
||||
- ✅ Module color coding for visual identification
|
||||
- ✅ Clear video control in metadata panel
|
||||
- ✅ Reset button for Convert settings
|
||||
- ✅ Status label for operation feedback
|
||||
- ✅ Progress indication during operations
|
||||
|
||||
### Git & Version Control
|
||||
- ✅ Git repository initialization
|
||||
- ✅ .gitignore configuration
|
||||
- ✅ Version tagging system (v0.1.0-dev1 through dev7)
|
||||
- ✅ Commit message formatting
|
||||
- ✅ Binary exclusion from repository
|
||||
- ✅ Build cache exclusion
|
||||
|
||||
### Build System
|
||||
- ✅ Go modules setup
|
||||
- ✅ Fyne dependencies integration
|
||||
- ✅ FFmpeg/FFprobe external tool integration
|
||||
- ✅ SDL2 integration for audio
|
||||
- ✅ OpenGL bindings (go-gl) for video rendering
|
||||
- ✅ Cross-platform file path handling
|
||||
|
||||
### Asset Management
|
||||
- ✅ Application icon (VT_Icon.svg)
|
||||
- ✅ Icon export to PNG format
|
||||
- ✅ Icon embedding in application
|
||||
|
||||
### Logging & Debugging
|
||||
- ✅ Category-based logging (SYS, UI, MODULE, etc.)
|
||||
- ✅ Timestamp formatting
|
||||
- ✅ Debug output toggle via environment variable
|
||||
- ✅ Comprehensive debug messages throughout application
|
||||
- ✅ Log file output (videotools.log)
|
||||
|
||||
### Error Handling
|
||||
- ✅ FFmpeg execution error capture
|
||||
- ✅ File selection cancellation handling
|
||||
- ✅ Video parsing error messages
|
||||
- ✅ Process cancellation cleanup
|
||||
|
||||
### Utility Functions
|
||||
- ✅ Duration formatting (seconds to HH:MM:SS)
|
||||
- ✅ Aspect ratio parsing and calculation
|
||||
- ✅ File path manipulation
|
||||
- ✅ Temporary directory creation and cleanup
|
||||
|
||||
## Technical Achievements
|
||||
|
||||
### Architecture
|
||||
- ✅ Clean separation between UI and business logic
|
||||
- ✅ Shared state management across modules
|
||||
- ✅ Modular design allowing easy addition of new modules
|
||||
- ✅ Event-driven UI updates
|
||||
|
||||
### FFmpeg Integration
|
||||
- ✅ Dynamic FFmpeg command building
|
||||
- ✅ Filter chain construction for complex operations
|
||||
- ✅ Stream mapping for video/audio handling
|
||||
- ✅ Process execution with proper cleanup
|
||||
- ✅ Progress parsing from FFmpeg output (basic)
|
||||
|
||||
### Media Playback
|
||||
- ✅ Custom media player implementation
|
||||
- ✅ Frame extraction and display pipeline
|
||||
- ✅ Audio decoding and playback
|
||||
- ✅ Synchronization between audio and video
|
||||
- ✅ Embedded playback within application window
|
||||
- ✅ Checkpoint system for playback position
|
||||
|
||||
### UI/UX
|
||||
- ✅ Responsive layout adapting to content
|
||||
- ✅ Intuitive module selection
|
||||
- ✅ Clear visual feedback during operations
|
||||
- ✅ Logical grouping of related controls
|
||||
- ✅ Helpful hint labels for user guidance
|
||||
|
||||
## Milestones
|
||||
|
||||
- **2025-11-23** - v0.1.0-dev7 released with Source aspect ratio default
|
||||
- **2025-11-22** - Documentation reorganization and expansion
|
||||
- **2025-11-21** - Last successful binary build (GCC compatibility)
|
||||
- **Earlier** - v0.1.0-dev1 through dev6 with progressive feature additions
|
||||
- dev6: Aspect ratio controls and cancelable converts
|
||||
- dev5: Icon and basic UI improvements
|
||||
- dev4: Build cache management
|
||||
- dev3: Media player checkpoint
|
||||
- Earlier: Initial implementation and architecture
|
||||
|
||||
## Development Progress
|
||||
|
||||
### Lines of Code (Estimated)
|
||||
- **main.go**: ~2,500 lines (comprehensive Convert module, UI, player)
|
||||
- **Documentation**: ~1,500 lines across multiple files
|
||||
- **Total**: ~4,000+ lines
|
||||
|
||||
### Modules Status
|
||||
- **Convert**: 60% complete (core functionality working, advanced features pending)
|
||||
- **Inspect**: 20% complete (basic metadata display, needs dedicated module)
|
||||
- **Merge**: 0% (planned)
|
||||
- **Trim**: 0% (planned)
|
||||
- **Filters**: 0% (planned)
|
||||
- **Upscale**: 0% (planned)
|
||||
- **Audio**: 0% (planned)
|
||||
- **Thumb**: 0% (planned)
|
||||
- **Rip**: 0% (planned)
|
||||
|
||||
### Documentation Status
|
||||
- **Module Documentation**: 30% complete
|
||||
- ✅ Convert: Complete
|
||||
- ✅ Inspect: Complete
|
||||
- ✅ Rip: Complete
|
||||
- ⏳ Others: Pending
|
||||
- **Design Documents**: 50% complete
|
||||
- ✅ Persistent Video Context
|
||||
- ✅ Module Overview
|
||||
- ⏳ Architecture
|
||||
- ⏳ FFmpeg Integration
|
||||
- **User Guides**: 0% complete
|
||||
|
||||
## Bug Fixes & Improvements
|
||||
|
||||
### Recent Fixes
|
||||
- ✅ Fixed aspect ratio default from 16:9 to Source (dev7)
|
||||
- ✅ Stabilized video seeking and embedded rendering
|
||||
- ✅ Improved player window positioning
|
||||
- ✅ Fixed clear video functionality
|
||||
- ✅ Resolved build caching issues
|
||||
- ✅ Removed binary from git repository
|
||||
|
||||
### Performance Improvements
|
||||
- ✅ Optimized preview frame generation
|
||||
- ✅ Efficient FFmpeg process management
|
||||
- ✅ Proper cleanup of temporary files
|
||||
- ✅ Responsive UI during long operations
|
||||
|
||||
## Acknowledgments
|
||||
|
||||
### Technologies Used
|
||||
- **Fyne** - Cross-platform GUI framework
|
||||
- **FFmpeg/FFprobe** - Video processing and analysis
|
||||
- **SDL2** - Audio playback
|
||||
- **OpenGL (go-gl)** - Video rendering
|
||||
- **Go** - Primary programming language
|
||||
|
||||
### Community Resources
|
||||
- FFmpeg documentation and community
|
||||
- Fyne framework documentation
|
||||
- Go community and standard library
|
||||
|
||||
---
|
||||
|
||||
*Last Updated: 2025-11-23*
|
||||
- Forked and rebranded from VideoTools (module path, scripts, branding) with a clean docs layout under `docs/`.
|
||||
- Aligned git history with VideoTools so upstream sync and PRs are straightforward.
|
||||
- Minimal player-first UX: app boots directly into a dark landing screen with centered play icon, “Load Video” button, and drop hint.
|
||||
- Playlist basics: load single/multiple files or folders; prev/next navigation; list view when media is present.
|
||||
- Drag-and-drop: drop files or folders anywhere to load (folders are scanned for videos).
|
||||
- Player controls: play/pause, seek slider with time labels, volume/mute slider, prev/next track buttons, and session reuse for loaded media.
|
||||
- Queue/convert UI removed from the surface; only player UI is exposed (legacy code still present but hidden).
|
||||
|
|
|
|||
473
docs/TODO.md
473
docs/TODO.md
|
|
@ -1,447 +1,26 @@
|
|||
# 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
|
||||
# VT Player – TODO
|
||||
|
||||
## Near-term UI/UX
|
||||
- Replace placeholder play icon with a proper asset; keep centered “Load Video” and drop hint on any window size.
|
||||
- Tighten control bar (Haruna-like): cleaner spacing, distinct buttons, consistent sizing.
|
||||
- Add keyboard shortcuts (Space play/pause, Left/Right seek, +/- volume, F fullscreen).
|
||||
- Fullscreen toggle wired to player backend; ensure external ffplay window obeys target coords/sizing.
|
||||
|
||||
## Playback & Playlist
|
||||
- Add per-item remove/clear actions; optional recent-files list; drag-to-reorder playlist.
|
||||
- Show active item highlight and hover states; keep drop-to-playlist behavior for files/folders.
|
||||
- Verify drop handling on all platforms (Wayland/X11/Windows).
|
||||
|
||||
## Keyframing (next milestone)
|
||||
- Define keyframe data model and storage (per file).
|
||||
- Render markers/ticks on the seek bar; jump/add/delete keyframes with shortcuts.
|
||||
- Keep compatibility with VideoTools (same metadata format/paths).
|
||||
|
||||
## Integration with VideoTools
|
||||
- Keep `master` rebased on `upstream/master`; cherry-pick player changes to upstream PR branches when needed.
|
||||
- Document how to flip module paths/branding when preparing a PR back to VideoTools.
|
||||
|
||||
## Cleanup/Codebase
|
||||
- Remove unused convert/queue/compare code paths and dead menu logic once player is stable.
|
||||
- Simplify `main.go` by moving player view/controls into dedicated files.
|
||||
- Delete old VideoTools-only docs/content that no longer applies once we finish the pruning.
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user