Commit Graph
1889 Commits
Author SHA1 Message Date
Andy Grundman 5e4ba088be Clean up render thread, plot method calls 2025-07-15 02:06:13 +08:00
Acaki 6682e64519 feat: allow toggling graphs in stream with shortcut 2025-07-15 02:06:13 +08:00
TrueZhuanjia 2140cc7820 emulated controller type selection 2025-07-15 00:12:52 +08:00
Acaki 7bafa39960 Merge remote-tracking branch 'upstream/Integration' into feat/frame_pacing_metal 2025-07-14 01:33:21 +08:00
Acaki 37379220b4 fix: enableGraphsSwitch doesn't persist 2025-07-14 01:33:01 +08:00
TrueZhuanjia db6906d7a4 hide pipstack in streaming 2025-07-14 00:46:30 +08:00
TrueZhuanjia b262ae47e1 slide to open settings menu distance default value to 0 2025-07-14 00:19:01 +08:00
TrueZhuanjia 797b1a0b71 larger app card for iphone 2025-07-14 00:12:12 +08:00
TrueZhuanjia 77955f6bd6 host card appearance tweak 2025-07-13 23:20:22 +08:00
TrueZhuanjia 17a9fa39f5 - storyboard quick loading
- temporary default app view card image
- select new host button icon
2025-07-13 22:49:16 +08:00
Acaki f6032969c3 fix(AVSB): black screen when turning screen off and on 2025-07-13 22:07:40 +08:00
TrueZhuanjia 686696a6d9 disable pip for iOS lower than iOS15 2025-07-13 18:51:25 +08:00
TrueZhuanjia c629acfa4b fix session disconnection animation 2025-07-13 18:39:19 +08:00
Acaki 02ede90d77 refactor: remove comments added by xcode 2025-07-13 16:25:29 +08:00
Acaki 84cb37f6f3 fix: touch input and settings 2025-07-13 04:22:55 +08:00
Acaki 46526603cc Merge remote-tracking branch 'upstream/Integration' into feat/frame_pacing_metal
# Conflicts:
#	VoidLink/Base.lproj/iPad.storyboard
#	VoidLink/Database/DataManager.h
#	VoidLink/Database/DataManager.m
#	VoidLink/Database/TemporarySettings.m
#	VoidLink/ViewControllers/MainFrameViewController.m
#	VoidLink/ViewControllers/SettingsViewController.h
#	VoidLink/ViewControllers/SettingsViewController.m
#	VoidLink/ViewControllers/StreamFrameViewController.m
2025-07-13 01:01:51 +08:00
Acaki 80c6d488cf fix: attempt to fix background and resume issues with pip and new renderer changes 2025-07-13 00:52:08 +08:00
TrueZhuanjia 6ea23d94cb minor fixes 2025-07-13 00:09:42 +08:00
Acaki 29c8382825 fix: conflicts 2025-07-12 22:05:31 +08:00
TrueZhuanjia b83811cc62 settings item for background session timer 2025-07-12 22:01:10 +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
TrueZhuanjia e2ab307da7 hostDiscovery improvement 2025-07-12 17:51:27 +08:00
TrueZhuanjia a83274ab28 ipad storyboard fix 2025-07-12 16:51:45 +08:00
TrueZhuanjia da8a210fcc 5 second host update period 2025-07-12 16:44:27 +08:00
TrueZhuanjia 0f8ba42975 Merge branch 'piptest' into Integration
- PiP & its toolbox special entry
- host update timer

# Conflicts:
#	VoidLink/ViewControllers/MainFrameViewController.m
#	VoidLink/ViewControllers/StreamFrameViewController.m
2025-07-12 16:41:47 +08:00
TrueZhuanjia 35a2c1111d pip tool box special entry 2025-07-12 16:30:37 +08:00
TrueZhuanjia d263482f7e Merge branch 'PiP2' into PiP1 2025-07-12 16:04:16 +08:00
TrueZhuanjia 19beac795b toolbox pip entry 2025-07-12 15:35:49 +08:00
Acaki e61e96b352 fix: background stream issues 2025-07-12 15:33:14 +08:00
Acaki 4b8691b943 fix: missing pip outlet for iphone 2025-07-12 14:45:51 +08:00
Acaki 487f987c25 Revert "fix: pip video freeze"
This reverts commit 0473233775.
2025-07-12 11:41:57 +08:00
Acaki a69d7eaede build: add new files to pbxproj 2025-07-12 11:25:11 +08:00
Acaki a87969d5b8 refactor: disable verbose logging and remove gesture handlers 2025-07-12 04:42:50 +08:00
Acaki 8f25081bbb fix: cleanup fps and resolution settings 2025-07-12 03:25:17 +08:00
Acaki 6a36e73463 fix: new settings 2025-07-12 02:47:27 +08:00
Acaki d69688678d fix: build 2025-07-12 02:00:33 +08:00
TrueZhuanjia 56c589f042 foreground host update timer 2025-07-11 22:08:14 +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 0473233775 fix: pip video freeze 2025-07-11 19:40:07 +08:00
Acaki 57b12d7a54 Revert "fix: flip UIRequiresFullScreen to true for pip to work properly"
This reverts commit 903312a9f16996a00bf8381dbbd62b8c8c990fd9.
2025-07-11 19:40:07 +08:00
Acaki 6c6d7b73c1 refactor: always create separate render view for stream as we no longer have disabled option 2025-07-11 19:40:07 +08:00
Acaki 10dcdc31d8 refactor: let os handle pip invocation 2025-07-11 19:40:07 +08:00
Acaki 7c725a4d80 fix: flip UIRequiresFullScreen to true for pip to work properly 2025-07-11 19:40:07 +08:00
Acaki 4640ec86ed Revert "fix: pip works only for first invocation"
This reverts commit 3df8f73c25e3ec81c4c90bedd01de7cea7bdda3f.
2025-07-11 19:40:07 +08:00
Acaki 03cabd0506 fix: pip works only for first invocation 2025-07-11 19:40:07 +08:00
Acaki 879c2f368c feat: update storyboard and translations for pip 2025-07-11 19:40:07 +08:00
Acaki fc73e7a3b2 build: dep update 2025-07-11 19:40:06 +08:00
Acaki b9bd1c8c44 fix: SceneDelegate files wrong folder 2025-07-11 03:03:19 +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 51e915b598 disable unlockorientationSelector when it's iPad + requiresFulscreen disabled 2025-07-10 22:29:28 +08:00