Commit Graph
60 Commits
Author SHA1 Message Date
Acaki b3664d0e2d refactor: remove unnecessary changes 2025-08-16 04:09:02 +08:00
Acaki 47a590e92a Merge branch 'Integration' into feat/frame_pacing_metal
# Conflicts:
#	VoidLink.xcodeproj/project.pbxproj
#	VoidLink/Base.lproj/iPad.storyboard
#	VoidLink/Database/DataManager.m
#	VoidLink/Database/TemporarySettings.m
#	VoidLink/SceneDelegate.h
#	VoidLink/Stream/StreamManager.m
#	VoidLink/Stream/VideoDecoderRenderer.h
#	VoidLink/Stream/VideoDecoderRenderer.m
#	VoidLink/ViewControllers/MainFrameViewController.m
#	VoidLink/ViewControllers/SettingsViewController.m
2025-07-12 20:12:20 +08:00
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
Acaki b5ce7a8ff7 refactor: adopt UIScene lifecycle
feat: add initial support for pip

feat: add setting toggle for pip

fix: let os handle invokation of pip which is more reliable

fix: UIScene compatibility with airplay

fix: black screen on external display when on app view and streaming

fix: incorrect window size when launched directly on external display

fix: wrong resolution shown in settings when in stream session

Enable gamemode flag for iOS18+

Explicitly enters pip mode when in background
2025-07-11 01:34:53 +08:00
TrueZhuanjia d26cef7ef4 rounded icon 2025-06-29 16:35:06 +08:00
TrueZhuanjia ee03f6b866 further renaming 2025-06-26 22:15:18 +08:00
TrueZhuangjia 1737eae39b old iOS compatibility fixes:
- strong settingButton reference
- hidden stackView heightContraint
- navBarAppearance
2025-06-15 23:01:22 +08:00
TrueZhuanjia ed0045afec Other section & experimental section 2025-06-14 19:30:44 +08:00
TrueZhuanjia de5fb7a19b - Dynamic Label & its hiding mechanism
-
2025-06-14 18:09:31 +08:00
TrueZhuanjia e2bebbcc61 peripheral section 2025-06-14 10:52:27 +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 23b68b2d15 videoSection 2025-06-12 17:34:53 +08:00
TrueZhuanjia 7ee449c0e4 yuv444switch 2025-06-12 17:22:28 +08:00
TrueZhuanjia da47a6ae46 hdrSwitch 2025-06-12 13:38:54 +08:00
TrueZhuanjia ab31ab393a video section - resolution new design & dynamic label for settings stacks 2025-06-11 23:41:37 +08:00
TrueZhuanjia 3120cd785b - auto save favorite settings with order
- auto setup morebutton menu in 2 settings mode
2025-06-05 17:39:23 +08:00
TrueZhuanjia 59660840e4 favorite settings basic fuction 2025-06-04 01:49:59 +08:00
TrueZhuanjia 2775ca09c7 - settings menu nav more bar button and separatorLine
- settings menu hit test
2025-06-03 20:58:04 +08:00
TrueZhuangjia 561080568c - modularized settings widgets for iPad
- navBar for settings menu
2025-05-17 22:40:10 +08:00
TrueZhuangjia 8f674d6a3d mark copyright 2025-05-14 11:01:24 +08:00
TrueZhuangjia 711996b478 async touch qos & setting option 2025-04-08 22:15:11 +08:00
TrueZhuangjia 2712922ce5 setting option for async native touch 2025-04-04 14:29:54 +08:00
TrueZhuangjia 871315c2bc - async native touch passthrough
- touchMoveEvent interval tweak
2025-03-29 00:51:05 +08:00
TrueZhuangjia ebec9877b0 fix some traditional Chinese localization errors 2025-03-02 18:02:10 +08:00
Acaki 5302f418db feat: add YUV444 toggle 2025-02-20 00:09:16 +08:00
TrueZhuangjia 8506640d7f change allowPortrait to unlockDisplayOrientationInStreaming 2025-01-05 12:54:08 +08:00
TrueZhuangjia 858843ff9a rename & refactor mouseMode to localMousePointerMode 2025-01-04 20:59:40 +08:00
xzzpig 62ae63d7f6 Allow not capture mouse 2024-11-29 23:00:54 +08:00
xzzpig 589ca19e4f Add AirPlay support 2024-11-29 12:04:08 +08:00
xzzpig d7bb9483e4 Update resolution table when mainView loaded 2024-11-19 14:56:33 +08:00
TrueZhuangjia 22b4cc6222 - add option to reverse physical mouse wheel direction
- add slider widget to adjust the size of tap exclusion area for on-screen buttons
2024-09-12 23:43:32 +08:00
True Zhuanjia 69f5fbef31 - Resolving app crash which happens occasionally after slide from screen edge
- Slide from upper 40% of left & right screen edge to open in-stream menus will  no longer sends touch event to remote PC
2024-08-22 19:49:09 +08:00
True Zhuanjia ba4af74a9d make on-screen L1/R1 & left & right stick larger by setting option 2024-08-20 21:18:06 +08:00
True Zhuanjia d90bf747fc add OSC visual feedback & corresponding menu option.
adjust menu option layout for iPhone
2024-08-10 21:02:35 +08:00
True Zhuanjia 039bf549a9 refactor coding & settings menu for command sending tool 2024-07-26 00:19:39 +08:00
True Zhuanjia 2de3197ca9 runtime orientation limitation, tested on iOS17.2 (probably need iOS16+, not working with iOS14) 2024-07-13 13:55:10 +08:00
True Zhuanjia 36ba82dd16 go back to stream view button on ipad 2024-07-11 23:32:17 +08:00
True Zhuanjia 56fc18c378 add exit button by storyboard, config widget disabling in streamview settingview 2024-07-09 22:42:01 +08:00
True Zhuanjia 94addc69f7 res auto load improvement 2024-07-07 03:48:53 +08:00
True Zhuanjia 329c9b7b92 add touch mode label description 2024-07-04 20:47:21 +08:00
True Zhuanjia b79a762ce1 enhanced CustomOSC, allow users to rebase OSC in stream view 2024-06-26 03:16:41 +08:00
True Zhuanjia 0bac5f1ae9 CustomOSC first integration 2024-06-24 23:15:55 +08:00
True Zhuanjia a5c8224023 add mouse pointer velocity tweak for trackpad (relative) mode 2024-06-23 21:31:18 +08:00
True Zhuanjia 873269e410 Native touch oriented improvements 2024-06-01 16:37:04 +08:00
Cameron Gutman 6974cda328 Extend codec configuration option for AV1 support 2023-11-03 23:13:44 -05:00
goob47 f8a76e4584 Add support for full screen and safe area resolutions (#577)
Display full width x height in label below the resolution switcher
2023-09-29 01:03:47 -05:00
IonBlade2K b9e0b28adc Add setting to swap A<->B and X<->Y buttons (#513)
* Added toggle for swapping A<->B and X<->Y buttons to enable proper button mapping for combined Joy-Cons in iOS16, where iOS level remapping is not supported and pushing Switch B (bottom face button) sends Xbox B (right face button) instead of Xbox A (bottom face button), etc.  Allows user to select between current behavior (button letter matches output) and muscle-memory behavior (face button pressed matches location of face button output)
2022-07-21 20:09:22 -05:00
Cameron Gutman 54d1851c78 Add HDR toggle for iOS 2022-03-27 13:18:03 -05:00
Felipe Cavalcanti 7d6cb247b8 Add Frame Pacing feature 2022-02-02 13:37:07 -03:00