Disable the HEVC toggle for devices that don't support HEVC

This commit is contained in:
Cameron Gutman
2019-06-05 18:41:30 -07:00
parent a508c6d855
commit 28ff29bb96
2 changed files with 21 additions and 2 deletions

View File

@@ -327,7 +327,7 @@ void ClRumble(unsigned short controllerNumber, unsigned short lowFreqMotor, unsi
// Additionally, iPhone X had a bug which would cause video
// to freeze after a few minutes with HEVC prior to iOS 11.3.
// As a result, we will only use HEVC on iOS 11.3 or later.
if (@available(iOS 11.3, *)) {
if (@available(iOS 11.3, tvOS 11.3, *)) {
_streamConfig.supportsHevc = config.allowHevc && VTIsHardwareDecodeSupported(kCMVideoCodecType_HEVC);
}
#else

View File

@@ -10,6 +10,8 @@
#import "TemporarySettings.h"
#import "DataManager.h"
#import <VideoToolbox/VideoToolbox.h>
@implementation SettingsViewController {
NSInteger _bitrate;
Boolean _adjustedForSafeArea;
@@ -150,10 +152,27 @@ static const int bitrateTable[] = {
[self.framerateSelector removeSegmentAtIndex:2 animated:NO];
}
// Disable the HEVC selector if HEVC is not supported by the hardware
// or the version of iOS.
if (@available(iOS 11.3, tvOS 11.3, *)) {
if (VTIsHardwareDecodeSupported(kCMVideoCodecType_HEVC)) {
[self.hevcSelector setSelectedSegmentIndex:currentSettings.useHevc ? 1 : 0];
}
else {
[self.hevcSelector removeAllSegments];
[self.hevcSelector insertSegmentWithTitle:@"Unsupported on this device" atIndex:0 animated:NO];
[self.hevcSelector setEnabled:NO];
}
}
else {
[self.hevcSelector removeAllSegments];
[self.hevcSelector insertSegmentWithTitle:@"Requires iOS 11.3 or later" atIndex:0 animated:NO];
[self.hevcSelector setEnabled:NO];
}
[self.optimizeSettingsSelector setSelectedSegmentIndex:currentSettings.optimizeGames ? 1 : 0];
[self.multiControllerSelector setSelectedSegmentIndex:currentSettings.multiController ? 1 : 0];
[self.audioOnPCSelector setSelectedSegmentIndex:currentSettings.playAudioOnPC ? 1 : 0];
[self.hevcSelector setSelectedSegmentIndex:currentSettings.useHevc ? 1 : 0];
NSInteger onscreenControls = [currentSettings.onscreenControls integerValue];
[self.resolutionSelector setSelectedSegmentIndex:resolution];
[self.resolutionSelector addTarget:self action:@selector(newResolutionFpsChosen) forControlEvents:UIControlEventValueChanged];