From 54d1851c7828a887346a7493a1eb25dc801ea82e Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sun, 27 Mar 2022 13:18:03 -0500 Subject: [PATCH] Add HDR toggle for iOS --- .../ViewControllers/SettingsViewController.h | 1 + .../ViewControllers/SettingsViewController.m | 28 ++++++++++- iPad.storyboard | 48 ++++++++++++------ iPhone.storyboard | 50 +++++++++++++------ 4 files changed, 95 insertions(+), 32 deletions(-) diff --git a/Limelight/ViewControllers/SettingsViewController.h b/Limelight/ViewControllers/SettingsViewController.h index ad7736f..9a12d32 100644 --- a/Limelight/ViewControllers/SettingsViewController.h +++ b/Limelight/ViewControllers/SettingsViewController.h @@ -20,6 +20,7 @@ @property (strong, nonatomic) IBOutlet UISegmentedControl *multiControllerSelector; @property (strong, nonatomic) IBOutlet UISegmentedControl *audioOnPCSelector; @property (strong, nonatomic) IBOutlet UISegmentedControl *hevcSelector; +@property (strong, nonatomic) IBOutlet UISegmentedControl *hdrSelector; @property (strong, nonatomic) IBOutlet UISegmentedControl *framePacingSelector; @property (strong, nonatomic) IBOutlet UISegmentedControl *btMouseSelector; @property (strong, nonatomic) IBOutlet UISegmentedControl *statsOverlaySelector; diff --git a/Limelight/ViewControllers/SettingsViewController.m b/Limelight/ViewControllers/SettingsViewController.m index 45277b2..7a66d9f 100644 --- a/Limelight/ViewControllers/SettingsViewController.m +++ b/Limelight/ViewControllers/SettingsViewController.m @@ -11,6 +11,7 @@ #import "DataManager.h" #import +#import @implementation SettingsViewController { NSInteger _bitrate; @@ -209,11 +210,25 @@ BOOL isCustomResolution(CGSize res) { [self.hevcSelector insertSegmentWithTitle:@"Unsupported on this device" atIndex:0 animated:NO]; [self.hevcSelector setEnabled:NO]; } + + // Disable HDR selector if HDR is not supported by the display + if (!VTIsHardwareDecodeSupported(kCMVideoCodecType_HEVC) || !(AVPlayer.availableHDRModes & AVPlayerHDRModeHDR10)) { + [self.hdrSelector removeAllSegments]; + [self.hdrSelector insertSegmentWithTitle:@"Unsupported on this device" atIndex:0 animated:NO]; + [self.hdrSelector setEnabled:NO]; + } + else { + [self.hdrSelector addTarget:self action:@selector(hdrStateChanged) forControlEvents:UIControlEventValueChanged]; + } } else { [self.hevcSelector removeAllSegments]; [self.hevcSelector insertSegmentWithTitle:@"Requires iOS 11.3 or later" atIndex:0 animated:NO]; [self.hevcSelector setEnabled:NO]; + + [self.hdrSelector removeAllSegments]; + [self.hdrSelector insertSegmentWithTitle:@"Requires iOS 11.3 or later" atIndex:0 animated:NO]; + [self.hdrSelector setEnabled:NO]; } [self.touchModeSelector setSelectedSegmentIndex:currentSettings.absoluteTouchMode ? 1 : 0]; @@ -295,6 +310,16 @@ BOOL isCustomResolution(CGSize res) { } } +- (void) hdrStateChanged { + if ([self.hdrSelector selectedSegmentIndex] == 1) { + [self.hevcSelector setSelectedSegmentIndex:1]; + [self.hevcSelector setEnabled:NO]; + } + else { + [self.hevcSelector setEnabled:YES]; + } +} + - (void) promptCustomResolutionDialog { UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Enter Custom Resolution" message:nil preferredStyle:UIAlertControllerStyleAlert]; @@ -440,6 +465,7 @@ BOOL isCustomResolution(CGSize res) { BOOL useFramePacing = [self.framePacingSelector selectedSegmentIndex] == 1; BOOL absoluteTouchMode = [self.touchModeSelector selectedSegmentIndex] == 1; BOOL statsOverlay = [self.statsOverlaySelector selectedSegmentIndex] == 1; + BOOL enableHdr = [self.hdrSelector selectedSegmentIndex] == 1; [dataMan saveSettingsWithBitrate:_bitrate framerate:framerate height:height @@ -451,7 +477,7 @@ BOOL isCustomResolution(CGSize res) { audioOnPC:audioOnPC useHevc:useHevc useFramePacing:useFramePacing - enableHdr:NO + enableHdr:enableHdr btMouseSupport:btMouseSupport absoluteTouchMode:absoluteTouchMode statsOverlay:statsOverlay]; diff --git a/iPad.storyboard b/iPad.storyboard index 8bad355..919053d 100644 --- a/iPad.storyboard +++ b/iPad.storyboard @@ -1,9 +1,9 @@ - - + + - + @@ -12,7 +12,7 @@ - + @@ -59,7 +59,7 @@ - +