Commit Graph

238 Commits

Author SHA1 Message Date
5d8f34f320 Reuse shared PlayerState enum 2026-01-10 15:50:34 -05:00
14599f4df5 Add GStreamer player state machine 2026-01-10 15:46:32 -05:00
be76b0eaa1 Add GStreamer bus loop and events 2026-01-10 04:56:13 -05:00
5b936f4cab Pull preroll frames when paused 2026-01-10 03:22:34 -05:00
407269b6c7 Improve GStreamer frame stepping reliability 2026-01-10 03:08:18 -05:00
48fc94acb8 Prime GStreamer frames after seeks 2026-01-10 03:05:07 -05:00
15b09ee9df Fix GStreamer appsink timeout type 2026-01-10 02:54:32 -05:00
9ff49460e2 Fix GStreamer message type check 2026-01-10 02:53:06 -05:00
3f1fe74a9a Harden GStreamer playback pacing and errors 2026-01-10 02:50:38 -05:00
fbf93fc9a3 Scope history clear to active tab 2026-01-10 01:39:57 -05:00
c72443b3c6 Keep history tab selection and add clear all 2026-01-10 01:36:17 -05:00
7f8f045680 refactor(player): remove legacy UnifiedPlayer, GStreamer now mandatory
- Removed unified_ffmpeg_player.go and unified_player_adapter.go
- Updated frame_player_gstreamer.go to remove UnifiedPlayer fallback
- Updated frame_player_default.go to return error when GStreamer unavailable
- Updated PROJECT_STATUS.md: Player module now fully implemented with GStreamer
- Removed critical issues note about Player A/V sync problems

GStreamer is now the sole playback backend, providing stable A/V
synchronization and frame-accurate seeking. The broken FFmpeg pipe-based
UnifiedPlayer has been completely removed.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-09 22:02:22 -05:00
9c801e4910 fix(player): ensure GStreamer produces and displays frames properly
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>
2026-01-09 19:22:08 -05:00
501e2622dc feat(player): integrate GStreamer for stable video playback
- Add GStreamer as mandatory core dependency in install.sh
- Create controller_gstreamer.go wrapping GStreamerPlayer
- Add missing methods to GStreamerPlayer (SetWindow, Stop, SetFullScreen)
- Fix GstSeekFlags type casting issue
- Update build scripts to always use -tags gstreamer
- Update controller_linux.go build tag to exclude when gstreamer enabled
- Add comprehensive migration documentation

GStreamer replaces the broken FFmpeg pipe-based UnifiedPlayer.
GStreamer 1.26+ provides frame-accurate seeking and reliable A/V sync.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-09 03:43:34 -05:00
68df790d27 Fix player frame generation and video playback
Major improvements to UnifiedPlayer:

1. GetFrameImage() now works when paused for responsive UI updates
2. Play() method properly starts FFmpeg process
3. Frame display loop runs continuously for smooth video display
4. Disabled audio temporarily to fix video playback fundamentals
5. Simplified FFmpeg command to focus on video stream only

Player now:
- Generates video frames correctly
- Shows video when paused
- Has responsive progress tracking
- Starts playback properly

Next steps: Re-enable audio playback once video is stable
2026-01-07 22:20:00 -05:00
205724d7c1 Add timeout and no-stdin for thumbnail jobs 2026-01-07 16:04:40 -05:00
38c0d3e62f Enforce display aspect ratio in conversions 2026-01-07 15:38:34 -05:00
52beb6dac8 Restore UI noise opacity to 3 percent 2026-01-07 15:29:56 -05:00
fd1feb1641 Lower UI noise opacity 2026-01-07 15:11:22 -05:00
11cd7dc885 Add static UI noise overlay 2026-01-07 15:02:28 -05:00
a8d2096686 Reduce default UI text sizes 2026-01-07 13:49:13 -05:00
bc0b4f7ad3 Add GStreamer preview backend 2026-01-07 02:50:27 -05:00
7beae3db3e Stabilize unified player preview buffers 2026-01-07 02:30:28 -05:00
0b17b447bc Fix unified player load err scoping 2026-01-07 02:28:36 -05:00
de4416868e Run unified player in preview-only mode 2026-01-07 02:27:46 -05:00
b7f1cd0737 Fix unified player frame reader contention 2026-01-07 02:24:49 -05:00
a4ad5ff8ff Add fyne import for UI thread updates 2026-01-07 02:21:52 -05:00
9a87a7e28f Fix UI thread update in unified player adapter 2026-01-07 02:20:53 -05:00
2c75a2fd75 Guard unified player zero frame rate 2026-01-07 02:01:39 -05:00
19b8343c66 Improve branding layout and fix GNOME icon 2026-01-07 01:59:16 -05:00
91c6caeaa0 Fix author logo preview, scrolling, and icons 2026-01-07 01:42:03 -05:00
a15b2668d3 fix: remove broken logging file and use fixed version
- Remove duplicate Error/Fatal function definitions
- Replace internal/logging/logging_broken.go with internal/logging/logging.go
- Ensure build uses working logging system
- Resolve persistent syntax errors blocking compilation
2026-01-07 01:15:54 -05:00
f13b367ef3 fix: replace logging.go with working version to resolve build syntax errors
- Create logging_fixed.go with proper function closure
- Remove duplicate Error/Fatal function definitions
- Fix missing closing braces and orphaned code
- Maintain all logging functionality while fixing syntax
- Add proper error handling and stack trace support
- Organized logging system for easier crash debugging

