- Create organized logging system with subfolders - Add dedicated crash log (logs/crashes.log) - Add specific log paths for different components - Implement panic recovery with stack traces - Add crash-safe logging functions - Update UnifiedPlayer with better error handling and recovery - Special handling for test video file - Add comprehensive testing checklist for Phase A This makes crashes much easier to diagnose and debug when testing the UnifiedPlayer implementation. Files: - internal/logging/logging.go (enhanced) - internal/player/unified_ffmpeg_player.go (crash-safe) - TESTING_CHECKLIST.md (comprehensive checklist) - CONVERSION_MODULARIZATION_PLAN.md (dev25 preparation)
77 lines
3.0 KiB
Markdown
77 lines
3.0 KiB
Markdown
# UnifiedPlayer Testing Checklist
|
|
|
|
## 🎬 Video Functionality Testing
|
|
- [ ] Basic video playback starts without crashing
|
|
- [ ] Video frames display correctly in Fyne canvas
|
|
- [ ] Frame rate matches source video (30fps, 24fps, 60fps)
|
|
- [ ] Resolution scaling works properly
|
|
- [ ] No memory leaks during video playback
|
|
- [ ] Clean video-only playback (no audio stream files)
|
|
|
|
## 🔊 Audio Functionality Testing
|
|
- [ ] Audio plays through system speakers
|
|
- [ ] Audio volume controls work correctly (0-100%)
|
|
- [ ] Mute/unmute functionality works
|
|
- [ ] A/V synchronization stays in sync (no drift)
|
|
- [ ] Audio works with different sample rates
|
|
- [ ] Audio stops cleanly on Stop()/Pause()
|
|
|
|
## ⚡ Play/Pause/Seek Controls
|
|
- [ ] Play() starts both video and audio immediately
|
|
- [ ] Pause() freezes both video and audio frames
|
|
- [ ] Seek() jumps to correct timestamp instantly
|
|
- [ ] Frame stepping works frame-by-frame
|
|
- [ ] Resume after pause continues from paused position
|
|
|
|
## 🛠️ Error Handling & Edge Cases
|
|
- [ ] Missing video file shows user-friendly error
|
|
- [ ] Corrupted video file handles gracefully
|
|
- [ ] Unsupported format shows clear error message
|
|
- [ ] Audio-only files handled without crashes
|
|
- [ ] Resource cleanup on player.Close()
|
|
|
|
## 📊 Performance & Resource Usage
|
|
- [ ] CPU usage is reasonable (<50% on modern hardware)
|
|
- [ ] Memory usage stays stable (no growing leaks)
|
|
- [ ] Smooth playback without stuttering
|
|
- [ ] Fast seeking without rebuffering delays
|
|
- [ ] Frame extraction is performant at target resolution
|
|
|
|
## 📋 Cross-Platform Testing
|
|
- [ ] Works on different video codecs (H.264, H.265, VP9)
|
|
- [ ] Handles different container formats (MP4, MKV, AVI)
|
|
- [ ] Works with various resolutions (720p, 1080p, 4K)
|
|
- [ ] Audio works with stereo/mono sources
|
|
- [ ] No platform-specific crashes (Linux/Windows/Mac)
|
|
|
|
## 🔧 Technical Validation
|
|
- [ ] FFmpeg process starts with correct args
|
|
- [ ] Pipe communication works (video + audio)
|
|
- [ ] RGB24 → RGBA conversion is correct
|
|
- [ ] oto audio context initializes successfully
|
|
- [ ] Frame display loop runs at correct timing
|
|
- [ ] A/V sync timing calculations are accurate
|
|
|
|
## 🎯 Key Success Metrics
|
|
- [ ] Video plays without crashes
|
|
- [ ] Audio is audible and in sync
|
|
- [ ] Seeking is frame-accurate and responsive
|
|
- [ ] Frame stepping works perfectly
|
|
- [ ] Resource usage is optimal
|
|
- [ ] No memory leaks or resource issues
|
|
|
|
## 📝 Testing Notes
|
|
- **File**: [Test video file used]
|
|
- **Duration**: [Video length tested]
|
|
- **Resolution**: [Input and output resolutions]
|
|
- **Issues Found**: [List any problems discovered]
|
|
- **Performance**: [CPU/Memory usage observations]
|
|
- **A/V Sync**: [Any sync issues noted]
|
|
- **Seek Accuracy**: [Seek performance observations]
|
|
|
|
## 🔍 Debug Information
|
|
- **FFmpeg Args**: [Command line arguments used]
|
|
- **Audio Context**: [Sample rate, channels, format]
|
|
- **Buffer Sizes**: [Video frame and audio buffer sizes]
|
|
- **Error Logs**: [Any error messages during testing]
|
|
- **Pipe Status**: [Video/audio pipe communication status] |