sdr performance workaround
This commit is contained in:
1 parent
fa164f0e02
commit
375670beb4
16 files changed
+253
-32
No files matched your search
@@ -2011,16 +2011,16 @@
|
|||||||
</constraints>
|
</constraints>
|
||||||
</stackView>
|
</stackView>
|
||||||
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="e0Q-XV-ydj">
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="e0Q-XV-ydj">
|
||||||
<rect key="frame" x="441" y="1402" width="260" height="31"/>
|
<rect key="frame" x="441" y="1402" width="322" height="31"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Async Deueue" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.64999997615814209" adjustsLetterSpacingToFitWidth="YES" adjustsFontForContentSizeCategory="YES" translatesAutoresizingMaskIntoConstraints="NO" id="X0u-7f-F86" userLabel="uiLabel">
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Async Frame Dequeue" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.64999997615814209" adjustsLetterSpacingToFitWidth="YES" adjustsFontForContentSizeCategory="YES" translatesAutoresizingMaskIntoConstraints="NO" id="X0u-7f-F86" userLabel="uiLabel">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="110" height="31"/>
|
<rect key="frame" x="0.0" y="0.0" width="172" height="31"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
<nil key="textColor"/>
|
<nil key="textColor"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="auR-cw-77D">
|
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="auR-cw-77D">
|
||||||
<rect key="frame" x="130" y="0.0" width="132" height="31"/>
|
<rect key="frame" x="192" y="0.0" width="132" height="31"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" constant="130" id="mZn-6A-4OO"/>
|
<constraint firstAttribute="width" constant="130" id="mZn-6A-4OO"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -2030,6 +2030,26 @@
|
|||||||
<constraint firstAttribute="height" constant="31" id="UK8-ck-1zc"/>
|
<constraint firstAttribute="height" constant="31" id="UK8-ck-1zc"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
</stackView>
|
</stackView>
|
||||||
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="ydX-NT-gG0">
|
||||||
|
<rect key="frame" x="441" y="1441" width="383" height="31"/>
|
||||||
|
<subviews>
|
||||||
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="SDR Performance Workaround" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.64999997615814209" adjustsLetterSpacingToFitWidth="YES" adjustsFontForContentSizeCategory="YES" translatesAutoresizingMaskIntoConstraints="NO" id="WWl-77-twB" userLabel="uiLabel">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="233" height="31"/>
|
||||||
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
|
<nil key="textColor"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="uIA-Qv-JG5">
|
||||||
|
<rect key="frame" x="253" y="0.0" width="132" height="31"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="width" constant="130" id="Y4C-YH-p1N"/>
|
||||||
|
</constraints>
|
||||||
|
</switch>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="height" constant="31" id="MGF-Pb-oHQ"/>
|
||||||
|
</constraints>
|
||||||
|
</stackView>
|
||||||
</subviews>
|
</subviews>
|
||||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
</view>
|
</view>
|
||||||
@@ -2177,6 +2197,8 @@
|
|||||||
<outlet property="scrollSensitivitySlider" destination="6Pz-di-F4h" id="PUc-gr-gEt"/>
|
<outlet property="scrollSensitivitySlider" destination="6Pz-di-F4h" id="PUc-gr-gEt"/>
|
||||||
<outlet property="scrollSensitivityStack" destination="aEs-8U-RwE" id="XPK-Al-tBx"/>
|
<outlet property="scrollSensitivityStack" destination="aEs-8U-RwE" id="XPK-Al-tBx"/>
|
||||||
<outlet property="scrollView" destination="WRy-3f-gEP" id="V8B-oF-27B"/>
|
<outlet property="scrollView" destination="WRy-3f-gEP" id="V8B-oF-27B"/>
|
||||||
|
<outlet property="sdrPerformanceWorkaroundStack" destination="ydX-NT-gG0" id="AGD-IL-3DL"/>
|
||||||
|
<outlet property="sdrPerformanceWorkaroundSwitch" destination="uIA-Qv-JG5" id="tWF-iQ-qPN"/>
|
||||||
<outlet property="sendDummyEventStack" destination="RGd-TV-mkU" id="87h-08-4Og"/>
|
<outlet property="sendDummyEventStack" destination="RGd-TV-mkU" id="87h-08-4Og"/>
|
||||||
<outlet property="sendDummyEventSwitch" destination="eE4-oT-Gzb" id="q51-ds-zJC"/>
|
<outlet property="sendDummyEventSwitch" destination="eE4-oT-Gzb" id="q51-ds-zJC"/>
|
||||||
<outlet property="singleTapSensitivitySlider" destination="j4n-De-TRX" id="5gO-ms-ns2"/>
|
<outlet property="singleTapSensitivitySlider" destination="j4n-De-TRX" id="5gO-ms-ns2"/>
|
||||||
|
|||||||
@@ -2867,16 +2867,16 @@
|
|||||||
</constraints>
|
</constraints>
|
||||||
</stackView>
|
</stackView>
|
||||||
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="dZ3-os-MKX">
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="dZ3-os-MKX">
|
||||||
<rect key="frame" x="459" y="2291" width="260" height="31"/>
|
<rect key="frame" x="459" y="2291" width="312" height="31"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Async Deueue" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.64999997615814209" adjustsLetterSpacingToFitWidth="YES" adjustsFontForContentSizeCategory="YES" translatesAutoresizingMaskIntoConstraints="NO" id="e1n-pw-04X" userLabel="uiLabel">
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Async Frame Deueue" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.64999997615814209" adjustsLetterSpacingToFitWidth="YES" adjustsFontForContentSizeCategory="YES" translatesAutoresizingMaskIntoConstraints="NO" id="e1n-pw-04X" userLabel="uiLabel">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="110" height="31"/>
|
<rect key="frame" x="0.0" y="0.0" width="162" height="31"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
<nil key="textColor"/>
|
<nil key="textColor"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="19e-9S-OgQ">
|
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="19e-9S-OgQ">
|
||||||
<rect key="frame" x="130" y="0.0" width="132" height="31"/>
|
<rect key="frame" x="182" y="0.0" width="132" height="31"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" constant="130" id="hFO-BO-ck5"/>
|
<constraint firstAttribute="width" constant="130" id="hFO-BO-ck5"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -2886,6 +2886,26 @@
|
|||||||
<constraint firstAttribute="height" constant="31" id="O8n-y9-TrQ"/>
|
<constraint firstAttribute="height" constant="31" id="O8n-y9-TrQ"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
</stackView>
|
</stackView>
|
||||||
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="Rw1-5R-Jjf" userLabel="SDR Performance Workaround Stack">
|
||||||
|
<rect key="frame" x="459" y="2330" width="383" height="31"/>
|
||||||
|
<subviews>
|
||||||
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="SDR Performance Workaround" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.64999997615814209" adjustsLetterSpacingToFitWidth="YES" adjustsFontForContentSizeCategory="YES" translatesAutoresizingMaskIntoConstraints="NO" id="F8d-OQ-PsH" userLabel="uiLabel">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="233" height="31"/>
|
||||||
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
|
<nil key="textColor"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Y5l-G9-PyG">
|
||||||
|
<rect key="frame" x="253" y="0.0" width="132" height="31"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="width" constant="130" id="Qwc-Ko-5ZE"/>
|
||||||
|
</constraints>
|
||||||
|
</switch>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="height" constant="31" id="abg-h5-3Ml"/>
|
||||||
|
</constraints>
|
||||||
|
</stackView>
|
||||||
</subviews>
|
</subviews>
|
||||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
</view>
|
</view>
|
||||||
@@ -3022,6 +3042,8 @@
|
|||||||
<outlet property="scrollSensitivitySlider" destination="Iha-ti-PtK" id="60F-wE-tB0"/>
|
<outlet property="scrollSensitivitySlider" destination="Iha-ti-PtK" id="60F-wE-tB0"/>
|
||||||
<outlet property="scrollSensitivityStack" destination="1fy-XH-ApD" id="Utf-HX-rrg"/>
|
<outlet property="scrollSensitivityStack" destination="1fy-XH-ApD" id="Utf-HX-rrg"/>
|
||||||
<outlet property="scrollView" destination="Xq6-9l-Oey" id="nif-2O-JNf"/>
|
<outlet property="scrollView" destination="Xq6-9l-Oey" id="nif-2O-JNf"/>
|
||||||
|
<outlet property="sdrPerformanceWorkaroundStack" destination="Rw1-5R-Jjf" id="W45-rG-DQU"/>
|
||||||
|
<outlet property="sdrPerformanceWorkaroundSwitch" destination="Y5l-G9-PyG" id="Z5N-lZ-M1S"/>
|
||||||
<outlet property="sendDummyEventStack" destination="6yl-Mb-0o6" id="KN5-ty-oTQ"/>
|
<outlet property="sendDummyEventStack" destination="6yl-Mb-0o6" id="KN5-ty-oTQ"/>
|
||||||
<outlet property="sendDummyEventSwitch" destination="OlN-GM-xLT" id="DQ8-Un-c5b"/>
|
<outlet property="sendDummyEventSwitch" destination="OlN-GM-xLT" id="DQ8-Un-c5b"/>
|
||||||
<outlet property="singleTapSensitivitySlider" destination="uCa-Oa-7mv" id="50r-4l-FAP"/>
|
<outlet property="singleTapSensitivitySlider" destination="uCa-Oa-7mv" id="50r-4l-FAP"/>
|
||||||
|
|||||||
@@ -156,6 +156,7 @@ typedef NS_ENUM(NSInteger, PencilTickMode) {
|
|||||||
controllerGyroSwitchMode:(NSInteger)controllerGyroSwitchMode
|
controllerGyroSwitchMode:(NSInteger)controllerGyroSwitchMode
|
||||||
enableFrameTimebase:(BOOL)enableFrameTimebase
|
enableFrameTimebase:(BOOL)enableFrameTimebase
|
||||||
asyncFrameDequeue:(BOOL)asyncFrameDequeue
|
asyncFrameDequeue:(BOOL)asyncFrameDequeue
|
||||||
|
sdrPerformanceWorkaround:(BOOL)sdrPerformanceWorkaround
|
||||||
backgroundSessionTimer:(NSInteger)backgroundSessionTimer;
|
backgroundSessionTimer:(NSInteger)backgroundSessionTimer;
|
||||||
|
|
||||||
- (NSArray*) getHosts;
|
- (NSArray*) getHosts;
|
||||||
|
|||||||
@@ -128,6 +128,7 @@
|
|||||||
controllerGyroSwitchMode:(NSInteger)controllerGyroSwitchMode
|
controllerGyroSwitchMode:(NSInteger)controllerGyroSwitchMode
|
||||||
enableFrameTimebase:(BOOL)enableFrameTimebase
|
enableFrameTimebase:(BOOL)enableFrameTimebase
|
||||||
asyncFrameDequeue:(BOOL)asyncFrameDequeue
|
asyncFrameDequeue:(BOOL)asyncFrameDequeue
|
||||||
|
sdrPerformanceWorkaround:(BOOL)sdrPerformanceWorkaround
|
||||||
backgroundSessionTimer:(NSInteger)backgroundSessionTimer{
|
backgroundSessionTimer:(NSInteger)backgroundSessionTimer{
|
||||||
|
|
||||||
__block Settings* settingsToSave = settings;
|
__block Settings* settingsToSave = settings;
|
||||||
@@ -165,6 +166,7 @@
|
|||||||
settingsToSave.useBuiltinMic = useBuiltinMic;
|
settingsToSave.useBuiltinMic = useBuiltinMic;
|
||||||
settingsToSave.preferredCodec = preferredCodec;
|
settingsToSave.preferredCodec = preferredCodec;
|
||||||
settingsToSave.enableYUV444 = enableYUV444;
|
settingsToSave.enableYUV444 = enableYUV444;
|
||||||
|
settingsToSave.sdrPerformanceWorkaround = sdrPerformanceWorkaround;
|
||||||
settingsToSave.enablePIP = enablePIP;
|
settingsToSave.enablePIP = enablePIP;
|
||||||
settingsToSave.fullColorRange = fullColorRange;
|
settingsToSave.fullColorRange = fullColorRange;
|
||||||
settingsToSave.enableHdr = enableHdr;
|
settingsToSave.enableHdr = enableHdr;
|
||||||
|
|||||||
@@ -53,6 +53,7 @@
|
|||||||
CODEC_PREF_AV1,
|
CODEC_PREF_AV1,
|
||||||
} preferredCodec;
|
} preferredCodec;
|
||||||
@property (nonatomic) BOOL enableYUV444;
|
@property (nonatomic) BOOL enableYUV444;
|
||||||
|
@property (nonatomic) BOOL sdrPerformanceWorkaround;
|
||||||
@property (nonatomic) BOOL enablePIP;
|
@property (nonatomic) BOOL enablePIP;
|
||||||
@property (nonatomic) BOOL fullColorRange;
|
@property (nonatomic) BOOL fullColorRange;
|
||||||
@property (nonatomic) BOOL reverseMouseWheelDirection;
|
@property (nonatomic) BOOL reverseMouseWheelDirection;
|
||||||
|
|||||||
@@ -88,6 +88,7 @@
|
|||||||
self.audioConfig = settings.audioConfig;
|
self.audioConfig = settings.audioConfig;
|
||||||
self.preferredCodec = settings.preferredCodec;
|
self.preferredCodec = settings.preferredCodec;
|
||||||
self.enableYUV444 = settings.enableYUV444;
|
self.enableYUV444 = settings.enableYUV444;
|
||||||
|
self.sdrPerformanceWorkaround = settings.sdrPerformanceWorkaround;
|
||||||
self.enablePIP = settings.enablePIP;
|
self.enablePIP = settings.enablePIP;
|
||||||
self.fullColorRange = settings.fullColorRange;
|
self.fullColorRange = settings.fullColorRange;
|
||||||
self.frameQueueSize = settings.frameQueueSize;
|
self.frameQueueSize = settings.frameQueueSize;
|
||||||
|
|||||||
@@ -89,6 +89,7 @@
|
|||||||
<attribute name="resolutionSelected" optional="YES" attributeType="Integer 16" defaultValueString="4" usesScalarValueType="NO" syncable="YES"/>
|
<attribute name="resolutionSelected" optional="YES" attributeType="Integer 16" defaultValueString="4" usesScalarValueType="NO" syncable="YES"/>
|
||||||
<attribute name="reverseMouseWheelDirection" attributeType="Boolean" defaultValueString="YES" usesScalarValueType="YES" syncable="YES"/>
|
<attribute name="reverseMouseWheelDirection" attributeType="Boolean" defaultValueString="YES" usesScalarValueType="YES" syncable="YES"/>
|
||||||
<attribute name="scrollSensitivity" optional="YES" attributeType="Float" defaultValueString="1" usesScalarValueType="NO" syncable="YES"/>
|
<attribute name="scrollSensitivity" optional="YES" attributeType="Float" defaultValueString="1" usesScalarValueType="NO" syncable="YES"/>
|
||||||
|
<attribute name="sdrPerformanceWorkaround" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES" syncable="YES"/>
|
||||||
<attribute name="sendDummyEvent" attributeType="Boolean" defaultValueString="YES" usesScalarValueType="YES" syncable="YES"/>
|
<attribute name="sendDummyEvent" attributeType="Boolean" defaultValueString="YES" usesScalarValueType="YES" syncable="YES"/>
|
||||||
<attribute name="settingsMenuMode" optional="YES" attributeType="Integer 16" defaultValueString="0" usesScalarValueType="NO" syncable="YES"/>
|
<attribute name="settingsMenuMode" optional="YES" attributeType="Integer 16" defaultValueString="0" usesScalarValueType="NO" syncable="YES"/>
|
||||||
<attribute name="settingsMenuOffset" optional="YES" attributeType="Float" defaultValueString="22" usesScalarValueType="NO" syncable="YES"/>
|
<attribute name="settingsMenuOffset" optional="YES" attributeType="Float" defaultValueString="22" usesScalarValueType="NO" syncable="YES"/>
|
||||||
|
|||||||
@@ -127,7 +127,7 @@ extern int ff_isom_write_av1c(AVIOContext *pb, const uint8_t *buf, int size,
|
|||||||
_vtq = dispatch_queue_create("com.moonlight.VideoDecoderRenderer.VTDecoder",
|
_vtq = dispatch_queue_create("com.moonlight.VideoDecoderRenderer.VTDecoder",
|
||||||
dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_SERIAL, QOS_CLASS_USER_INTERACTIVE, 0));
|
dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_SERIAL, QOS_CLASS_USER_INTERACTIVE, 0));
|
||||||
|
|
||||||
_view = view;
|
_view = (StreamView*) view;
|
||||||
_callbacks = callbacks;
|
_callbacks = callbacks;
|
||||||
_streamAspectRatio = aspectRatio;
|
_streamAspectRatio = aspectRatio;
|
||||||
_maxRefreshRate = [[UIScreen mainScreen] maximumFramesPerSecond];
|
_maxRefreshRate = [[UIScreen mainScreen] maximumFramesPerSecond];
|
||||||
@@ -137,8 +137,8 @@ extern int ff_isom_write_av1c(AVIOContext *pb, const uint8_t *buf, int size,
|
|||||||
TemporarySettings* tempSettings = [dataMan getSettings];
|
TemporarySettings* tempSettings = [dataMan getSettings];
|
||||||
|
|
||||||
_framePacingMode = tempSettings.framePacingMode.integerValue;
|
_framePacingMode = tempSettings.framePacingMode.integerValue;
|
||||||
_enableTimebase = tempSettings.enableFrameTimebase;
|
|
||||||
_asyncFrameDequeue = tempSettings.asyncFrameDequeue;
|
_asyncFrameDequeue = tempSettings.asyncFrameDequeue;
|
||||||
|
_enableTimebase = false;
|
||||||
|
|
||||||
_frameQueue = [FrameQueue sharedInstance];
|
_frameQueue = [FrameQueue sharedInstance];
|
||||||
[_frameQueue start];
|
[_frameQueue start];
|
||||||
|
|||||||
@@ -31,6 +31,8 @@ FOUNDATION_EXPORT NSString *const deviceName;
|
|||||||
+ (NSString*) addressPortStringToAddress:(NSString*)addressPort;
|
+ (NSString*) addressPortStringToAddress:(NSString*)addressPort;
|
||||||
+ (unsigned short) addressPortStringToPort:(NSString*)addressPort;
|
+ (unsigned short) addressPortStringToPort:(NSString*)addressPort;
|
||||||
+ (NSString*) addressAndPortToAddressPortString:(NSString*)address port:(unsigned short)port;
|
+ (NSString*) addressAndPortToAddressPortString:(NSString*)address port:(unsigned short)port;
|
||||||
|
+ (bool)hdrSupported;
|
||||||
|
+ (bool)needUpdateDefaultSettings;
|
||||||
|
|
||||||
#if !TARGET_OS_TV
|
#if !TARGET_OS_TV
|
||||||
+ (void) launchUrl:(NSString*)urlString;
|
+ (void) launchUrl:(NSString*)urlString;
|
||||||
|
|||||||
@@ -11,6 +11,8 @@
|
|||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
#include <netdb.h>
|
#include <netdb.h>
|
||||||
|
#import <AVFoundation/AVFoundation.h>
|
||||||
|
#import <VideoToolbox/VideoToolbox.h>
|
||||||
#import "LocalizationHelper.h"
|
#import "LocalizationHelper.h"
|
||||||
|
|
||||||
@implementation Utils
|
@implementation Utils
|
||||||
@@ -149,6 +151,22 @@ NSString *const deviceName = @"roth";
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
+ (bool)hdrSupported{
|
||||||
|
return VTIsHardwareDecodeSupported(kCMVideoCodecType_HEVC) && (AVPlayer.availableHDRModes & AVPlayerHDRModeHDR10);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (bool)needUpdateDefaultSettings {
|
||||||
|
NSString *key = @"needUpdateDefaultSettings20260207";
|
||||||
|
BOOL updatedBefore = [[NSUserDefaults standardUserDefaults] boolForKey:key];
|
||||||
|
|
||||||
|
if (!updatedBefore) {
|
||||||
|
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:key];
|
||||||
|
[[NSUserDefaults standardUserDefaults] synchronize];
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@implementation NSString (NSStringWithTrim)
|
@implementation NSString (NSStringWithTrim)
|
||||||
|
|||||||
@@ -876,7 +876,8 @@ static NSMutableSet* hostList;
|
|||||||
_streamConfig.supportedVideoFormats |= VIDEO_FORMAT_AV1_HIGH8_444;
|
_streamConfig.supportedVideoFormats |= VIDEO_FORMAT_AV1_HIGH8_444;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
_streamConfig.supportedVideoFormats |= VIDEO_FORMAT_AV1_MAIN8;
|
if(streamSettings.sdrPerformanceWorkaround && [Utils hdrSupported]) _streamConfig.supportedVideoFormats |= VIDEO_FORMAT_AV1_MAIN10; // 8bit performance degradation workaround for av1
|
||||||
|
else _streamConfig.supportedVideoFormats |= VIDEO_FORMAT_AV1_MAIN8;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -886,10 +887,13 @@ static NSMutableSet* hostList;
|
|||||||
case CODEC_PREF_HEVC:
|
case CODEC_PREF_HEVC:
|
||||||
if (VTIsHardwareDecodeSupported(kCMVideoCodecType_HEVC)) {
|
if (VTIsHardwareDecodeSupported(kCMVideoCodecType_HEVC)) {
|
||||||
if (streamSettings.enableYUV444) {
|
if (streamSettings.enableYUV444) {
|
||||||
_streamConfig.supportedVideoFormats |= VIDEO_FORMAT_H265_REXT8_444;
|
if(streamSettings.sdrPerformanceWorkaround && [Utils hdrSupported]) _streamConfig.supportedVideoFormats |= VIDEO_FORMAT_H265_REXT10_444; // 8bit performance degradation workaround
|
||||||
|
else _streamConfig.supportedVideoFormats |= VIDEO_FORMAT_H265_REXT8_444;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
_streamConfig.supportedVideoFormats |= VIDEO_FORMAT_H265;
|
// _streamConfig.supportedVideoFormats |= VIDEO_FORMAT_H265;
|
||||||
|
if(streamSettings.sdrPerformanceWorkaround && [Utils hdrSupported]) _streamConfig.supportedVideoFormats |= VIDEO_FORMAT_H265_MAIN10; // 8bit performance degradation workaround
|
||||||
|
else _streamConfig.supportedVideoFormats |= VIDEO_FORMAT_H265;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Fall-through
|
// Fall-through
|
||||||
@@ -905,7 +909,9 @@ static NSMutableSet* hostList;
|
|||||||
|
|
||||||
// HEVC is supported if the user wants it (or it's required by the chosen resolution) and the SoC supports it
|
// HEVC is supported if the user wants it (or it's required by the chosen resolution) and the SoC supports it
|
||||||
if ((_streamConfig.width > 4096 || _streamConfig.height > 4096 || streamSettings.enableHdr) && VTIsHardwareDecodeSupported(kCMVideoCodecType_HEVC)) {
|
if ((_streamConfig.width > 4096 || _streamConfig.height > 4096 || streamSettings.enableHdr) && VTIsHardwareDecodeSupported(kCMVideoCodecType_HEVC)) {
|
||||||
_streamConfig.supportedVideoFormats |= VIDEO_FORMAT_H265;
|
|
||||||
|
if(streamSettings.sdrPerformanceWorkaround && [Utils hdrSupported]) _streamConfig.supportedVideoFormats |= VIDEO_FORMAT_H265_MAIN10; // 8bit performance degradation workaround
|
||||||
|
else _streamConfig.supportedVideoFormats |= VIDEO_FORMAT_H265;
|
||||||
|
|
||||||
// HEVC Main10 is supported if the user wants it and the display supports it
|
// HEVC Main10 is supported if the user wants it and the display supports it
|
||||||
if (streamSettings.enableHdr && (AVPlayer.availableHDRModes & AVPlayerHDRModeHDR10) != 0) {
|
if (streamSettings.enableHdr && (AVPlayer.availableHDRModes & AVPlayerHDRModeHDR10) != 0) {
|
||||||
@@ -1568,6 +1574,28 @@ static NSMutableSet* hostList;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)changeDefaultSettings{
|
||||||
|
if(![Utils needUpdateDefaultSettings]) return;
|
||||||
|
DataManager* dataMan = [[DataManager alloc] init];
|
||||||
|
Settings* settings = [dataMan retrieveSettings];
|
||||||
|
switch ([UIDevice currentDevice].userInterfaceIdiom) {
|
||||||
|
case UIUserInterfaceIdiomPad:
|
||||||
|
settings.sdrPerformanceWorkaround = true;
|
||||||
|
settings.framePacingMode = @(FramePacingModeQueue);
|
||||||
|
break;
|
||||||
|
case UIUserInterfaceIdiomPhone:
|
||||||
|
settings.sdrPerformanceWorkaround = false;
|
||||||
|
settings.framePacingMode = @(FramePacingModeLegacy);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
settings.sdrPerformanceWorkaround = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if([UIScreen mainScreen].maximumFramesPerSecond > 110) settings.asyncFrameDequeue = false;
|
||||||
|
if([UIScreen mainScreen].maximumFramesPerSecond < 65) settings.asyncFrameDequeue = true;
|
||||||
|
[dataMan saveData];
|
||||||
|
}
|
||||||
|
|
||||||
- (void)viewDidLoad{
|
- (void)viewDidLoad{
|
||||||
[super viewDidLoad];
|
[super viewDidLoad];
|
||||||
|
|
||||||
|
|||||||
@@ -249,6 +249,10 @@
|
|||||||
@property (weak, nonatomic) IBOutlet UIStackView *asyncFrameDequeueStack;
|
@property (weak, nonatomic) IBOutlet UIStackView *asyncFrameDequeueStack;
|
||||||
@property (weak, nonatomic) IBOutlet UISwitch *asyncFrameDequeueSwitch;
|
@property (weak, nonatomic) IBOutlet UISwitch *asyncFrameDequeueSwitch;
|
||||||
|
|
||||||
|
@property (weak, nonatomic) IBOutlet UIStackView *sdrPerformanceWorkaroundStack;
|
||||||
|
@property (weak, nonatomic) IBOutlet UISwitch *sdrPerformanceWorkaroundSwitch;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@property (strong, nonatomic) IBOutlet UIStackView *testStack;
|
@property (strong, nonatomic) IBOutlet UIStackView *testStack;
|
||||||
|
|
||||||
|
|||||||
@@ -18,8 +18,6 @@
|
|||||||
#import "OSCProfilesManager.h"
|
#import "OSCProfilesManager.h"
|
||||||
|
|
||||||
#import <UIKit/UIGestureRecognizerSubclass.h>
|
#import <UIKit/UIGestureRecognizerSubclass.h>
|
||||||
#import <VideoToolbox/VideoToolbox.h>
|
|
||||||
#import <AVFoundation/AVFoundation.h>
|
|
||||||
|
|
||||||
#import "LocalizationHelper.h"
|
#import "LocalizationHelper.h"
|
||||||
|
|
||||||
@@ -788,15 +786,12 @@ BOOL isCustomResolution(int resolutionSelected) {
|
|||||||
[self addSetting:self.fpsStack ofId:@"fpsStack" withInfoTag:NO withDynamicLabel:NO to:videoSection];
|
[self addSetting:self.fpsStack ofId:@"fpsStack" withInfoTag:NO withDynamicLabel:NO to:videoSection];
|
||||||
[self addSetting:self.bitrateStack ofId:@"bitrateStack" withInfoTag:YES withDynamicLabel:YES to:videoSection];
|
[self addSetting:self.bitrateStack ofId:@"bitrateStack" withInfoTag:YES withDynamicLabel:YES to:videoSection];
|
||||||
[self addSetting:self.codecStack ofId:@"codecStack" withInfoTag:NO withDynamicLabel:NO to:videoSection];
|
[self addSetting:self.codecStack ofId:@"codecStack" withInfoTag:NO withDynamicLabel:NO to:videoSection];
|
||||||
[self addSetting:self.hdrStack ofId:@"hdrStack" withInfoTag:![self hdrSupported] withDynamicLabel:NO to:videoSection];
|
[self addSetting:self.hdrStack ofId:@"hdrStack" withInfoTag:![Utils hdrSupported] withDynamicLabel:NO to:videoSection];
|
||||||
[self addSetting:self.yuv444Stack ofId:@"yuv444Stack" withInfoTag:YES withDynamicLabel:NO to:videoSection];
|
[self addSetting:self.yuv444Stack ofId:@"yuv444Stack" withInfoTag:YES withDynamicLabel:NO to:videoSection];
|
||||||
[self addSetting:self.fullColorRangeStack ofId:@"fullColorRangeStack" withInfoTag:NO withDynamicLabel:NO to:videoSection];
|
[self addSetting:self.fullColorRangeStack ofId:@"fullColorRangeStack" withInfoTag:NO withDynamicLabel:NO to:videoSection];
|
||||||
[self addSetting:self.pipStack ofId:@"pipStack" withInfoTag:YES withDynamicLabel:NO to:videoSection];
|
[self addSetting:self.pipStack ofId:@"pipStack" withInfoTag:YES withDynamicLabel:NO to:videoSection];
|
||||||
[self addSetting:self.framePacingStack ofId:@"framePacingStack" withInfoTag:YES withDynamicLabel:NO to:videoSection];
|
[self addSetting:self.framePacingStack ofId:@"framePacingStack" withInfoTag:YES withDynamicLabel:NO to:videoSection];
|
||||||
[self addSetting:self.frameQueueSizeStack ofId:@"frameQueueSizeStack" withInfoTag:NO withDynamicLabel:YES to:videoSection];
|
[self addSetting:self.frameQueueSizeStack ofId:@"frameQueueSizeStack" withInfoTag:NO withDynamicLabel:YES to:videoSection];
|
||||||
[self addSetting:self.frameTimebaseStack ofId:@"frameTimebaseStack" withInfoTag:NO withDynamicLabel:NO to:videoSection];
|
|
||||||
[self addSetting:self.asyncFrameDequeueStack ofId:@"asyncFrameDequeueStack" withInfoTag:NO withDynamicLabel:NO to:videoSection];
|
|
||||||
|
|
||||||
[videoSection addToParentStack:_parentStack];
|
[videoSection addToParentStack:_parentStack];
|
||||||
// [videoSection setExpanded:NO];
|
// [videoSection setExpanded:NO];
|
||||||
|
|
||||||
@@ -975,7 +970,10 @@ BOOL isCustomResolution(int resolutionSelected) {
|
|||||||
[self addSetting:self.relativeTouchSlideThresholdStack ofId:@"relativeTouchSlideThresholdStack" withInfoTag:YES withDynamicLabel:YES to:experimentalSection];
|
[self addSetting:self.relativeTouchSlideThresholdStack ofId:@"relativeTouchSlideThresholdStack" withInfoTag:YES withDynamicLabel:YES to:experimentalSection];
|
||||||
[self addSetting:self.singleTapSensitivityStack ofId:@"singleTapSensitivityStack" withInfoTag:NO withDynamicLabel:YES to:experimentalSection];
|
[self addSetting:self.singleTapSensitivityStack ofId:@"singleTapSensitivityStack" withInfoTag:NO withDynamicLabel:YES to:experimentalSection];
|
||||||
[self addSetting:self.leftClickDelayStack ofId:@"leftClickDelayStack" withInfoTag:NO withDynamicLabel:YES to:experimentalSection];
|
[self addSetting:self.leftClickDelayStack ofId:@"leftClickDelayStack" withInfoTag:NO withDynamicLabel:YES to:experimentalSection];
|
||||||
|
[self addSetting:self.sdrPerformanceWorkaroundStack ofId:@"sdrPerformanceWorkaroundStack" withInfoTag:NO withDynamicLabel:NO to:experimentalSection];
|
||||||
[self addSetting:self.renderingBackendStack ofId:@"renderingBackendStack" withInfoTag:YES withDynamicLabel:NO to:experimentalSection];
|
[self addSetting:self.renderingBackendStack ofId:@"renderingBackendStack" withInfoTag:YES withDynamicLabel:NO to:experimentalSection];
|
||||||
|
// [self addSetting:self.frameTimebaseStack ofId:@"frameTimebaseStack" withInfoTag:NO withDynamicLabel:NO to:videoSection];
|
||||||
|
[self addSetting:self.asyncFrameDequeueStack ofId:@"asyncFrameDequeueStack" withInfoTag:NO withDynamicLabel:NO to:experimentalSection];
|
||||||
[self addSetting:self.performanceGraphStack ofId:@"performanceGraphStack" withInfoTag:YES withDynamicLabel:NO to:experimentalSection];
|
[self addSetting:self.performanceGraphStack ofId:@"performanceGraphStack" withInfoTag:YES withDynamicLabel:NO to:experimentalSection];
|
||||||
[self addDynamicLabelForStack:self.graphOpacityStack];
|
[self addDynamicLabelForStack:self.graphOpacityStack];
|
||||||
|
|
||||||
@@ -1855,12 +1853,13 @@ BOOL isCustomResolution(int resolutionSelected) {
|
|||||||
}
|
}
|
||||||
}];
|
}];
|
||||||
|
|
||||||
if (![self hdrSupported]) {
|
if (![Utils hdrSupported]) {
|
||||||
[self.hdrSwitch setOn:NO];
|
[self.hdrSwitch setOn:NO];
|
||||||
[self.hdrSwitch setEnabled:NO];
|
[self.hdrSwitch setEnabled:NO];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
[self.hdrSwitch setOn:self->tempSettings.enableHdr];
|
[self.hdrSwitch setOn:self->tempSettings.enableHdr];
|
||||||
|
[self.hdrSwitch addTarget:self action:@selector(hdrSwitchFlipped:) forControlEvents:UIControlEventValueChanged];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialize codec-dependent switches together
|
// Initialize codec-dependent switches together
|
||||||
@@ -1888,8 +1887,9 @@ BOOL isCustomResolution(int resolutionSelected) {
|
|||||||
[self.framePacingModeSelector addTarget:self action:@selector(framePacingModeChanged:) forControlEvents:UIControlEventValueChanged];
|
[self.framePacingModeSelector addTarget:self action:@selector(framePacingModeChanged:) forControlEvents:UIControlEventValueChanged];
|
||||||
[self framePacingModeChanged:self.framePacingModeSelector];
|
[self framePacingModeChanged:self.framePacingModeSelector];
|
||||||
|
|
||||||
[self.frameTimebaseSwitch setOn:self->tempSettings.enableFrameTimebase];
|
// [self.frameTimebaseSwitch setOn:self->tempSettings.enableFrameTimebase];
|
||||||
[self.asyncFrameDequeueSwitch setOn:self->tempSettings.asyncFrameDequeue];
|
[self.asyncFrameDequeueSwitch setOn:self->tempSettings.asyncFrameDequeue];
|
||||||
|
[self.sdrPerformanceWorkaroundSwitch setOn:self->tempSettings.sdrPerformanceWorkaround];
|
||||||
|
|
||||||
[self renderingBackendChanged:self.renderingBackendSelector]; // Update PiP and frame pacing state based on current selection
|
[self renderingBackendChanged:self.renderingBackendSelector]; // Update PiP and frame pacing state based on current selection
|
||||||
|
|
||||||
@@ -2223,6 +2223,14 @@ BOOL isCustomResolution(int resolutionSelected) {
|
|||||||
[self presentViewController:alertController animated:YES completion:nil];
|
[self presentViewController:alertController animated:YES completion:nil];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)hdrSwitchFlipped:(UISwitch* )sender{
|
||||||
|
/*
|
||||||
|
if(!sender.isOn
|
||||||
|
&& [Utils hdrSupported]
|
||||||
|
&& ![self isIPhone]) [self.sdrPerformanceWorkaroundSwitch setOn:true];
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
- (bool)isOswEnabled{
|
- (bool)isOswEnabled{
|
||||||
return [self isNotNativeTouchOnly] && self.onScreenWidgetSelector.selectedSegmentIndex != OnScreenControlsLevelOff;
|
return [self isNotNativeTouchOnly] && self.onScreenWidgetSelector.selectedSegmentIndex != OnScreenControlsLevelOff;
|
||||||
}
|
}
|
||||||
@@ -2308,8 +2316,8 @@ BOOL isCustomResolution(int resolutionSelected) {
|
|||||||
- (void)framePacingModeChanged:(UISegmentedControl *)sender {
|
- (void)framePacingModeChanged:(UISegmentedControl *)sender {
|
||||||
// Hide frame queue size for Off and Legacy modes
|
// Hide frame queue size for Off and Legacy modes
|
||||||
[self setHidden:(sender.selectedSegmentIndex == FramePacingModeOff || sender.selectedSegmentIndex == FramePacingModeLegacy) forStack:self.frameQueueSizeStack];
|
[self setHidden:(sender.selectedSegmentIndex == FramePacingModeOff || sender.selectedSegmentIndex == FramePacingModeLegacy) forStack:self.frameQueueSizeStack];
|
||||||
[self setHidden:(sender.selectedSegmentIndex != FramePacingModeQueue) forStack:self.frameTimebaseStack];
|
// [self setHidden:(sender.selectedSegmentIndex != FramePacingModeQueue) forStack:self.frameTimebaseStack];
|
||||||
[self setHidden:(sender.selectedSegmentIndex != FramePacingModeQueue) forStack:self.frameTimebaseStack];
|
[self setHidden:(sender.selectedSegmentIndex != FramePacingModeQueue) forStack:self.asyncFrameDequeueStack];
|
||||||
|
|
||||||
if(sender.selectedSegmentIndex == FramePacingModeOff || sender.selectedSegmentIndex == FramePacingModeLegacy){
|
if(sender.selectedSegmentIndex == FramePacingModeOff || sender.selectedSegmentIndex == FramePacingModeLegacy){
|
||||||
[self.enableGraphsSwitch setOn:NO];
|
[self.enableGraphsSwitch setOn:NO];
|
||||||
@@ -3502,6 +3510,7 @@ BOOL isCustomResolution(int resolutionSelected) {
|
|||||||
BOOL useBuiltinMic = self.useBuiltinMicSwitch.isOn;
|
BOOL useBuiltinMic = self.useBuiltinMicSwitch.isOn;
|
||||||
uint32_t preferredCodec = [self getChosenCodecPreference];
|
uint32_t preferredCodec = [self getChosenCodecPreference];
|
||||||
BOOL enableYUV444 = self.yuv444Switch.isOn;
|
BOOL enableYUV444 = self.yuv444Switch.isOn;
|
||||||
|
BOOL sdrPerformanceWorkaround = self.sdrPerformanceWorkaroundSwitch.isOn;
|
||||||
BOOL enablePIP = self.pipSwitch.isOn;
|
BOOL enablePIP = self.pipSwitch.isOn;
|
||||||
BOOL fullColorRange = self.fullColorRangeSwitch.isOn;
|
BOOL fullColorRange = self.fullColorRangeSwitch.isOn;
|
||||||
BOOL btMouseSupport = self.citrixX1MouseSwitch.isOn;
|
BOOL btMouseSupport = self.citrixX1MouseSwitch.isOn;
|
||||||
@@ -3540,7 +3549,7 @@ BOOL isCustomResolution(int resolutionSelected) {
|
|||||||
CGFloat controllerMousePointerVelocity = self.controllerMouseVelocitySlider.value;
|
CGFloat controllerMousePointerVelocity = self.controllerMouseVelocitySlider.value;
|
||||||
CGFloat controllerMouseExpo = self.controllerMouseExpoSlider.value;
|
CGFloat controllerMouseExpo = self.controllerMouseExpoSlider.value;
|
||||||
NSInteger controllerGyroSwitchMode = self.controllerGyroSwitchButtonSetter.selectedSegmentIndex;
|
NSInteger controllerGyroSwitchMode = self.controllerGyroSwitchButtonSetter.selectedSegmentIndex;
|
||||||
BOOL enableFrameTimebase = self.frameTimebaseSwitch.isOn;
|
BOOL enableFrameTimebase = false;
|
||||||
BOOL asyncFrameDequeue = self.asyncFrameDequeueSwitch.isOn;
|
BOOL asyncFrameDequeue = self.asyncFrameDequeueSwitch.isOn;
|
||||||
NSInteger backgroundSessionTimer = self.backgroundSessionTimerSlider.value == self.backgroundSessionTimerSlider.maximumValue ? (uint32_t) INT16_MAX : (uint32_t)self.backgroundSessionTimerSlider.value;
|
NSInteger backgroundSessionTimer = self.backgroundSessionTimerSlider.value == self.backgroundSessionTimerSlider.maximumValue ? (uint32_t) INT16_MAX : (uint32_t)self.backgroundSessionTimerSlider.value;
|
||||||
|
|
||||||
@@ -3616,6 +3625,7 @@ BOOL isCustomResolution(int resolutionSelected) {
|
|||||||
controllerGyroSwitchMode:controllerGyroSwitchMode
|
controllerGyroSwitchMode:controllerGyroSwitchMode
|
||||||
enableFrameTimebase:enableFrameTimebase
|
enableFrameTimebase:enableFrameTimebase
|
||||||
asyncFrameDequeue:asyncFrameDequeue
|
asyncFrameDequeue:asyncFrameDequeue
|
||||||
|
sdrPerformanceWorkaround:sdrPerformanceWorkaround
|
||||||
backgroundSessionTimer:backgroundSessionTimer];
|
backgroundSessionTimer:backgroundSessionTimer];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3661,12 +3671,12 @@ BOOL isCustomResolution(int resolutionSelected) {
|
|||||||
[self.hdrSwitch setEnabled:NO];
|
[self.hdrSwitch setEnabled:NO];
|
||||||
} else {
|
} else {
|
||||||
// Only enable HDR if the device supports it
|
// Only enable HDR if the device supports it
|
||||||
if ([self hdrSupported]) {
|
if ([Utils hdrSupported]) {
|
||||||
[self.hdrSwitch setEnabled:YES];
|
[self.hdrSwitch setEnabled:YES];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(![self hdrSupported]) [self.hdrSwitch setOn:NO animated:NO];
|
if(![Utils hdrSupported]) [self.hdrSwitch setOn:NO animated:NO];
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
@@ -1324,6 +1324,19 @@
|
|||||||
if(strcmp(stageName, "mic stream unsupported or unintialized")==0){
|
if(strcmp(stageName, "mic stream unsupported or unintialized")==0){
|
||||||
_micStreamInitialized = false;
|
_micStreamInitialized = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 8bit 444 degration workaround
|
||||||
|
if(strcmp(stageName, "video stream establishment")==0){
|
||||||
|
if(!_settings.enableHdr
|
||||||
|
&& _settings.sdrPerformanceWorkaround
|
||||||
|
&& [Utils hdrSupported]){
|
||||||
|
dispatch_time_t delay = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC));
|
||||||
|
dispatch_after(delay, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
|
||||||
|
NSArray* hdrCommand = [CommandManager.shared extractKeyStringsFrom:@"WIN+ALT+B"];
|
||||||
|
[CommandManager.shared sendKeyComboCommandWithKeyboardCmdStrings:hdrCommand delay:0.15 index:0];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) stageFailed:(const char*)stageName withError:(int)errorCode portTestFlags:(int)portTestFlags {
|
- (void) stageFailed:(const char*)stageName withError:(int)errorCode portTestFlags:(int)portTestFlags {
|
||||||
|
|||||||
@@ -5641,14 +5641,62 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"X0u-7f-F86.text" : {
|
"WWl-77-twB.text" : {
|
||||||
"comment" : "Class = \"UILabel\"; text = \"Async Deueue\"; ObjectID = \"X0u-7f-F86\";",
|
"comment" : "Class = \"UILabel\"; text = \"SDR Performance Workaround\"; ObjectID = \"WWl-77-twB\";",
|
||||||
"extractionState" : "extracted_with_value",
|
"extractionState" : "extracted_with_value",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
"en" : {
|
"en" : {
|
||||||
"stringUnit" : {
|
"stringUnit" : {
|
||||||
"state" : "new",
|
"state" : "new",
|
||||||
"value" : "Async Deueue"
|
"value" : "SDR Performance Workaround"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hans" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "SDR性能优化路径"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hant" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "SDR效能優化路徑"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-HK" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "SDR效能優化路徑"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"X0u-7f-F86.text" : {
|
||||||
|
"comment" : "Class = \"UILabel\"; text = \"Async Frame Dequeue\"; ObjectID = \"X0u-7f-F86\";",
|
||||||
|
"extractionState" : "extracted_with_value",
|
||||||
|
"localizations" : {
|
||||||
|
"en" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "new",
|
||||||
|
"value" : "Async Frame Dequeue"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hans" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "needs_review",
|
||||||
|
"value" : "异步帧出队"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hant" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "needs_review",
|
||||||
|
"value" : "非同步取幀"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-HK" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "needs_review",
|
||||||
|
"value" : "非同步取幀"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2024,13 +2024,31 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"e1n-pw-04X.text" : {
|
"e1n-pw-04X.text" : {
|
||||||
"comment" : "Class = \"UILabel\"; text = \"Async Deueue\"; ObjectID = \"e1n-pw-04X\";",
|
"comment" : "Class = \"UILabel\"; text = \"Async Frame Deueue\"; ObjectID = \"e1n-pw-04X\";",
|
||||||
"extractionState" : "extracted_with_value",
|
"extractionState" : "extracted_with_value",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
"en" : {
|
"en" : {
|
||||||
"stringUnit" : {
|
"stringUnit" : {
|
||||||
"state" : "new",
|
"state" : "new",
|
||||||
"value" : "Async Deueue"
|
"value" : "Async Frame Deueue"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hans" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "异步帧出队"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hant" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "非同步取幀"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-HK" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "非同步取幀"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2197,6 +2215,36 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"F8d-OQ-PsH.text" : {
|
||||||
|
"comment" : "Class = \"UILabel\"; text = \"SDR Performance Workaround\"; ObjectID = \"F8d-OQ-PsH\";",
|
||||||
|
"extractionState" : "extracted_with_value",
|
||||||
|
"localizations" : {
|
||||||
|
"en" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "new",
|
||||||
|
"value" : "SDR Performance Workaround"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hans" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "SDR性能优化路径"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hant" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "SDR效能優化路徑"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-HK" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "SDR效能優化路徑"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"f46-Pt-0Pv.text" : {
|
"f46-Pt-0Pv.text" : {
|
||||||
"comment" : "Class = \"UILabel\"; text = \"Profile:\"; ObjectID = \"f46-Pt-0Pv\";",
|
"comment" : "Class = \"UILabel\"; text = \"Profile:\"; ObjectID = \"f46-Pt-0Pv\";",
|
||||||
"extractionState" : "extracted_with_value",
|
"extractionState" : "extracted_with_value",
|
||||||
|
|||||||
Reference in new issue
Block a user