Critical fixes for GStreamer playback:
1. Add preroll waiting in GStreamer.Load():
- Wait for ASYNC_DONE message after setting to PAUSED
- Ensures first frame is ready before playback
- Prevents black screen on load
2. Fix frameDisplayLoop to always pull frames:
- Remove paused check that blocked frame extraction
- Frames now pulled even when paused (enables scrubbing)
- Only update progress bar when playing
3. Add comprehensive logging:
- Log each frame update with size and timestamp
- Debug frame pull errors
- Track paused state during updates
4. Fix initial paused state:
- Explicitly set paused=true after load
- Matches GStreamer's PAUSED state
These changes fix:
- Black screen issue (no frames displaying)
- Scrubbing not working (frames not available when paused)
- Fast duration counting (progress only updates when playing)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>