Repository navigation
Address review feedback and improve native renderer quality - #497
Merged
fduncanh merged 1 commit intoFeb 6, 2026
Merged
Conversation
Fixes the three issues raised in PR FDH2#490 review: - Space bar pause/resume: moved pause check from pre-decode to post-decode so the decoder stays fed and video resumes instantly - Idle screen: updated hint text to mention fullscreen toggle and pause - Cover art in audio-only mode (-ca): preserved cover art state across stream resets so album art persists until track changes Additional improvements: - Fix video not displaying on iPad Pro (missing IOSurface backing on decoder output buffers, required for CVMetalTextureCache) - Add error logging for Metal texture creation failures - Detect stalled streams (e.g. phone locked) and return to idle screen - Triple-buffered GPU pipeline with dispatch semaphore for smooth pacing - Frame pacing via presentDrawable:afterMinimumDuration: to eliminate micro stutters from decode timing jitter - Match display native refresh rate instead of hardcoded 60fps - Skip redundant GPU work when no new frame has been decoded - Add toggleable FPS debug overlay (D key or Debug menu) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Collaborator
|
@Acelogic The pause now works, for the video (in the sense of freezing the screen, and restarting at the current video when resumed), |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Addresses the three issues raised by @fduncanh in PR #490, plus several rendering quality improvements:
Bug fixes from review:
video_renderer_render_buffer) to post-decode (decompress_callback), so the H.264/H.265 decoder stays fed with reference frames while paused and video resumes instantly on unpause-ca) - Preserved cover art state across stream resets invideo_renderer_stop(), so album art persists until track changes. Implementedvideo_renderer_cycle()to properly clear expired cover artRendering fixes:
kCVPixelBufferIOSurfacePropertiesKeyto decoder output buffer attributes, required forCVMetalTextureCacheCreateTextureFromImageto map pixel buffers to Metal texturesPerformance improvements:
dispatch_semaphore_create(3)withaddCompletedHandlerfor smooth GPU pipeliningpresentDrawable:afterMinimumDuration:with estimated source frame interval to eliminate micro stutters from decode timing jitterNSScreen.mainScreen.maximumFramesPerSecondinstead of hardcoded 60fpsNew feature:
Dkey or Debug > Show FPS Overlay menu. Shows render fps, source fps, frame interval, and total frame countTest plan
-caflag - cover art should persist🤖 Generated with Claude Code