Commit Graph

237 Commits

Author SHA1 Message Date
5139ae8f4e Add GStreamer player state machine 2026-01-10 15:46:32 -05:00
2403e4fe46 Add GStreamer bus loop and events 2026-01-10 04:56:13 -05:00
237c496678 Pull preroll frames when paused 2026-01-10 03:22:34 -05:00
b6790600c9 Improve GStreamer frame stepping reliability 2026-01-10 03:08:18 -05:00
d1dfde120e Prime GStreamer frames after seeks 2026-01-10 03:05:07 -05:00
1c23009a6c Fix GStreamer appsink timeout type 2026-01-10 02:54:32 -05:00
8b6d7f02a3 Fix GStreamer message type check 2026-01-10 02:53:06 -05:00
17a9a7eec8 Harden GStreamer playback pacing and errors 2026-01-10 02:50:38 -05:00
1a5e29c372 Scope history clear to active tab 2026-01-10 01:39:57 -05:00
2d76dc9d6b Keep history tab selection and add clear all 2026-01-10 01:36:17 -05:00
749bdc6bf9 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.
2026-01-09 22:02:22 -05:00
6a604dbb35 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)
2026-01-09 19:22:08 -05:00
57eecf96df 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.
2026-01-09 03:43:34 -05:00
bdc27c2253 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
6dc03201af Add timeout and no-stdin for thumbnail jobs 2026-01-07 16:04:40 -05:00
a0bcdd55e2 Enforce display aspect ratio in conversions 2026-01-07 15:38:34 -05:00
4395cd99e6 Restore UI noise opacity to 3 percent 2026-01-07 15:29:56 -05:00
02a11c057e Lower UI noise opacity 2026-01-07 15:11:22 -05:00
306d581c69 Add static UI noise overlay 2026-01-07 15:02:28 -05:00
e68a3e9ee6 Reduce default UI text sizes 2026-01-07 13:49:13 -05:00
88bc5ad4d4 Add GStreamer preview backend 2026-01-07 02:50:27 -05:00
79785b26b3 Stabilize unified player preview buffers 2026-01-07 02:30:28 -05:00
98bc6f903b Fix unified player load err scoping 2026-01-07 02:28:36 -05:00
d8c649427b Run unified player in preview-only mode 2026-01-07 02:27:46 -05:00
037b771b0d Fix unified player frame reader contention 2026-01-07 02:24:49 -05:00
ca98c2c338 Add fyne import for UI thread updates 2026-01-07 02:21:52 -05:00
4eef2a0320 Fix UI thread update in unified player adapter 2026-01-07 02:20:53 -05:00
d41bdb3557 Guard unified player zero frame rate 2026-01-07 02:01:39 -05:00
b1ddf81f4d Improve branding layout and fix GNOME icon 2026-01-07 01:59:16 -05:00
d6305fe92f Fix author logo preview, scrolling, and icons 2026-01-07 01:42:03 -05:00
fb2a793c05 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
9bdc705ddd 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
42f27a4bdf 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
58f54ddb79 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
d6e1b14e7d 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
3c6e57d0b4 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
58886920a8 Fix oto v3 audio player integration 2026-01-06 21:46:01 -05:00
4e53886fe3 Author menu sections and menu options 2026-01-06 21:31:17 -05:00
c5efd222a9 Add DVD menu tab with theme and logo controls 2026-01-06 21:04:58 -05:00
b7afb3a48e Increase color separation for formats and codecs 2026-01-06 18:48:57 -05:00
Stu Leak
1cd38865f0 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
3927f05b62 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
d10ebbee8f Document authoring content types and galleries 2026-01-06 18:03:46 -05:00
Stu Leak
aa6d335d80 Wire convert state manager callbacks 2026-01-06 17:52:46 -05:00
Stu Leak
f7b5d9f87e dev24 foundation: implement state manager, CRF/VBR modes, unified player integration 2026-01-06 17:01:12 -05:00
Stu Leak
3bc9a4137e feat(upscale): add blur control 2026-01-06 17:01:06 -05:00
Stu Leak
f166680040 chore(dev24): update tracking and ui palette 2026-01-06 16:50:12 -05:00
Stu Leak
e6df3d8d19 Update codec palette and add new VT logos 2026-01-06 02:15:45 -05:00
Stu Leak
57f2076f9f Fix CRF UI sync and stabilize player 2026-01-04 16:45:08 -05:00
Stu Leak
860076cab7 Use fyne.Do for popup updates 2026-01-04 12:56:40 -05:00