Commit Graph
364 Commits
Author SHA1 Message Date
Travis Thieman df2b67ac99 Fix thread sync
Reformat Metal files

Rewrite Metal render loop to not use DisplayLink so we can use the amazing afterMinimumDuration API call

Improve frame drop algorithm

Misc fixes to HDR <-> SDR switching, deprecation warning cleanup

Fix AVSB mode

Fix renderingBackend selected value

Add Rendering Backend setting to iPhone

Let users choose which renderer to use. Refactor metrics into a singleton

Fix tvOS build

Port moonlight-qt's Metal renderer

Bump imgui to latest

Misc tweaks and refactoring

Switch iOS to use Opus float32 audio, in line with other clients.  It was already being sent from the server as float32, so this is simply decoding it with less loss of dynamic range.

Give FrameQueue a faster data structure and full test coverage. Remove pts frame pacing, it's not a fit for iOS.

Don't allow very transparent opacity for middle stats overlay box

Change wording to select button instead of remote button

Add tvOS gesture for double-clicking remote button to show/hide stats

Remove kVTDecodeFrame_1xRealTimePlayback, this was found to seriously impact decode times

Move decode time stat out of async block

Enabe FQ logging

Misc cleanup/fixes

iPad: 26 will require UIRequiresFullScreen to be false, and for all orientations to be supported

Updated iPhone and iPad settings panels

Add setting for graph opacity. Enable stats and graphs to be toggled via two finger swipe

Fix wait time in displaylink, fix settings spacing, stats fixes

Settings for frame queue size, graphs. Misc refactoring and cleanup

Bump moonlight-common-c

Improve logging readability

Fix host frametime and frame queue stats to be recorded during input not output. Show min/max/avg decode time

Add bytes per frame graph

Started on settings changes, both modes working very well

Misc refactoring, move graphs around, both pacing functions working well

Set frameDropTarget to 2 always

Use raw RTP timestamps without converting to floating point for even more accurate playback

Standard frame pacing: remove +3 logic

Switch to NSRunLoopCommonModes for displayLink

Add frame pacing algorithm based on moonlight-qt's Pacer class as a simpler baseline

Switch to os_unfair_lock, misc tweaks

Large refactor that now uses VTDecompressionSession based on PR535 from felipejfc. This now allows more control over queue size and allows dropping arbitrary frames, but introduces a lot of new problems

bump moonlight-common-c to fix 32-bit rollover issue

LiWait timing graph

Add displaylink interval graph

Graphs checkpoint

ImGui graph working checkpoint

ImGui working checkpoint

Add pending frames to stats, add a define for verbose logging

DisplayLink WIP

Add imgui & implot modules

Frame pacing: alternate method based on thieman's pullFrames thread

Frame pacing: simplify displayLink, support passing targetTimestamp down to the sample buffer

Point to my common-c with some timing changes.

Add stats gestures: 2-finger swipe down to show stats, and 2-finger swipe up to hide

Limit refresh rate to 60 when in low power mode

Display screen refresh rate in stats overlay, remove decode time and explain why it can't be measured

Adjust the refresh rate of the display to match the stream framerate and improve battery life

Don't use presentationTimeMs when creating CMSampleTimingInfo

Fix overlayView build for iOS

Refactor CADisplayLink callback for improved frame delivery. Support a user-configurable buffered frame count.