This should resolve the persistent 'non-declaration statement' errors that were blocking the build.
2026-01-07 01:13:18 -05:00
9bc5844675 fix: resolve logging syntax error on line 198
- Remove stray closing brace causing non-declaration error
- Clean up duplicate closing braces in Fatal function
- Ensure proper function closure and syntax
- Keep note about infinite loop prevention
2026-01-07 00:09:59 -05:00
b46e56e605 fix: resolve duplicate logging functions
- Remove duplicate Error and Fatal function definitions
- Fix missing closing brace in Fatal function
- Clean up duplicate history tracking code
- Ensure proper function closure and syntax
2026-01-07 00:06:08 -05:00
9ba9fbfc3b fix: resolve logging syntax errors
- Fix missing closing brace in Error function
- Remove stray empty line causing syntax error
- Ensure all functions are properly closed
- Maintain structured logging functionality
2026-01-07 00:04:37 -05:00
48eff3c8a1 feat: Add crash-safe logging and panic recovery
- 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)
2026-01-06 23:59:19 -05:00
0af9d7790e Fix oto v3 audio player integration 2026-01-06 21:46:01 -05:00
68738cf1a5 Author menu sections and menu options 2026-01-06 21:31:17 -05:00
46d8bd0f93 Add DVD menu tab with theme and logo controls 2026-01-06 21:04:58 -05:00
860234255e Increase color separation for formats and codecs 2026-01-06 18:48:57 -05:00
Stu Leak
ac030e9f2f fix(player): resolve build errors in UnifiedPlayerAdapter
- Remove unused sync/atomic import
- Replace undefined BackendUnified with BackendAuto
- Fix compilation issues for successful build
2026-01-06 18:11:30 -05:00
Stu Leak
d97baf94fb feat(player): implement UnifiedPlayerAdapter for stable A/V playback
- Add UnifiedPlayerAdapter to wrap UnifiedPlayer with playSession interface
- Replace dual-process player with unified A/V synchronization
- Maintain full UI compatibility with existing controls
- Support frame-accurate seeking, playback, and volume control
- Eliminate A/V sync crashes from separate video/audio processes
- Provide clean foundation for dev25 advanced features

Key changes:
- UnifiedPlayerAdapter implements all playSession methods
- Seamless integration with existing UI code
- Graceful fallback to dual-process if needed
- Stable single-process audio/video synchronization
2026-01-06 18:09:43 -05:00
Stu Leak
7369e5fe6a Document authoring content types and galleries 2026-01-06 18:03:46 -05:00
Stu Leak
618cfd208e Wire convert state manager callbacks 2026-01-06 17:52:46 -05:00
Stu Leak
3edb956fdf dev24 foundation: implement state manager, CRF/VBR modes, unified player integration 2026-01-06 17:01:12 -05:00
Stu Leak
895c696b88 feat(upscale): add blur control 2026-01-06 17:01:06 -05:00
Stu Leak
3ba3deab8b chore(dev24): update tracking and ui palette 2026-01-06 16:50:12 -05:00
Stu Leak
6c43c33fab Update codec palette and add new VT logos 2026-01-06 02:15:45 -05:00
Stu Leak
60fed79840 Fix CRF UI sync and stabilize player 2026-01-04 16:45:08 -05:00