mirror of
https://github.com/moonlight-stream/moonlight-ios.git
synced 2025-07-01 23:35:59 +00:00
Extend codec configuration option for AV1 support
This commit is contained in:
parent
0a59ce0ca9
commit
6974cda328
@ -23,7 +23,7 @@
|
|||||||
multiController:(BOOL)multiController
|
multiController:(BOOL)multiController
|
||||||
swapABXYButtons:(BOOL)swapABXYButtons
|
swapABXYButtons:(BOOL)swapABXYButtons
|
||||||
audioOnPC:(BOOL)audioOnPC
|
audioOnPC:(BOOL)audioOnPC
|
||||||
useHevc:(BOOL)useHevc
|
preferredCodec:(uint32_t)preferredCodec
|
||||||
useFramePacing:(BOOL)useFramePacing
|
useFramePacing:(BOOL)useFramePacing
|
||||||
enableHdr:(BOOL)enableHdr
|
enableHdr:(BOOL)enableHdr
|
||||||
btMouseSupport:(BOOL)btMouseSupport
|
btMouseSupport:(BOOL)btMouseSupport
|
||||||
|
@ -62,7 +62,7 @@
|
|||||||
multiController:(BOOL)multiController
|
multiController:(BOOL)multiController
|
||||||
swapABXYButtons:(BOOL)swapABXYButtons
|
swapABXYButtons:(BOOL)swapABXYButtons
|
||||||
audioOnPC:(BOOL)audioOnPC
|
audioOnPC:(BOOL)audioOnPC
|
||||||
useHevc:(BOOL)useHevc
|
preferredCodec:(uint32_t)preferredCodec
|
||||||
useFramePacing:(BOOL)useFramePacing
|
useFramePacing:(BOOL)useFramePacing
|
||||||
enableHdr:(BOOL)enableHdr
|
enableHdr:(BOOL)enableHdr
|
||||||
btMouseSupport:(BOOL)btMouseSupport
|
btMouseSupport:(BOOL)btMouseSupport
|
||||||
@ -81,7 +81,7 @@
|
|||||||
settingsToSave.multiController = multiController;
|
settingsToSave.multiController = multiController;
|
||||||
settingsToSave.swapABXYButtons = swapABXYButtons;
|
settingsToSave.swapABXYButtons = swapABXYButtons;
|
||||||
settingsToSave.playAudioOnPC = audioOnPC;
|
settingsToSave.playAudioOnPC = audioOnPC;
|
||||||
settingsToSave.useHevc2 = useHevc;
|
settingsToSave.preferredCodec = preferredCodec;
|
||||||
settingsToSave.useFramePacing = useFramePacing;
|
settingsToSave.useFramePacing = useFramePacing;
|
||||||
settingsToSave.enableHdr = enableHdr;
|
settingsToSave.enableHdr = enableHdr;
|
||||||
settingsToSave.btMouseSupport = btMouseSupport;
|
settingsToSave.btMouseSupport = btMouseSupport;
|
||||||
|
@ -19,7 +19,12 @@
|
|||||||
@property (nonatomic, retain) NSNumber * audioConfig;
|
@property (nonatomic, retain) NSNumber * audioConfig;
|
||||||
@property (nonatomic, retain) NSNumber * onscreenControls;
|
@property (nonatomic, retain) NSNumber * onscreenControls;
|
||||||
@property (nonatomic, retain) NSString * uniqueId;
|
@property (nonatomic, retain) NSString * uniqueId;
|
||||||
@property (nonatomic) BOOL useHevc;
|
@property (nonatomic) enum {
|
||||||
|
CODEC_PREF_AUTO,
|
||||||
|
CODEC_PREF_H264,
|
||||||
|
CODEC_PREF_HEVC,
|
||||||
|
CODEC_PREF_AV1,
|
||||||
|
} preferredCodec;
|
||||||
@property (nonatomic) BOOL useFramePacing;
|
@property (nonatomic) BOOL useFramePacing;
|
||||||
@property (nonatomic) BOOL multiController;
|
@property (nonatomic) BOOL multiController;
|
||||||
@property (nonatomic) BOOL swapABXYButtons;
|
@property (nonatomic) BOOL swapABXYButtons;
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
assert([self.framerate intValue] != 0);
|
assert([self.framerate intValue] != 0);
|
||||||
self.audioConfig = [NSNumber numberWithInteger:[[NSUserDefaults standardUserDefaults] integerForKey:@"audioConfig"]];
|
self.audioConfig = [NSNumber numberWithInteger:[[NSUserDefaults standardUserDefaults] integerForKey:@"audioConfig"]];
|
||||||
assert([self.audioConfig intValue] != 0);
|
assert([self.audioConfig intValue] != 0);
|
||||||
self.useHevc = [[NSUserDefaults standardUserDefaults] boolForKey:@"useHevc2"];
|
self.preferredCodec = [[NSUserDefaults standardUserDefaults] integerForKey:@"preferredCodec"];
|
||||||
self.useFramePacing = [[NSUserDefaults standardUserDefaults] integerForKey:@"useFramePacing"] != 0;
|
self.useFramePacing = [[NSUserDefaults standardUserDefaults] integerForKey:@"useFramePacing"] != 0;
|
||||||
self.playAudioOnPC = [[NSUserDefaults standardUserDefaults] boolForKey:@"audioOnPC"];
|
self.playAudioOnPC = [[NSUserDefaults standardUserDefaults] boolForKey:@"audioOnPC"];
|
||||||
self.enableHdr = [[NSUserDefaults standardUserDefaults] boolForKey:@"enableHdr"];
|
self.enableHdr = [[NSUserDefaults standardUserDefaults] boolForKey:@"enableHdr"];
|
||||||
@ -74,7 +74,7 @@
|
|||||||
self.height = settings.height;
|
self.height = settings.height;
|
||||||
self.width = settings.width;
|
self.width = settings.width;
|
||||||
self.audioConfig = settings.audioConfig;
|
self.audioConfig = settings.audioConfig;
|
||||||
self.useHevc = settings.useHevc2;
|
self.preferredCodec = settings.preferredCodec;
|
||||||
self.useFramePacing = settings.useFramePacing;
|
self.useFramePacing = settings.useFramePacing;
|
||||||
self.playAudioOnPC = settings.playAudioOnPC;
|
self.playAudioOnPC = settings.playAudioOnPC;
|
||||||
self.enableHdr = settings.enableHdr;
|
self.enableHdr = settings.enableHdr;
|
||||||
|
@ -3,6 +3,6 @@
|
|||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>_XCCurrentVersionName</key>
|
<key>_XCCurrentVersionName</key>
|
||||||
<string>Moonlight v1.9.xcdatamodel</string>
|
<string>Moonlight v1.10.xcdatamodel</string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
@ -0,0 +1,43 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="22225" systemVersion="23A344" minimumToolsVersion="Xcode 7.3" sourceLanguage="Objective-C" userDefinedModelVersionIdentifier="">
|
||||||
|
<entity name="App" representedClassName="App" syncable="YES" codeGenerationType="class">
|
||||||
|
<attribute name="hdrSupported" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES" syncable="YES"/>
|
||||||
|
<attribute name="hidden" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES" syncable="YES"/>
|
||||||
|
<attribute name="id" attributeType="String" syncable="YES"/>
|
||||||
|
<attribute name="name" attributeType="String" syncable="YES"/>
|
||||||
|
<relationship name="host" maxCount="1" deletionRule="Nullify" destinationEntity="Host" inverseName="appList" inverseEntity="Host" syncable="YES"/>
|
||||||
|
</entity>
|
||||||
|
<entity name="Host" representedClassName="Host" syncable="YES" codeGenerationType="class">
|
||||||
|
<attribute name="address" optional="YES" attributeType="String" syncable="YES"/>
|
||||||
|
<attribute name="externalAddress" optional="YES" attributeType="String" syncable="YES"/>
|
||||||
|
<attribute name="ipv6Address" optional="YES" attributeType="String" syncable="YES"/>
|
||||||
|
<attribute name="localAddress" optional="YES" attributeType="String" syncable="YES"/>
|
||||||
|
<attribute name="mac" optional="YES" attributeType="String" syncable="YES"/>
|
||||||
|
<attribute name="name" attributeType="String" syncable="YES"/>
|
||||||
|
<attribute name="pairState" optional="YES" attributeType="Integer 32" defaultValueString="0" usesScalarValueType="NO" syncable="YES"/>
|
||||||
|
<attribute name="serverCert" optional="YES" attributeType="Binary" syncable="YES"/>
|
||||||
|
<attribute name="serverCodecModeSupport" attributeType="Integer 32" defaultValueString="0" usesScalarValueType="YES" syncable="YES"/>
|
||||||
|
<attribute name="uuid" optional="YES" attributeType="String" syncable="YES"/>
|
||||||
|
<relationship name="appList" optional="YES" toMany="YES" deletionRule="Cascade" destinationEntity="App" inverseName="host" inverseEntity="App" syncable="YES"/>
|
||||||
|
</entity>
|
||||||
|
<entity name="Settings" representedClassName="Settings" syncable="YES" codeGenerationType="class">
|
||||||
|
<attribute name="absoluteTouchMode" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES" syncable="YES"/>
|
||||||
|
<attribute name="audioConfig" attributeType="Integer 32" defaultValueString="2" usesScalarValueType="NO" syncable="YES"/>
|
||||||
|
<attribute name="bitrate" attributeType="Integer 32" defaultValueString="10000" usesScalarValueType="NO" syncable="YES"/>
|
||||||
|
<attribute name="btMouseSupport" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES" syncable="YES"/>
|
||||||
|
<attribute name="deviceGyroMode" optional="YES" attributeType="Integer 32" defaultValueString="0" usesScalarValueType="NO" syncable="YES"/>
|
||||||
|
<attribute name="enableHdr" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES" syncable="YES"/>
|
||||||
|
<attribute name="framerate" attributeType="Integer 32" defaultValueString="60" usesScalarValueType="NO" syncable="YES"/>
|
||||||
|
<attribute name="height" attributeType="Integer 32" defaultValueString="720" usesScalarValueType="NO" syncable="YES"/>
|
||||||
|
<attribute name="multiController" attributeType="Boolean" defaultValueString="YES" usesScalarValueType="YES" syncable="YES"/>
|
||||||
|
<attribute name="onscreenControls" attributeType="Integer 32" defaultValueString="1" usesScalarValueType="NO" syncable="YES"/>
|
||||||
|
<attribute name="optimizeGames" attributeType="Boolean" defaultValueString="YES" usesScalarValueType="YES" syncable="YES"/>
|
||||||
|
<attribute name="playAudioOnPC" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES" syncable="YES"/>
|
||||||
|
<attribute name="preferredCodec" attributeType="Integer 32" defaultValueString="YES" usesScalarValueType="YES" syncable="YES"/>
|
||||||
|
<attribute name="statsOverlay" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES" syncable="YES"/>
|
||||||
|
<attribute name="swapABXYButtons" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES" syncable="YES"/>
|
||||||
|
<attribute name="uniqueId" attributeType="String" syncable="YES"/>
|
||||||
|
<attribute name="useFramePacing" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES" syncable="YES"/>
|
||||||
|
<attribute name="width" attributeType="Integer 32" defaultValueString="1280" usesScalarValueType="NO" syncable="YES"/>
|
||||||
|
</entity>
|
||||||
|
</model>
|
@ -662,11 +662,27 @@ static NSMutableSet* hostList;
|
|||||||
|
|
||||||
_streamConfig.serverCodecModeSupport = app.host.serverCodecModeSupport;
|
_streamConfig.serverCodecModeSupport = app.host.serverCodecModeSupport;
|
||||||
|
|
||||||
// H.264 is always supported
|
switch (streamSettings.preferredCodec) {
|
||||||
_streamConfig.supportedVideoFormats = VIDEO_FORMAT_H264;
|
case CODEC_PREF_AV1:
|
||||||
|
if (VTIsHardwareDecodeSupported(kCMVideoCodecType_AV1)) {
|
||||||
|
_streamConfig.supportedVideoFormats |= VIDEO_FORMAT_AV1_MAIN8;
|
||||||
|
}
|
||||||
|
// Fall-through
|
||||||
|
|
||||||
|
case CODEC_PREF_AUTO:
|
||||||
|
case CODEC_PREF_HEVC:
|
||||||
|
if (VTIsHardwareDecodeSupported(kCMVideoCodecType_HEVC)) {
|
||||||
|
_streamConfig.supportedVideoFormats |= VIDEO_FORMAT_H265;
|
||||||
|
}
|
||||||
|
// Fall-through
|
||||||
|
|
||||||
|
case CODEC_PREF_H264:
|
||||||
|
_streamConfig.supportedVideoFormats |= VIDEO_FORMAT_H264;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
// 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.useHevc || streamSettings.enableHdr) && VTIsHardwareDecodeSupported(kCMVideoCodecType_HEVC)) {
|
if ((_streamConfig.width > 4096 || _streamConfig.height > 4096 || streamSettings.enableHdr) && VTIsHardwareDecodeSupported(kCMVideoCodecType_HEVC)) {
|
||||||
_streamConfig.supportedVideoFormats |= VIDEO_FORMAT_H265;
|
_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
|
||||||
@ -674,6 +690,12 @@ static NSMutableSet* hostList;
|
|||||||
_streamConfig.supportedVideoFormats |= VIDEO_FORMAT_H265_MAIN10;
|
_streamConfig.supportedVideoFormats |= VIDEO_FORMAT_H265_MAIN10;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add the AV1 Main10 format if AV1 and HDR are both enabled and supported
|
||||||
|
if ((_streamConfig.supportedVideoFormats & VIDEO_FORMAT_MASK_AV1) && streamSettings.enableHdr &&
|
||||||
|
VTIsHardwareDecodeSupported(kCMVideoCodecType_AV1) && (AVPlayer.availableHDRModes & AVPlayerHDRModeHDR10) != 0) {
|
||||||
|
_streamConfig.supportedVideoFormats |= VIDEO_FORMAT_AV1_MAIN10;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)appLongClicked:(TemporaryApp *)app view:(UIView *)view {
|
- (void)appLongClicked:(TemporaryApp *)app view:(UIView *)view {
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
@property (strong, nonatomic) IBOutlet UISegmentedControl *multiControllerSelector;
|
@property (strong, nonatomic) IBOutlet UISegmentedControl *multiControllerSelector;
|
||||||
@property (strong, nonatomic) IBOutlet UISegmentedControl *swapABXYButtonsSelector;
|
@property (strong, nonatomic) IBOutlet UISegmentedControl *swapABXYButtonsSelector;
|
||||||
@property (strong, nonatomic) IBOutlet UISegmentedControl *audioOnPCSelector;
|
@property (strong, nonatomic) IBOutlet UISegmentedControl *audioOnPCSelector;
|
||||||
@property (strong, nonatomic) IBOutlet UISegmentedControl *hevcSelector;
|
@property (strong, nonatomic) IBOutlet UISegmentedControl *codecSelector;
|
||||||
@property (strong, nonatomic) IBOutlet UISegmentedControl *hdrSelector;
|
@property (strong, nonatomic) IBOutlet UISegmentedControl *hdrSelector;
|
||||||
@property (strong, nonatomic) IBOutlet UISegmentedControl *framePacingSelector;
|
@property (strong, nonatomic) IBOutlet UISegmentedControl *framePacingSelector;
|
||||||
@property (strong, nonatomic) IBOutlet UISegmentedControl *btMouseSelector;
|
@property (strong, nonatomic) IBOutlet UISegmentedControl *btMouseSelector;
|
||||||
|
@ -199,31 +199,35 @@ BOOL isCustomResolution(CGSize res) {
|
|||||||
[self.framerateSelector removeSegmentAtIndex:2 animated:NO];
|
[self.framerateSelector removeSegmentAtIndex:2 animated:NO];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only show the 4K option for "recent" devices. We'll judge that by whether
|
// Disable codec selector segments for unsupported codecs
|
||||||
// they support HEVC decoding (A9 or later).
|
if (!VTIsHardwareDecodeSupported(kCMVideoCodecType_AV1)) {
|
||||||
if (@available(iOS 11.0, tvOS 11.0, *)) {
|
[self.codecSelector setEnabled:NO forSegmentAtIndex:2];
|
||||||
|
}
|
||||||
if (!VTIsHardwareDecodeSupported(kCMVideoCodecType_HEVC)) {
|
if (!VTIsHardwareDecodeSupported(kCMVideoCodecType_HEVC)) {
|
||||||
|
[self.codecSelector setEnabled:NO forSegmentAtIndex:1];
|
||||||
|
|
||||||
|
// Only enable the 4K option for "recent" devices. We'll judge that by whether
|
||||||
|
// they support HEVC decoding (A9 or later).
|
||||||
[self.resolutionSelector setEnabled:NO forSegmentAtIndex:3];
|
[self.resolutionSelector setEnabled:NO forSegmentAtIndex:3];
|
||||||
}
|
}
|
||||||
}
|
switch (currentSettings.preferredCodec) {
|
||||||
else {
|
case CODEC_PREF_AUTO:
|
||||||
[self.resolutionSelector setEnabled:NO forSegmentAtIndex:3];
|
[self.codecSelector setSelectedSegmentIndex:self.codecSelector.numberOfSegments - 1];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CODEC_PREF_AV1:
|
||||||
|
[self.codecSelector setSelectedSegmentIndex:2];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CODEC_PREF_HEVC:
|
||||||
|
[self.codecSelector setSelectedSegmentIndex:1];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CODEC_PREF_H264:
|
||||||
|
[self.codecSelector setSelectedSegmentIndex:0];
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Disable the HEVC selector if HEVC is not supported by the hardware
|
|
||||||
// or the version of iOS. See comment in Connection.m for reasoning behind
|
|
||||||
// the iOS 11.3 check.
|
|
||||||
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];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Disable HDR selector if HDR is not supported by the display
|
|
||||||
if (!VTIsHardwareDecodeSupported(kCMVideoCodecType_HEVC) || !(AVPlayer.availableHDRModes & AVPlayerHDRModeHDR10)) {
|
if (!VTIsHardwareDecodeSupported(kCMVideoCodecType_HEVC) || !(AVPlayer.availableHDRModes & AVPlayerHDRModeHDR10)) {
|
||||||
[self.hdrSelector removeAllSegments];
|
[self.hdrSelector removeAllSegments];
|
||||||
[self.hdrSelector insertSegmentWithTitle:@"Unsupported on this device" atIndex:0 animated:NO];
|
[self.hdrSelector insertSegmentWithTitle:@"Unsupported on this device" atIndex:0 animated:NO];
|
||||||
@ -231,20 +235,6 @@ BOOL isCustomResolution(CGSize res) {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
[self.hdrSelector setSelectedSegmentIndex:currentSettings.enableHdr ? 1 : 0];
|
[self.hdrSelector setSelectedSegmentIndex:currentSettings.enableHdr ? 1 : 0];
|
||||||
[self.hdrSelector addTarget:self action:@selector(hdrStateChanged) forControlEvents:UIControlEventValueChanged];
|
|
||||||
|
|
||||||
// Manually trigger the hdrStateChanged callback to set the HEVC selector appropriately
|
|
||||||
[self hdrStateChanged];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
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];
|
[self.touchModeSelector setSelectedSegmentIndex:currentSettings.absoluteTouchMode ? 1 : 0];
|
||||||
@ -351,16 +341,6 @@ 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 {
|
- (void) promptCustomResolutionDialog {
|
||||||
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Enter Custom Resolution" message:nil preferredStyle:UIAlertControllerStyleAlert];
|
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Enter Custom Resolution" message:nil preferredStyle:UIAlertControllerStyleAlert];
|
||||||
|
|
||||||
@ -497,6 +477,28 @@ BOOL isCustomResolution(CGSize res) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (uint32_t) getChosenCodecPreference {
|
||||||
|
// Auto is always the last segment
|
||||||
|
if (self.codecSelector.selectedSegmentIndex == self.codecSelector.numberOfSegments - 1) {
|
||||||
|
return CODEC_PREF_AUTO;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
switch (self.codecSelector.selectedSegmentIndex) {
|
||||||
|
case 0:
|
||||||
|
return CODEC_PREF_H264;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
return CODEC_PREF_HEVC;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
return CODEC_PREF_AV1;
|
||||||
|
|
||||||
|
default:
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
- (NSInteger) getChosenStreamHeight {
|
- (NSInteger) getChosenStreamHeight {
|
||||||
// because the 4k resolution can be removed
|
// because the 4k resolution can be removed
|
||||||
BOOL lastSegmentSelected = [self.resolutionSelector selectedSegmentIndex] + 1 == [self.resolutionSelector numberOfSegments];
|
BOOL lastSegmentSelected = [self.resolutionSelector selectedSegmentIndex] + 1 == [self.resolutionSelector numberOfSegments];
|
||||||
@ -527,7 +529,7 @@ BOOL isCustomResolution(CGSize res) {
|
|||||||
BOOL multiController = [self.multiControllerSelector selectedSegmentIndex] == 1;
|
BOOL multiController = [self.multiControllerSelector selectedSegmentIndex] == 1;
|
||||||
BOOL swapABXYButtons = [self.swapABXYButtonsSelector selectedSegmentIndex] == 1;
|
BOOL swapABXYButtons = [self.swapABXYButtonsSelector selectedSegmentIndex] == 1;
|
||||||
BOOL audioOnPC = [self.audioOnPCSelector selectedSegmentIndex] == 1;
|
BOOL audioOnPC = [self.audioOnPCSelector selectedSegmentIndex] == 1;
|
||||||
BOOL useHevc = [self.hevcSelector selectedSegmentIndex] == 1;
|
uint32_t preferredCodec = [self getChosenCodecPreference];
|
||||||
BOOL btMouseSupport = [self.btMouseSelector selectedSegmentIndex] == 1;
|
BOOL btMouseSupport = [self.btMouseSelector selectedSegmentIndex] == 1;
|
||||||
BOOL useFramePacing = [self.framePacingSelector selectedSegmentIndex] == 1;
|
BOOL useFramePacing = [self.framePacingSelector selectedSegmentIndex] == 1;
|
||||||
BOOL absoluteTouchMode = [self.touchModeSelector selectedSegmentIndex] == 1;
|
BOOL absoluteTouchMode = [self.touchModeSelector selectedSegmentIndex] == 1;
|
||||||
@ -543,7 +545,7 @@ BOOL isCustomResolution(CGSize res) {
|
|||||||
multiController:multiController
|
multiController:multiController
|
||||||
swapABXYButtons:swapABXYButtons
|
swapABXYButtons:swapABXYButtons
|
||||||
audioOnPC:audioOnPC
|
audioOnPC:audioOnPC
|
||||||
useHevc:useHevc
|
preferredCodec:preferredCodec
|
||||||
useFramePacing:useFramePacing
|
useFramePacing:useFramePacing
|
||||||
enableHdr:enableHdr
|
enableHdr:enableHdr
|
||||||
btMouseSupport:btMouseSupport
|
btMouseSupport:btMouseSupport
|
||||||
|
@ -188,13 +188,25 @@
|
|||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Type</key>
|
<key>Type</key>
|
||||||
<string>PSToggleSwitchSpecifier</string>
|
<string>PSMultiValueSpecifier</string>
|
||||||
<key>Title</key>
|
<key>Title</key>
|
||||||
<string>Use HEVC Codec</string>
|
<string>Preferred Codec</string>
|
||||||
<key>Key</key>
|
<key>Key</key>
|
||||||
<string>useHevc2</string>
|
<string>preferredCodec</string>
|
||||||
<key>DefaultValue</key>
|
<key>DefaultValue</key>
|
||||||
<true/>
|
<string>0</string>
|
||||||
|
<key>Values</key>
|
||||||
|
<array>
|
||||||
|
<string>0</string>
|
||||||
|
<string>1</string>
|
||||||
|
<string>2</string>
|
||||||
|
</array>
|
||||||
|
<key>Titles</key>
|
||||||
|
<array>
|
||||||
|
<string>Auto</string>
|
||||||
|
<string>H.264</string>
|
||||||
|
<string>HEVC</string>
|
||||||
|
</array>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Type</key>
|
<key>Type</key>
|
||||||
|
@ -186,6 +186,7 @@
|
|||||||
9865DC3B2132922E0005B9B9 /* GameController.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameController.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS11.4.sdk/System/Library/Frameworks/GameController.framework; sourceTree = DEVELOPER_DIR; };
|
9865DC3B2132922E0005B9B9 /* GameController.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameController.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS11.4.sdk/System/Library/Frameworks/GameController.framework; sourceTree = DEVELOPER_DIR; };
|
||||||
986CCE6C2133E45300168291 /* Moonlight v1.2.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Moonlight v1.2.xcdatamodel"; sourceTree = "<group>"; };
|
986CCE6C2133E45300168291 /* Moonlight v1.2.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Moonlight v1.2.xcdatamodel"; sourceTree = "<group>"; };
|
||||||
986E28A528EA989100758361 /* Moonlight v1.9.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Moonlight v1.9.xcdatamodel"; sourceTree = "<group>"; };
|
986E28A528EA989100758361 /* Moonlight v1.9.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Moonlight v1.9.xcdatamodel"; sourceTree = "<group>"; };
|
||||||
|
9874E8962AE95E1D00130A3C /* Moonlight v1.10.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Moonlight v1.10.xcdatamodel"; sourceTree = "<group>"; };
|
||||||
98783FEA242EAC5D00F00EF4 /* Moonlight v1.5.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Moonlight v1.5.xcdatamodel"; sourceTree = "<group>"; };
|
98783FEA242EAC5D00F00EF4 /* Moonlight v1.5.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Moonlight v1.5.xcdatamodel"; sourceTree = "<group>"; };
|
||||||
988FCD3F293B091B003050E2 /* KeyboardInputField.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KeyboardInputField.h; sourceTree = "<group>"; };
|
988FCD3F293B091B003050E2 /* KeyboardInputField.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KeyboardInputField.h; sourceTree = "<group>"; };
|
||||||
988FCD40293B091B003050E2 /* KeyboardInputField.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KeyboardInputField.m; sourceTree = "<group>"; };
|
988FCD40293B091B003050E2 /* KeyboardInputField.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KeyboardInputField.m; sourceTree = "<group>"; };
|
||||||
@ -1448,6 +1449,7 @@
|
|||||||
FB290D0519B2C406004C83CF /* Limelight.xcdatamodeld */ = {
|
FB290D0519B2C406004C83CF /* Limelight.xcdatamodeld */ = {
|
||||||
isa = XCVersionGroup;
|
isa = XCVersionGroup;
|
||||||
children = (
|
children = (
|
||||||
|
9874E8962AE95E1D00130A3C /* Moonlight v1.10.xcdatamodel */,
|
||||||
986E28A528EA989100758361 /* Moonlight v1.9.xcdatamodel */,
|
986E28A528EA989100758361 /* Moonlight v1.9.xcdatamodel */,
|
||||||
984CD023288A310D0097D2D4 /* Moonlight v1.8.xcdatamodel */,
|
984CD023288A310D0097D2D4 /* Moonlight v1.8.xcdatamodel */,
|
||||||
566E9D2B2770B23A00EF7BFE /* Moonlight v1.7.xcdatamodel */,
|
566E9D2B2770B23A00EF7BFE /* Moonlight v1.7.xcdatamodel */,
|
||||||
@ -1463,7 +1465,7 @@
|
|||||||
FB4678F21A51BDCB00377732 /* Limelight 0.3.0.xcdatamodel */,
|
FB4678F21A51BDCB00377732 /* Limelight 0.3.0.xcdatamodel */,
|
||||||
FB290D0619B2C406004C83CF /* Limelight.xcdatamodel */,
|
FB290D0619B2C406004C83CF /* Limelight.xcdatamodel */,
|
||||||
);
|
);
|
||||||
currentVersion = 986E28A528EA989100758361 /* Moonlight v1.9.xcdatamodel */;
|
currentVersion = 9874E8962AE95E1D00130A3C /* Moonlight v1.10.xcdatamodel */;
|
||||||
path = Limelight.xcdatamodeld;
|
path = Limelight.xcdatamodeld;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
versionGroupType = wrapper.xcdatamodel;
|
versionGroupType = wrapper.xcdatamodel;
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="21701" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none" useAutolayout="YES" colorMatched="YES" initialViewController="EVd-wq-ego">
|
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="22155" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none" useAutolayout="YES" colorMatched="YES" initialViewController="EVd-wq-ego">
|
||||||
<device id="ipad11_0rounded" orientation="portrait" layout="fullscreen" appearance="dark"/>
|
<device id="ipad11_0rounded" orientation="portrait" layout="fullscreen" appearance="dark"/>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="iOS"/>
|
<deployment identifier="iOS"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21679"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22131"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<scenes>
|
<scenes>
|
||||||
@ -217,19 +217,21 @@
|
|||||||
<color key="tintColor" red="0.6716768741607666" green="0.61711704730987549" blue="0.99902987480163574" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.6716768741607666" green="0.61711704730987549" blue="0.99902987480163574" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<color key="selectedSegmentTintColor" red="0.6716768741607666" green="0.61711704730987549" blue="0.99902987480163574" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="selectedSegmentTintColor" red="0.6716768741607666" green="0.61711704730987549" blue="0.99902987480163574" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
</segmentedControl>
|
</segmentedControl>
|
||||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="HEVC Video" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6w5-Md-NpV">
|
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Preferred Codec" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6w5-Md-NpV" userLabel="Preferred Codec">
|
||||||
<rect key="frame" x="16" y="648" width="93" height="21"/>
|
<rect key="frame" x="16" y="648" width="126" height="21"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
<color key="textColor" red="0.93902439019999995" green="0.9625305918" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="0.93902439019999995" green="0.9625305918" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="aFy-0w-YPe" userLabel="HEVC Selector">
|
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="3" translatesAutoresizingMaskIntoConstraints="NO" id="aFy-0w-YPe" userLabel="Codec Selector">
|
||||||
<rect key="frame" x="16" y="677" width="459" height="28"/>
|
<rect key="frame" x="16" y="675" width="459" height="32"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
<segments>
|
<segments>
|
||||||
<segment title="No"/>
|
<segment title="H.264"/>
|
||||||
<segment title="Yes"/>
|
<segment title="HEVC"/>
|
||||||
|
<segment title="AV1"/>
|
||||||
|
<segment title="Auto"/>
|
||||||
</segments>
|
</segments>
|
||||||
<color key="tintColor" red="0.6716768741607666" green="0.61711704730987549" blue="0.99902987480163574" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.6716768741607666" green="0.61711704730987549" blue="0.99902987480163574" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<color key="selectedSegmentTintColor" red="0.6716768741607666" green="0.61711704730987549" blue="0.99902987480163574" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="selectedSegmentTintColor" red="0.6716768741607666" green="0.61711704730987549" blue="0.99902987480163574" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
@ -320,10 +322,10 @@
|
|||||||
<outlet property="bitrateLabel" destination="lMt-4H-fkV" id="ItM-l3-1Jk"/>
|
<outlet property="bitrateLabel" destination="lMt-4H-fkV" id="ItM-l3-1Jk"/>
|
||||||
<outlet property="bitrateSlider" destination="JAY-nj-UNz" id="fHd-v5-9Vo"/>
|
<outlet property="bitrateSlider" destination="JAY-nj-UNz" id="fHd-v5-9Vo"/>
|
||||||
<outlet property="btMouseSelector" destination="KMg-3j-F9p" id="W45-AB-sJf"/>
|
<outlet property="btMouseSelector" destination="KMg-3j-F9p" id="W45-AB-sJf"/>
|
||||||
|
<outlet property="codecSelector" destination="aFy-0w-YPe" id="DlU-0l-gwz"/>
|
||||||
<outlet property="framePacingSelector" destination="7va-uJ-IfD" id="Tbv-s2-u2k"/>
|
<outlet property="framePacingSelector" destination="7va-uJ-IfD" id="Tbv-s2-u2k"/>
|
||||||
<outlet property="framerateSelector" destination="lGK-vl-pdw" id="Kc8-Zv-hdm"/>
|
<outlet property="framerateSelector" destination="lGK-vl-pdw" id="Kc8-Zv-hdm"/>
|
||||||
<outlet property="hdrSelector" destination="OA2-SA-bBO" id="uUL-mc-4We"/>
|
<outlet property="hdrSelector" destination="OA2-SA-bBO" id="uUL-mc-4We"/>
|
||||||
<outlet property="hevcSelector" destination="aFy-0w-YPe" id="DlU-0l-gwz"/>
|
|
||||||
<outlet property="multiControllerSelector" destination="KlC-fG-wEi" id="giM-F7-So5"/>
|
<outlet property="multiControllerSelector" destination="KlC-fG-wEi" id="giM-F7-So5"/>
|
||||||
<outlet property="onscreenControlSelector" destination="qSU-wh-tqA" id="j8d-fB-Z2c"/>
|
<outlet property="onscreenControlSelector" destination="qSU-wh-tqA" id="j8d-fB-Z2c"/>
|
||||||
<outlet property="optimizeSettingsSelector" destination="nCO-OT-dV1" id="FB0-Rt-C44"/>
|
<outlet property="optimizeSettingsSelector" destination="nCO-OT-dV1" id="FB0-Rt-C44"/>
|
||||||
@ -434,7 +436,7 @@
|
|||||||
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
</systemColor>
|
</systemColor>
|
||||||
<systemColor name="viewFlipsideBackgroundColor">
|
<systemColor name="viewFlipsideBackgroundColor">
|
||||||
<color red="0.1215686274509804" green="0.12941176470588239" blue="0.14117647058823529" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color red="0.12156862745098039" green="0.12941176470588237" blue="0.14117647058823529" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
</systemColor>
|
</systemColor>
|
||||||
</resources>
|
</resources>
|
||||||
</document>
|
</document>
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="21701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" colorMatched="YES" initialViewController="DL0-L5-LOv">
|
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="22155" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" colorMatched="YES" initialViewController="DL0-L5-LOv">
|
||||||
<device id="retina6_1" orientation="portrait" appearance="light"/>
|
<device id="retina6_1" orientation="portrait" appearance="light"/>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="iOS"/>
|
<deployment identifier="iOS"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21679"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22131"/>
|
||||||
<capability name="System colors in document resources" minToolsVersion="11.0"/>
|
<capability name="System colors in document resources" minToolsVersion="11.0"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
@ -247,19 +247,21 @@
|
|||||||
<color key="tintColor" red="0.6716768741607666" green="0.61711704730987549" blue="0.99902987480163574" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.6716768741607666" green="0.61711704730987549" blue="0.99902987480163574" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<color key="selectedSegmentTintColor" red="0.6716768741607666" green="0.61711704730987549" blue="0.99902987480163574" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="selectedSegmentTintColor" red="0.6716768741607666" green="0.61711704730987549" blue="0.99902987480163574" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
</segmentedControl>
|
</segmentedControl>
|
||||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="HEVC Video" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="BEG-Id-J8y">
|
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Preferred Codec" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="BEG-Id-J8y" userLabel="Preferred Codec">
|
||||||
<rect key="frame" x="22" y="656" width="98" height="21"/>
|
<rect key="frame" x="22" y="656" width="134" height="21"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="17"/>
|
<fontDescription key="fontDescription" type="boldSystem" pointSize="17"/>
|
||||||
<color key="textColor" red="0.93902439019999995" green="0.9625305918" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="0.93902439019999995" green="0.9625305918" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="AbS-CW-fjP" userLabel="HEVC Selector">
|
<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="3" translatesAutoresizingMaskIntoConstraints="NO" id="AbS-CW-fjP" userLabel="Codec Selector">
|
||||||
<rect key="frame" x="16" y="683" width="450" height="28"/>
|
<rect key="frame" x="16" y="681" width="450" height="32"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
<segments>
|
<segments>
|
||||||
<segment title="No"/>
|
<segment title="H.264"/>
|
||||||
<segment title="Yes"/>
|
<segment title="HEVC"/>
|
||||||
|
<segment title="AV1"/>
|
||||||
|
<segment title="Auto"/>
|
||||||
</segments>
|
</segments>
|
||||||
<color key="tintColor" red="0.6716768741607666" green="0.61711704730987549" blue="0.99902987480163574" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.6716768741607666" green="0.61711704730987549" blue="0.99902987480163574" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<color key="selectedSegmentTintColor" red="0.6716768741607666" green="0.61711704730987549" blue="0.99902987480163574" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="selectedSegmentTintColor" red="0.6716768741607666" green="0.61711704730987549" blue="0.99902987480163574" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
@ -340,10 +342,10 @@
|
|||||||
<outlet property="bitrateLabel" destination="SBv-Wn-LB7" id="Wdu-me-Bvd"/>
|
<outlet property="bitrateLabel" destination="SBv-Wn-LB7" id="Wdu-me-Bvd"/>
|
||||||
<outlet property="bitrateSlider" destination="3nn-MI-9Xu" id="IuD-Rk-vPp"/>
|
<outlet property="bitrateSlider" destination="3nn-MI-9Xu" id="IuD-Rk-vPp"/>
|
||||||
<outlet property="btMouseSelector" destination="o4O-hO-teB" id="bLu-uv-yUX"/>
|
<outlet property="btMouseSelector" destination="o4O-hO-teB" id="bLu-uv-yUX"/>
|
||||||
|
<outlet property="codecSelector" destination="AbS-CW-fjP" id="ohH-Tc-UzM"/>
|
||||||
<outlet property="framePacingSelector" destination="d2a-Ka-H2c" id="Ocv-3E-lIm"/>
|
<outlet property="framePacingSelector" destination="d2a-Ka-H2c" id="Ocv-3E-lIm"/>
|
||||||
<outlet property="framerateSelector" destination="dLF-qJ-2nY" id="hE3-hk-iwa"/>
|
<outlet property="framerateSelector" destination="dLF-qJ-2nY" id="hE3-hk-iwa"/>
|
||||||
<outlet property="hdrSelector" destination="9xD-GL-9xq" id="5Rf-R7-5TO"/>
|
<outlet property="hdrSelector" destination="9xD-GL-9xq" id="5Rf-R7-5TO"/>
|
||||||
<outlet property="hevcSelector" destination="AbS-CW-fjP" id="ohH-Tc-UzM"/>
|
|
||||||
<outlet property="multiControllerSelector" destination="OCT-oL-Dqb" id="bLT-gB-FcH"/>
|
<outlet property="multiControllerSelector" destination="OCT-oL-Dqb" id="bLT-gB-FcH"/>
|
||||||
<outlet property="onscreenControlSelector" destination="WGf-9d-eAm" id="hob-se-4Sn"/>
|
<outlet property="onscreenControlSelector" destination="WGf-9d-eAm" id="hob-se-4Sn"/>
|
||||||
<outlet property="optimizeSettingsSelector" destination="Gob-Lu-b1y" id="9Wl-yp-0Ou"/>
|
<outlet property="optimizeSettingsSelector" destination="Gob-Lu-b1y" id="9Wl-yp-0Ou"/>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user