UI tweaks for full color range switch

This commit is contained in:
TrueZhuanjia committed 2025-12-03 13:21:55 +08:00
1 parent b6a58ea8ab
commit aad8673ff0
15 files changed
+88 -50

No files matched your search

+4 -4
View File
@@ -584,10 +584,10 @@
<constraint firstAttribute="height" constant="31" id="8mE-tx-T8i"/> <constraint firstAttribute="height" constant="31" id="8mE-tx-T8i"/>
</constraints> </constraints>
</stackView> </stackView>
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="iPd-Rg-St7" userLabel="fullRangeStack"> <stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="iPd-Rg-St7" userLabel="fullColorRangeStack">
<rect key="frame" x="432" y="1901" width="280" height="31"/> <rect key="frame" x="432" y="1901" width="280" height="31"/>
<subviews> <subviews>
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Full Range" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="iPd-Ra-Lbl" userLabel="fullRangeLabel"> <label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Full Color Range" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="iPd-Ra-Lbl" userLabel="fullRangeLabel">
<rect key="frame" x="0.0" y="0.0" width="130" height="31"/> <rect key="frame" x="0.0" y="0.0" width="130" height="31"/>
<constraints> <constraints>
<constraint firstAttribute="width" constant="130" id="iPd-Ra-Wdt"/> <constraint firstAttribute="width" constant="130" id="iPd-Ra-Wdt"/>
@@ -1940,6 +1940,8 @@
<outlet property="frameQueueSizeSlider" destination="oZa-8Y-icz" id="Jo1-Fx-UMw"/> <outlet property="frameQueueSizeSlider" destination="oZa-8Y-icz" id="Jo1-Fx-UMw"/>
<outlet property="frameQueueSizeStack" destination="MML-c1-D5j" id="82B-r7-Zbh"/> <outlet property="frameQueueSizeStack" destination="MML-c1-D5j" id="82B-r7-Zbh"/>
<outlet property="framerateSelector" destination="8hF-kb-2uV" id="dfT-hb-csE"/> <outlet property="framerateSelector" destination="8hF-kb-2uV" id="dfT-hb-csE"/>
<outlet property="fullColorRangeStack" destination="iPd-Rg-St7" id="iPd-Out-Let"/>
<outlet property="fullColorRangeSwitch" destination="iPd-Wt-Ch9" id="iPd-Out-Swt"/>
<outlet property="graphOpacityStack" destination="P6m-Zv-R4H" id="QEV-kA-A3a"/> <outlet property="graphOpacityStack" destination="P6m-Zv-R4H" id="QEV-kA-A3a"/>
<outlet property="graphOpacityStepper" destination="DQq-4U-avd" id="Nwr-0I-Q8G"/> <outlet property="graphOpacityStepper" destination="DQq-4U-avd" id="Nwr-0I-Q8G"/>
<outlet property="gyroModeSelector" destination="aa5-3y-I4d" id="FsX-kH-h7w"/> <outlet property="gyroModeSelector" destination="aa5-3y-I4d" id="FsX-kH-h7w"/>
@@ -1989,8 +1991,6 @@
<outlet property="pinchSensitivityStack" destination="t6B-h4-iY7" id="vab-io-SzJ"/> <outlet property="pinchSensitivityStack" destination="t6B-h4-iY7" id="vab-io-SzJ"/>
<outlet property="pipStack" destination="12a-Wi-LlL" id="eTJ-0h-hRB"/> <outlet property="pipStack" destination="12a-Wi-LlL" id="eTJ-0h-hRB"/>
<outlet property="pipSwitch" destination="VTC-Z9-IYM" id="gzC-rU-DoP"/> <outlet property="pipSwitch" destination="VTC-Z9-IYM" id="gzC-rU-DoP"/>
<outlet property="fullRangeStack" destination="iPd-Rg-St7" id="iPd-Out-Let"/>
<outlet property="fullRangeSwitch" destination="iPd-Wt-Ch9" id="iPd-Out-Swt"/>
<outlet property="pitchSensitivitySlider" destination="HZZ-GL-j2Z" id="4ji-Jt-WdT"/> <outlet property="pitchSensitivitySlider" destination="HZZ-GL-j2Z" id="4ji-Jt-WdT"/>
<outlet property="pitchSensitivityStack" destination="gSn-tW-p9e" id="Gbg-PK-dpf"/> <outlet property="pitchSensitivityStack" destination="gSn-tW-p9e" id="Gbg-PK-dpf"/>
<outlet property="pointerVelocityDividerStack" destination="b1U-nD-gYE" id="ep1-K3-rKj"/> <outlet property="pointerVelocityDividerStack" destination="b1U-nD-gYE" id="ep1-K3-rKj"/>
+4 -4
View File
@@ -1739,10 +1739,10 @@
<constraint firstAttribute="height" constant="31" id="DlE-MW-o6j"/> <constraint firstAttribute="height" constant="31" id="DlE-MW-o6j"/>
</constraints> </constraints>
</stackView> </stackView>
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="fRg-Rn-St7" userLabel="fullRangeStack"> <stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="fRg-Rn-St7" userLabel="fullColorRangeStack">
<rect key="frame" x="437" y="1659" width="280" height="31"/> <rect key="frame" x="437" y="1659" width="280" height="31"/>
<subviews> <subviews>
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Full Range" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fRl-Ra-Lbl" userLabel="fullRangeLabel"> <label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Full Color Range" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fRl-Ra-Lbl" userLabel="fullRangeLabel">
<rect key="frame" x="0.0" y="0.0" width="130" height="31"/> <rect key="frame" x="0.0" y="0.0" width="130" height="31"/>
<constraints> <constraints>
<constraint firstAttribute="width" constant="130" id="fRl-Ra-Wdt"/> <constraint firstAttribute="width" constant="130" id="fRl-Ra-Wdt"/>
@@ -2798,6 +2798,8 @@
<outlet property="frameQueueSizeSlider" destination="thv-JE-onX" id="gKD-6c-5tw"/> <outlet property="frameQueueSizeSlider" destination="thv-JE-onX" id="gKD-6c-5tw"/>
<outlet property="frameQueueSizeStack" destination="IHx-FO-ctr" id="gob-Ea-Avh"/> <outlet property="frameQueueSizeStack" destination="IHx-FO-ctr" id="gob-Ea-Avh"/>
<outlet property="framerateSelector" destination="dAN-Gy-Eg7" id="tMv-Va-PhO"/> <outlet property="framerateSelector" destination="dAN-Gy-Eg7" id="tMv-Va-PhO"/>
<outlet property="fullColorRangeStack" destination="fRg-Rn-St7" id="fRg-Out-Let"/>
<outlet property="fullColorRangeSwitch" destination="fRs-Wt-Ch9" id="fRs-Out-Let"/>
<outlet property="graphOpacityStack" destination="Dfy-4R-t2l" id="GSD-WX-VF1"/> <outlet property="graphOpacityStack" destination="Dfy-4R-t2l" id="GSD-WX-VF1"/>
<outlet property="graphOpacityStepper" destination="TIF-tB-E8s" id="qIa-PX-8PS"/> <outlet property="graphOpacityStepper" destination="TIF-tB-E8s" id="qIa-PX-8PS"/>
<outlet property="gyroModeSelector" destination="PIo-LV-9Gt" id="6Mc-5v-dmJ"/> <outlet property="gyroModeSelector" destination="PIo-LV-9Gt" id="6Mc-5v-dmJ"/>
@@ -2846,8 +2848,6 @@
<outlet property="pinchSensitivityStack" destination="ZAC-ju-Qfi" id="7t2-gm-BFk"/> <outlet property="pinchSensitivityStack" destination="ZAC-ju-Qfi" id="7t2-gm-BFk"/>
<outlet property="pipStack" destination="hvN-TZ-ziV" id="6oL-0b-Bto"/> <outlet property="pipStack" destination="hvN-TZ-ziV" id="6oL-0b-Bto"/>
<outlet property="pipSwitch" destination="mgR-dj-4gu" id="b8b-7E-wrq"/> <outlet property="pipSwitch" destination="mgR-dj-4gu" id="b8b-7E-wrq"/>
<outlet property="fullRangeStack" destination="fRg-Rn-St7" id="fRg-Out-Let"/>
<outlet property="fullRangeSwitch" destination="fRs-Wt-Ch9" id="fRs-Out-Let"/>
<outlet property="pitchSensitivitySlider" destination="4AR-S2-QX8" id="Ohj-qb-AUW"/> <outlet property="pitchSensitivitySlider" destination="4AR-S2-QX8" id="Ohj-qb-AUW"/>
<outlet property="pitchSensitivityStack" destination="pYu-QR-UfH" id="bB1-70-SpJ"/> <outlet property="pitchSensitivityStack" destination="pYu-QR-UfH" id="bB1-70-SpJ"/>
<outlet property="pointerVelocityDividerStack" destination="Jp2-5v-Zr0" id="0mB-RI-df8"/> <outlet property="pointerVelocityDividerStack" destination="Jp2-5v-Zr0" id="0mB-RI-df8"/>
+1 -1
View File
@@ -162,7 +162,7 @@
settingsToSave.preferredCodec = preferredCodec; settingsToSave.preferredCodec = preferredCodec;
settingsToSave.enableYUV444 = enableYUV444; settingsToSave.enableYUV444 = enableYUV444;
settingsToSave.enablePIP = enablePIP; settingsToSave.enablePIP = enablePIP;
settingsToSave.fullRange = fullRange; settingsToSave.fullColorRange = fullRange;
settingsToSave.enableHdr = enableHdr; settingsToSave.enableHdr = enableHdr;
settingsToSave.btMouseSupport = btMouseSupport; settingsToSave.btMouseSupport = btMouseSupport;
// settingsToSave.absoluteTouchMode = absoluteTouchMode; // settingsToSave.absoluteTouchMode = absoluteTouchMode;
+1 -1
View File
@@ -54,7 +54,7 @@
} preferredCodec; } preferredCodec;
@property (nonatomic) BOOL enableYUV444; @property (nonatomic) BOOL enableYUV444;
@property (nonatomic) BOOL enablePIP; @property (nonatomic) BOOL enablePIP;
@property (nonatomic) BOOL fullRange; @property (nonatomic) BOOL fullColorRange;
@property (nonatomic) BOOL reverseMouseWheelDirection; @property (nonatomic) BOOL reverseMouseWheelDirection;
@property (nonatomic, retain) NSNumber * asyncNativeTouchPriority; @property (nonatomic, retain) NSNumber * asyncNativeTouchPriority;
@property (nonatomic) BOOL multiController; @property (nonatomic) BOOL multiController;
+1 -1
View File
@@ -89,7 +89,7 @@
self.preferredCodec = settings.preferredCodec; self.preferredCodec = settings.preferredCodec;
self.enableYUV444 = settings.enableYUV444; self.enableYUV444 = settings.enableYUV444;
self.enablePIP = settings.enablePIP; self.enablePIP = settings.enablePIP;
self.fullRange = settings.fullRange; self.fullColorRange = settings.fullColorRange;
self.frameQueueSize = settings.frameQueueSize; self.frameQueueSize = settings.frameQueueSize;
self.playAudioOnPC = settings.playAudioOnPC; self.playAudioOnPC = settings.playAudioOnPC;
self.redirectMic = settings.redirectMic; self.redirectMic = settings.redirectMic;
@@ -46,11 +46,11 @@
<attribute name="enablePinch" attributeType="Boolean" defaultValueString="YES" usesScalarValueType="YES" syncable="YES"/> <attribute name="enablePinch" attributeType="Boolean" defaultValueString="YES" usesScalarValueType="YES" syncable="YES"/>
<attribute name="enablePIP" attributeType="Boolean" defaultValueString="YES" usesScalarValueType="YES" syncable="YES"/> <attribute name="enablePIP" attributeType="Boolean" defaultValueString="YES" usesScalarValueType="YES" syncable="YES"/>
<attribute name="enableYUV444" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES" syncable="YES"/> <attribute name="enableYUV444" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES" syncable="YES"/>
<attribute name="fullRange" attributeType="Boolean" defaultValueString="YES" usesScalarValueType="YES" syncable="YES"/>
<attribute name="externalDisplayMode" optional="YES" attributeType="Integer 16" defaultValueString="1" usesScalarValueType="NO" syncable="YES"/> <attribute name="externalDisplayMode" optional="YES" attributeType="Integer 16" defaultValueString="1" usesScalarValueType="NO" syncable="YES"/>
<attribute name="framePacingMode" optional="YES" attributeType="Integer 32" defaultValueString="1" usesScalarValueType="NO" syncable="YES"/> <attribute name="framePacingMode" optional="YES" attributeType="Integer 32" defaultValueString="1" usesScalarValueType="NO" syncable="YES"/>
<attribute name="frameQueueSize" optional="YES" attributeType="Integer 32" defaultValueString="1" usesScalarValueType="NO" syncable="YES"/> <attribute name="frameQueueSize" optional="YES" attributeType="Integer 32" defaultValueString="1" usesScalarValueType="NO" syncable="YES"/>
<attribute name="framerate" attributeType="Integer 32" defaultValueString="60" usesScalarValueType="NO" syncable="YES"/> <attribute name="framerate" attributeType="Integer 32" defaultValueString="60" usesScalarValueType="NO" syncable="YES"/>
<attribute name="fullColorRange" attributeType="Boolean" defaultValueString="YES" usesScalarValueType="YES" syncable="YES"/>
<attribute name="graphOpacity" optional="YES" attributeType="Integer 32" defaultValueString="50" usesScalarValueType="NO" syncable="YES"/> <attribute name="graphOpacity" optional="YES" attributeType="Integer 32" defaultValueString="50" usesScalarValueType="NO" syncable="YES"/>
<attribute name="gyroBiasX" optional="YES" attributeType="Double" defaultValueString="0" usesScalarValueType="NO" syncable="YES"/> <attribute name="gyroBiasX" optional="YES" attributeType="Double" defaultValueString="0" usesScalarValueType="NO" syncable="YES"/>
<attribute name="gyroBiasY" optional="YES" attributeType="Double" defaultValueString="0" usesScalarValueType="NO" syncable="YES"/> <attribute name="gyroBiasY" optional="YES" attributeType="Double" defaultValueString="0" usesScalarValueType="NO" syncable="YES"/>
+4 -4
View File
@@ -57,7 +57,7 @@ static AVAudioPCMBuffer *pcmBuffer;
static AVAudioFormat *audioFormat; static AVAudioFormat *audioFormat;
static bool muteInBackground; static bool muteInBackground;
static bool fullRange; static bool fullColorRange;
static VideoDecoderRenderer* renderer; static VideoDecoderRenderer* renderer;
@@ -65,7 +65,7 @@ static BandwidthTracker *bwTracker;
int DrDecoderSetup(int videoFormat, int width, int height, int redrawRate, void* context, int drFlags) int DrDecoderSetup(int videoFormat, int width, int height, int redrawRate, void* context, int drFlags)
{ {
[renderer setupWithVideoFormat:videoFormat width:width height:height frameRate:redrawRate fullRange:fullRange]; [renderer setupWithVideoFormat:videoFormat width:width height:height frameRate:redrawRate fullRange:fullColorRange];
lastFrameNumber = 0; lastFrameNumber = 0;
activeVideoFormat = videoFormat; activeVideoFormat = videoFormat;
Log(LOG_I, @"Active video format: 0x%x", activeVideoFormat); Log(LOG_I, @"Active video format: 0x%x", activeVideoFormat);
@@ -592,8 +592,8 @@ void ClSetControllerLED(uint16_t controllerNumber, uint8_t r, uint8_t g, uint8_t
_callbacks = callbacks; _callbacks = callbacks;
LiInitializeStreamConfiguration(&_streamConfig); LiInitializeStreamConfiguration(&_streamConfig);
_streamConfig.colorRange = config.fullRange ? 1 : 0; _streamConfig.colorRange = config.fullColorRange ? 1 : 0;
fullRange = config.fullRange; fullColorRange = config.fullColorRange;
_streamConfig.width = config.width; _streamConfig.width = config.width;
_streamConfig.height = config.height; _streamConfig.height = config.height;
_streamConfig.fps = config.frameRate; _streamConfig.fps = config.frameRate;
+1 -1
View File
@@ -21,7 +21,7 @@
@property int serverCodecModeSupport; @property int serverCodecModeSupport;
@property BOOL enableYUV444; @property BOOL enableYUV444;
@property BOOL enablePIP; @property BOOL enablePIP;
@property BOOL fullRange; @property BOOL fullColorRange;
@property int width; @property int width;
@property int height; @property int height;
@property int frameRate; @property int frameRate;
+1 -1
View File
@@ -9,5 +9,5 @@
#import "StreamConfiguration.h" #import "StreamConfiguration.h"
@implementation StreamConfiguration @implementation StreamConfiguration
@synthesize host, httpsPort, appID, width, height, frameRate, bitRate, riKeyId, riKey, gamepadMask, appName, optimizeGameSettings, playAudioOnPC, swapABXYButtons, buttonVisualFeedback, gyroMode, emulatedControllerType, audioConfiguration, supportedVideoFormats, multiController, serverCert, rtspSessionUrl, serverCodecModeSupport, enableYUV444, enablePIP, fullRange, localVolume; @synthesize host, httpsPort, appID, width, height, frameRate, bitRate, riKeyId, riKey, gamepadMask, appName, optimizeGameSettings, playAudioOnPC, swapABXYButtons, buttonVisualFeedback, gyroMode, emulatedControllerType, audioConfiguration, supportedVideoFormats, multiController, serverCert, rtspSessionUrl, serverCodecModeSupport, enableYUV444, enablePIP, fullColorRange, localVolume;
@end @end
+1 -1
View File
@@ -205,7 +205,7 @@
double avgVideoMbps = [_connection getBwTracker].averageMbps; double avgVideoMbps = [_connection getBwTracker].averageMbps;
double peakVideoMbps = [_connection getBwTracker].peakMbps; double peakVideoMbps = [_connection getBwTracker].peakMbps;
NSString* colorRange = _config.fullRange ? @"Full" : @"Limited"; NSString* colorRange = _config.fullColorRange ? @"Full" : @"Limited";
if(overlayLevel == 1) return [LocalizationHelper localizedStringForKey:@"simplifiedOsdText", if(overlayLevel == 1) return [LocalizationHelper localizedStringForKey:@"simplifiedOsdText",
fps, fps,
@@ -830,7 +830,7 @@ static NSMutableSet* hostList;
_streamConfig.buttonVisualFeedback = streamSettings.buttonVisualFeedback; _streamConfig.buttonVisualFeedback = streamSettings.buttonVisualFeedback;
_streamConfig.enableYUV444 = streamSettings.enableYUV444; _streamConfig.enableYUV444 = streamSettings.enableYUV444;
_streamConfig.enablePIP = streamSettings.enablePIP; _streamConfig.enablePIP = streamSettings.enablePIP;
_streamConfig.fullRange = streamSettings.fullRange; _streamConfig.fullColorRange = streamSettings.fullColorRange;
_streamConfig.asyncNativeTouchPriority = streamSettings.asyncNativeTouchPriority; // new streamConfig segment _streamConfig.asyncNativeTouchPriority = streamSettings.asyncNativeTouchPriority; // new streamConfig segment
_streamConfig.gyroMode = [streamSettings.gyroMode intValue]; _streamConfig.gyroMode = [streamSettings.gyroMode intValue];
_streamConfig.emulatedControllerType = streamSettings.emulatedControllerType.intValue; _streamConfig.emulatedControllerType = streamSettings.emulatedControllerType.intValue;
@@ -1178,10 +1178,15 @@ static NSMutableSet* hostList;
[settingsViewController setHidden:_settingsExpandedInStreamView forStack:settingsViewController.audioOnPcStack]; [settingsViewController setHidden:_settingsExpandedInStreamView forStack:settingsViewController.audioOnPcStack];
[settingsViewController.touchModeSelector1 setEnabled:!_settingsExpandedInStreamView || !(settingsViewController.touchModeSelector1.selectedSegmentIndex == AbsoluteTouch && !settingsViewController.passthroughGesturesSwitch.isOn)]; [settingsViewController.touchModeSelector1 setEnabled:!_settingsExpandedInStreamView || !(settingsViewController.touchModeSelector1.selectedSegmentIndex == AbsoluteTouch && !settingsViewController.passthroughGesturesSwitch.isOn)];
[settingsViewController.touchModeSelector2 setEnabled:settingsViewController.touchModeSelector1.enabled]; [settingsViewController.touchModeSelector2 setEnabled:settingsViewController.touchModeSelector1.enabled];
[settingsViewController.codecSelector setEnabled:!_settingsExpandedInStreamView]; [settingsViewController.codecSelector setEnabled:!_settingsExpandedInStreamView];
[settingsViewController.yuv444Switch setEnabled:!_settingsExpandedInStreamView]; if(_settingsExpandedInStreamView){
[settingsViewController.fullRangeSwitch setEnabled:!_settingsExpandedInStreamView]; [settingsViewController.yuv444Switch setEnabled:NO];
[settingsViewController.hdrSwitch setEnabled:!_settingsExpandedInStreamView && [settingsViewController hdrSupported]]; [settingsViewController.fullColorRangeSwitch setEnabled:NO];
[settingsViewController.hdrSwitch setEnabled:NO];
}
else [settingsViewController updateCodecDependentSwitches];
[settingsViewController.gyroModeSelector setEnabled:!_settingsExpandedInStreamView || ![streamFrameViewController shallDisableGyroHotSwitch]]; [settingsViewController.gyroModeSelector setEnabled:!_settingsExpandedInStreamView || ![streamFrameViewController shallDisableGyroHotSwitch]];
[settingsViewController.emulatedControllerTypeSelector setEnabled:!_settingsExpandedInStreamView]; [settingsViewController.emulatedControllerTypeSelector setEnabled:!_settingsExpandedInStreamView];
[settingsViewController setHidden:_settingsExpandedInStreamView forStack:settingsViewController.citrixX1MouseStack]; [settingsViewController setHidden:_settingsExpandedInStreamView forStack:settingsViewController.citrixX1MouseStack];
@@ -49,7 +49,7 @@
@property (strong, nonatomic) IBOutlet UIStackView *codecStack; @property (strong, nonatomic) IBOutlet UIStackView *codecStack;
@property (strong, nonatomic) IBOutlet UIStackView *yuv444Stack; @property (strong, nonatomic) IBOutlet UIStackView *yuv444Stack;
@property (strong, nonatomic) IBOutlet UIStackView *pipStack; @property (strong, nonatomic) IBOutlet UIStackView *pipStack;
@property (strong, nonatomic) IBOutlet UIStackView *fullRangeStack; @property (strong, nonatomic) IBOutlet UIStackView *fullColorRangeStack;
@property (strong, nonatomic) IBOutlet UIStackView *hdrStack; @property (strong, nonatomic) IBOutlet UIStackView *hdrStack;
@property (strong, nonatomic) IBOutlet UIStackView *reverseMouseWheelDirectionStack; @property (strong, nonatomic) IBOutlet UIStackView *reverseMouseWheelDirectionStack;
@property (strong, nonatomic) IBOutlet UIStackView *citrixX1MouseStack; @property (strong, nonatomic) IBOutlet UIStackView *citrixX1MouseStack;
@@ -79,7 +79,7 @@
@property (strong, nonatomic) IBOutlet UISwitch *hdrSwitch; @property (strong, nonatomic) IBOutlet UISwitch *hdrSwitch;
@property (strong, nonatomic) IBOutlet UISwitch *yuv444Switch; @property (strong, nonatomic) IBOutlet UISwitch *yuv444Switch;
@property (strong, nonatomic) IBOutlet UISwitch *pipSwitch; @property (strong, nonatomic) IBOutlet UISwitch *pipSwitch;
@property (strong, nonatomic) IBOutlet UISwitch *fullRangeSwitch; @property (strong, nonatomic) IBOutlet UISwitch *fullColorRangeSwitch;
@property (strong, nonatomic) IBOutlet UISegmentedControl *reverseMouseWheelDirectionSelector; @property (strong, nonatomic) IBOutlet UISegmentedControl *reverseMouseWheelDirectionSelector;
@property (strong, nonatomic) IBOutlet UISegmentedControl *statsOverlaySelector; @property (strong, nonatomic) IBOutlet UISegmentedControl *statsOverlaySelector;
@property (strong, nonatomic) IBOutlet UIScrollView *scrollView; @property (strong, nonatomic) IBOutlet UIScrollView *scrollView;
@@ -261,5 +261,6 @@
- (void)updateTheme; - (void)updateTheme;
- (void)hideDynamicLabelsWhenOverlapped:(UIView* )view; - (void)hideDynamicLabelsWhenOverlapped:(UIView* )view;
- (void)setHidden:(BOOL)hidden forStack:(UIStackView* )stack; - (void)setHidden:(BOOL)hidden forStack:(UIStackView* )stack;
- (void)updateCodecDependentSwitches;
@end @end
@@ -435,7 +435,7 @@ BOOL isCustomResolution(int resolutionSelected) {
settingsViewJustExpanded = true; settingsViewJustExpanded = true;
// Ensure codec-dependent switches are in correct state when view appears // Ensure codec-dependent switches are in correct state when view appears
[self updateCodecDependentSwitches]; // [self updateCodecDependentSwitches];
/* /*
[self checkAndRequestMicPermission]; [self checkAndRequestMicPermission];
@@ -755,8 +755,8 @@ BOOL isCustomResolution(int resolutionSelected) {
[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:![self 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:@"fullRangeStack" 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.fullRangeStack ofId:@"fullRangeStack" 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];
@@ -1543,7 +1543,7 @@ BOOL isCustomResolution(int resolutionSelected) {
[_parentStack removeFromSuperview]; [_parentStack removeFromSuperview];
[self initParentStack]; [self initParentStack];
[self layoutSections]; [self layoutSections];
[self updateCodecDependentSwitches]; // Ensure switches are in correct state after layout // [self updateCodecDependentSwitches]; // Ensure switches are in correct state after layout
[self updateTheme]; [self updateTheme];
//[self doneRemoveSettingItem]; //[self doneRemoveSettingItem];
Settings *currentSettings = [dataMan retrieveSettings]; Settings *currentSettings = [dataMan retrieveSettings];
@@ -1788,6 +1788,12 @@ BOOL isCustomResolution(int resolutionSelected) {
else { else {
[self.hdrSwitch setOn:self->tempSettings.enableHdr]; [self.hdrSwitch setOn:self->tempSettings.enableHdr];
} }
// Initialize codec-dependent switches together
[self.yuv444Switch setOn:self->tempSettings.enableYUV444];
[self.fullColorRangeSwitch setOn:self->tempSettings.fullColorRange];
[self.codecSelector addTarget:self action:@selector(codecSelectorChanged:) forControlEvents:UIControlEventValueChanged];
[self codecSelectorChanged:self.codecSelector];
[self.pipSwitch setOn:self->tempSettings.enablePIP]; [self.pipSwitch setOn:self->tempSettings.enablePIP];
if(@available(iOS 15.0, *)) { if(@available(iOS 15.0, *)) {
@@ -1796,12 +1802,6 @@ BOOL isCustomResolution(int resolutionSelected) {
[self.pipSwitch setOn:false]; [self.pipSwitch setOn:false];
[self.pipSwitch setEnabled:false]; [self.pipSwitch setEnabled:false];
} }
// Initialize codec-dependent switches together
[self.yuv444Switch setOn:self->tempSettings.enableYUV444];
[self.fullRangeSwitch setOn:self->tempSettings.fullRange];
[self.codecSelector addTarget:self action:@selector(codecSelectorChanged:) forControlEvents:UIControlEventValueChanged];
[self updateCodecDependentSwitches];
[self.statsOverlaySelector setSelectedSegmentIndex:self->tempSettings.statsOverlayLevel.intValue]; [self.statsOverlaySelector setSelectedSegmentIndex:self->tempSettings.statsOverlayLevel.intValue];
@@ -2693,6 +2693,7 @@ BOOL isCustomResolution(int resolutionSelected) {
return 0; return 0;
} }
// a setEnabled method for low iOS version UISlider
- (void) widget:(UIView*)widget setEnabled:(bool)enabled{ - (void) widget:(UIView*)widget setEnabled:(bool)enabled{
if([widget isKindOfClass:[UISlider class]]){ if([widget isKindOfClass:[UISlider class]]){
UISlider* widgetPtr = (UISlider* )widget; UISlider* widgetPtr = (UISlider* )widget;
@@ -3315,7 +3316,7 @@ BOOL isCustomResolution(int resolutionSelected) {
uint32_t preferredCodec = [self getChosenCodecPreference]; uint32_t preferredCodec = [self getChosenCodecPreference];
BOOL enableYUV444 = self.yuv444Switch.isOn; BOOL enableYUV444 = self.yuv444Switch.isOn;
BOOL enablePIP = self.pipSwitch.isOn; BOOL enablePIP = self.pipSwitch.isOn;
BOOL fullRange = self.fullRangeSwitch.isOn; BOOL fullRange = self.fullColorRangeSwitch.isOn;
BOOL btMouseSupport = self.citrixX1MouseSwitch.isOn; BOOL btMouseSupport = self.citrixX1MouseSwitch.isOn;
NSInteger touchMode = [self isNotNativeTouchOnly] ? self.touchModeSelector1.selectedSegmentIndex : NativeTouchOnly; NSInteger touchMode = [self isNotNativeTouchOnly] ? self.touchModeSelector1.selectedSegmentIndex : NativeTouchOnly;
NSInteger statsOverlayLevel = [self.statsOverlaySelector selectedSegmentIndex]; NSInteger statsOverlayLevel = [self.statsOverlaySelector selectedSegmentIndex];
@@ -3445,37 +3446,32 @@ BOOL isCustomResolution(int resolutionSelected) {
uint32_t codec = [self getChosenCodecPreference]; uint32_t codec = [self getChosenCodecPreference];
BOOL isAV1 = (codec == CODEC_PREF_AV1); BOOL isAV1 = (codec == CODEC_PREF_AV1);
BOOL isH264 = (codec == CODEC_PREF_H264); BOOL isH264 = (codec == CODEC_PREF_H264);
if (isAV1) { if (isAV1) {
// AV1 must use limited range, so disable fullRange and turn it off // AV1 must use limited range, so disable fullRange and turn it off
[self.fullRangeSwitch setOn:NO animated:NO]; [self.fullColorRangeSwitch setOn:NO animated:NO];
[self.fullRangeSwitch setEnabled:NO]; [self.fullColorRangeSwitch setEnabled:NO];
[self.fullRangeSwitch setUserInteractionEnabled:NO];
// AV1 doesn't support YUV444, so disable it and turn it off // AV1 doesn't support YUV444, so disable it and turn it off
[self.yuv444Switch setOn:NO animated:NO]; [self.yuv444Switch setOn:NO animated:NO];
[self.yuv444Switch setEnabled:NO]; [self.yuv444Switch setEnabled:NO];
[self.yuv444Switch setUserInteractionEnabled:NO];
} else { } else {
[self.fullRangeSwitch setEnabled:YES]; [self.fullColorRangeSwitch setEnabled:YES];
[self.fullRangeSwitch setUserInteractionEnabled:YES];
[self.yuv444Switch setEnabled:YES]; [self.yuv444Switch setEnabled:YES];
[self.yuv444Switch setUserInteractionEnabled:YES];
} }
// H264 doesn't support HDR, so disable it and turn it off // H264 doesn't support HDR, so disable it and turn it off
if (isH264) { if (isH264) {
[self.hdrSwitch setOn:NO animated:NO]; [self.hdrSwitch setOn:NO animated:NO];
[self.hdrSwitch setEnabled:NO]; [self.hdrSwitch setEnabled:NO];
[self.hdrSwitch setUserInteractionEnabled:NO];
} else { } else {
// Only enable HDR if the device supports it // Only enable HDR if the device supports it
if ([self hdrSupported]) { if ([self hdrSupported]) {
[self.hdrSwitch setEnabled:YES]; [self.hdrSwitch setEnabled:YES];
[self.hdrSwitch setUserInteractionEnabled:YES];
} }
} }
if(![self hdrSupported]) [self.hdrSwitch setOn:NO animated:NO];
} }
@end @end
+20 -2
View File
@@ -2954,13 +2954,31 @@
} }
}, },
"iPd-Ra-Lbl.text" : { "iPd-Ra-Lbl.text" : {
"comment" : "Class = \"UILabel\"; text = \"Full Range\"; ObjectID = \"iPd-Ra-Lbl\";", "comment" : "Class = \"UILabel\"; text = \"Full Color Range\"; ObjectID = \"iPd-Ra-Lbl\";",
"extractionState" : "extracted_with_value", "extractionState" : "extracted_with_value",
"localizations" : { "localizations" : {
"en" : { "en" : {
"stringUnit" : { "stringUnit" : {
"state" : "new", "state" : "new",
"value" : "Full Range" "value" : "Full Color Range"
}
},
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"value" : "全色彩范围"
}
},
"zh-Hant" : {
"stringUnit" : {
"state" : "translated",
"value" : "全色彩範圍"
}
},
"zh-HK" : {
"stringUnit" : {
"state" : "translated",
"value" : "全色彩範圍"
} }
} }
} }
+20 -2
View File
@@ -2198,13 +2198,31 @@
} }
}, },
"fRl-Ra-Lbl.text" : { "fRl-Ra-Lbl.text" : {
"comment" : "Class = \"UILabel\"; text = \"Full Range\"; ObjectID = \"fRl-Ra-Lbl\";", "comment" : "Class = \"UILabel\"; text = \"Full Color Range\"; ObjectID = \"fRl-Ra-Lbl\";",
"extractionState" : "extracted_with_value", "extractionState" : "extracted_with_value",
"localizations" : { "localizations" : {
"en" : { "en" : {
"stringUnit" : { "stringUnit" : {
"state" : "new", "state" : "new",
"value" : "Full Range" "value" : "Full Color Range"
}
},
"zh-Hans" : {
"stringUnit" : {
"state" : "needs_review",
"value" : "全色彩范围"
}
},
"zh-Hant" : {
"stringUnit" : {
"state" : "needs_review",
"value" : "全色彩範圍"
}
},
"zh-HK" : {
"stringUnit" : {
"state" : "needs_review",
"value" : "全色彩範圍"
} }
} }
} }