[opt] Use UILabel for stats overlay
2025-07-11 21:02:13 +08:00
TrueZhuanjia ee03f6b866 further renaming 2025-06-26 22:15:18 +08:00
TrueZhuanjia 9e41537554 rebrand project to VoidLink 2025-06-26 21:23:11 +08:00
TrueZhuanjia 9063331d38 - button down action for MOUSEPAD 2025-06-26 01:17:31 +08:00
TrueZhuanjia 6bc142a07b - notification lifecycle fixes - replace some notifications with delegates
- fix osw profile switch issue
2025-06-22 21:25:29 +08:00
TrueZhuanjia cd4c5bbc56 - legacy osc vibration style
- vibration style ios13 compatibility
- low ios verision UI fixes
2025-06-22 10:11:11 +08:00
TrueZhuanjia 47bae92dd5 downsized widget panel for iphone 2025-06-20 00:35:02 +08:00
TrueZhuanjia 24fd69e7dc softkeyboard & layout osw gesture interaction 2025-06-14 01:12:16 +08:00
TrueZhuanjia 16b1f9164f new touch mode config 2025-06-13 18:12:08 +08:00
TrueZhuanjia 51a62ce1d8 settings menu resize 2025-06-13 12:39:16 +08:00
TrueZhuanjia 78be18ed89 visibility improvements 2025-06-10 23:42:23 +08:00
TrueZhuanjia 5fd8a7c587 on-screen widget tool icon compatibility 2025-06-10 21:05:34 +08:00
TrueZhuanjia 8e00552c61 - new on-screen widget tool UI with movable widget panel
with iOS12 compatibility
2025-06-09 20:28:41 +08:00
TrueZhuanjia fabd01ca9e restore osc profile decode for ios12 2025-06-07 22:30:08 +08:00
TrueZhuanjia dfaa4005bb - newUI ios12 compatibility
- settings wighet them color
- minor tweaks
2025-06-07 21:28:40 +08:00
TrueZhuanjia a64a29ce07 simulates ios 12 2025-06-07 18:25:45 +08:00
TrueZhuanjia 6fd35deaa4 rebranding 2 2025-06-06 12:04:54 +08:00
TrueZhuanjia d80c2e35ca rebranding 1 2025-06-06 12:00:23 +08:00
TrueZhuanjia 6ae3beb2a5 - hostCardButtonActionDelegate
- better theme color management
2025-05-31 12:00:32 +08:00
TrueZhuangjia 8f674d6a3d mark copyright 2025-05-14 11:01:24 +08:00
TrueZhuangjia d3b62e38fc Onscreen Widget Tool:
- edit/duplicate function support
- opened from cmd tool by sliding from screen edge
2025-05-13 23:18:32 +08:00
TrueZhuangjia c8ebdc0a88 disable async touch down&move priorities by GUI 2025-04-09 21:21:23 +08:00
TrueZhuangjia 711996b478 async touch qos & setting option 2025-04-08 22:15:11 +08:00
TrueZhuangjia a43fe609d3 tweak qos for async native touch 2025-04-04 16:39:00 +08:00
TrueZhuangjia 2712922ce5 setting option for async native touch 2025-04-04 14:29:54 +08:00
TrueZhuangjia 302606564c tweak dPad & L3R3 indicator 2025-04-03 01:04:03 +08:00
TrueZhuangjia f260d75372 preset advanced widget template profile 2025-04-03 00:13:52 +08:00
TrueZhuangjia a03a50d238 guide lines optimizations for legacy osc buttons 2025-04-02 20:35:14 +08:00
TrueZhuangjia 928284990b minor fixes 2025-04-02 16:59:35 +08:00
TrueZhuangjia 03046988c7 "airplay" for default external display mode 2025-04-02 10:39:32 +08:00
TrueZhuangjia c860433065 relative touch rollback 2025-04-01 22:22:52 +08:00
TrueZhuangjia 5d66c17bc1 fix LSPAD, RSPAD indicator visual effect glitches 2025-03-30 14:00:25 +08:00
TrueZhuangjia 589c025951 tweak on-screen widget resizing 2025-03-30 11:58:34 +08:00
TrueZhuangjia 7fbfe94b71 fix legacy osc button L1 R1 position shift after being duplicated 2025-03-30 10:36:54 +08:00
TrueZhuangjia 27bb8fd737 tweak storyboard 2025-03-29 22:03:18 +08:00
TrueZhuangjia cc285d5488 export profile Data 2025-03-29 21:44:06 +08:00
TrueZhuangjia c8522de476 normalize legacy controller position 2025-03-29 20:22:32 +08:00
TrueZhuangjia 94f2e39367 passing streamViewBounds 2025-03-29 19:43:03 +08:00
TrueZhuangjia 420eebf831 async mouse move event for relative touch handler 2025-03-29 14:47:56 +08:00
TrueZhuangjia 24442c29bb touchPad move event async 2025-03-29 13:43:51 +08:00
TrueZhuangjia 871315c2bc - async native touch passthrough
- touchMoveEvent interval tweak
2025-03-29 00:51:05 +08:00
TrueZhuangjia 7b116b936c sensitivity tweak for direction touchpads (wasdpad, arrowpad, dpad) 2025-03-24 01:24:15 +08:00
TrueZhuangjia 9aa84c03d7 - button-touchPad hybrid widgets
- minimum stick offset for stick widgets
- expand controller cmd strings to playStation style
2025-03-24 00:36:24 +08:00
TrueZhuangjia 471325a358 - tweaking genshinImpact RsvPads ("YSB", "YSRT", "YSRB", "YSRSV") 2025-03-23 00:37:58 +08:00
TrueZhuangjia 978ab18cee - timeInterval command for super combo keys
- expand keyboardButtonMappings dict
2025-03-22 21:57:05 +08:00
TrueZhuangjia eca0b30728 - special game widget: YSLT for genshinImpact
- rename YSxx1 cmds to YSxx
2025-03-22 01:11:35 +08:00
TrueZhuangjia 9ade4b5ae0 special game widgets: YSRB1 2025-03-21 23:14:16 +08:00
TrueZhuangjia 4f8c5189e0 special game widgets: YSWASD, YSMR 2025-03-21 22:57:18 +08:00
TrueZhuangjia 0f2d54e8c0 - configurable on screen widget shape
- special game widgets: YSB1, YSRT1 for genshinImapct
2025-03-21 21:36:54 +08:00
TrueZhuangjia 70e5b3520c - fix the issue of previous selected on-screen widget get deleted when deleting legacy osc button
- coding improvements for on-screen widget deletion
2025-03-02 21:47:57 +08:00