diff --git a/Limelight/Database/DataManager.h b/Limelight/Database/DataManager.h index 8c7c7ed..1ff4057 100644 --- a/Limelight/Database/DataManager.h +++ b/Limelight/Database/DataManager.h @@ -13,8 +13,17 @@ @interface DataManager : NSObject -- (void) saveSettingsWithBitrate:(NSInteger)bitrate framerate:(NSInteger)framerate height:(NSInteger)height width:(NSInteger)width onscreenControls:(NSInteger)onscreenControls remote: - (BOOL)streamingRemotely; +- (void) saveSettingsWithBitrate:(NSInteger)bitrate + framerate:(NSInteger)framerate + height:(NSInteger)height + width:(NSInteger)width + onscreenControls:(NSInteger)onscreenControls + remote:(BOOL)streamingRemotely + optimizeGames:(BOOL)optimizeGames + multiController:(BOOL)multiController + audioOnPC:(BOOL)audioOnPC + useHevc:(BOOL)useHevc + enableHdr:(BOOL)enableHdr; - (NSArray*) getHosts; - (void) updateHost:(TemporaryHost*)host; diff --git a/Limelight/Database/DataManager.m b/Limelight/Database/DataManager.m index 3adfc7f..614fcaa 100644 --- a/Limelight/Database/DataManager.m +++ b/Limelight/Database/DataManager.m @@ -53,18 +53,31 @@ return uid; } -- (void) saveSettingsWithBitrate:(NSInteger)bitrate framerate:(NSInteger)framerate height:(NSInteger)height width:(NSInteger)width onscreenControls:(NSInteger)onscreenControls remote: - (BOOL) streamingRemotely { +- (void) saveSettingsWithBitrate:(NSInteger)bitrate + framerate:(NSInteger)framerate + height:(NSInteger)height + width:(NSInteger)width + onscreenControls:(NSInteger)onscreenControls + remote:(BOOL)streamingRemotely + optimizeGames:(BOOL)optimizeGames + multiController:(BOOL)multiController + audioOnPC:(BOOL)audioOnPC + useHevc:(BOOL)useHevc + enableHdr:(BOOL)enableHdr { [_managedObjectContext performBlockAndWait:^{ Settings* settingsToSave = [self retrieveSettings]; settingsToSave.framerate = [NSNumber numberWithInteger:framerate]; - // Bitrate is persisted in kbps settingsToSave.bitrate = [NSNumber numberWithInteger:bitrate]; settingsToSave.height = [NSNumber numberWithInteger:height]; settingsToSave.width = [NSNumber numberWithInteger:width]; settingsToSave.onscreenControls = [NSNumber numberWithInteger:onscreenControls]; settingsToSave.streamingRemotely = streamingRemotely; + settingsToSave.optimizeGames = optimizeGames; + settingsToSave.multiController = multiController; + settingsToSave.playAudioOnPC = audioOnPC; + settingsToSave.useHevc = useHevc; + settingsToSave.enableHdr = enableHdr; [self saveData]; }]; diff --git a/Limelight/ViewControllers/MainFrameViewController.m b/Limelight/ViewControllers/MainFrameViewController.m index ef908a2..d9765fd 100644 --- a/Limelight/ViewControllers/MainFrameViewController.m +++ b/Limelight/ViewControllers/MainFrameViewController.m @@ -434,6 +434,7 @@ static NSMutableSet* hostList; _streamConfig.streamingRemotely = streamSettings.streamingRemotely; _streamConfig.optimizeGameSettings = streamSettings.optimizeGames; _streamConfig.playAudioOnPC = streamSettings.playAudioOnPC; + _streamConfig.allowHevc = streamSettings.useHevc; // multiController must be set before calling getConnectedGamepadMask _streamConfig.multiController = streamSettings.multiController; diff --git a/Limelight/ViewControllers/SettingsViewController.h b/Limelight/ViewControllers/SettingsViewController.h index eee65ce..2cbd8fa 100644 --- a/Limelight/ViewControllers/SettingsViewController.h +++ b/Limelight/ViewControllers/SettingsViewController.h @@ -15,7 +15,10 @@ @property (strong, nonatomic) IBOutlet UISegmentedControl *framerateSelector; @property (strong, nonatomic) IBOutlet UISegmentedControl *resolutionSelector; @property (strong, nonatomic) IBOutlet UISegmentedControl *onscreenControlSelector; -@property (strong, nonatomic) IBOutlet UISegmentedControl *remoteSelector; +@property (strong, nonatomic) IBOutlet UISegmentedControl *optimizeSettingsSelector; +@property (strong, nonatomic) IBOutlet UISegmentedControl *multiControllerSelector; +@property (strong, nonatomic) IBOutlet UISegmentedControl *audioOnPCSelector; +@property (strong, nonatomic) IBOutlet UISegmentedControl *hevcSelector; @property (strong, nonatomic) IBOutlet UIScrollView *scrollView; - (void) saveSettings; diff --git a/Limelight/ViewControllers/SettingsViewController.m b/Limelight/ViewControllers/SettingsViewController.m index 63e90cb..90facbc 100644 --- a/Limelight/ViewControllers/SettingsViewController.m +++ b/Limelight/ViewControllers/SettingsViewController.m @@ -83,8 +83,11 @@ static NSString* bitrateFormat = @"Bitrate: %.1f Mbps"; resolution = 1; } + [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.remoteSelector setSelectedSegmentIndex:currentSettings.streamingRemotely ? 1 : 0]; [self.resolutionSelector setSelectedSegmentIndex:resolution]; [self.resolutionSelector addTarget:self action:@selector(newResolutionFpsChosen) forControlEvents:UIControlEventValueChanged]; [self.framerateSelector setSelectedSegmentIndex:framerate]; @@ -93,11 +96,6 @@ static NSString* bitrateFormat = @"Bitrate: %.1f Mbps"; [self.bitrateSlider setValue:(_bitrate / BITRATE_INTERVAL) animated:YES]; [self.bitrateSlider addTarget:self action:@selector(bitrateSliderMoved) forControlEvents:UIControlEventValueChanged]; [self updateBitrateText]; - [self.remoteSelector addTarget:self action:@selector(remoteStreamingChanged) forControlEvents:UIControlEventValueChanged]; -} - -- (void) remoteStreamingChanged { - // This function can be used to reconfigure the settings view to offer more remote streaming options (i.e. reduce the audio frequency to 24kHz, enable/disable the HEVC bitrate multiplier, ...) } - (void) newResolutionFpsChosen { @@ -143,10 +141,6 @@ static NSString* bitrateFormat = @"Bitrate: %.1f Mbps"; [self.bitrateLabel setText:[NSString stringWithFormat:bitrateFormat, _bitrate / 1000.]]; } -- (NSInteger) getRemoteOptions { - return [self.remoteSelector selectedSegmentIndex]; -} - - (NSInteger) getChosenFrameRate { return [self.framerateSelector selectedSegmentIndex] == 0 ? 30 : 60; } @@ -167,9 +161,21 @@ static NSString* bitrateFormat = @"Bitrate: %.1f Mbps"; NSInteger height = [self getChosenStreamHeight]; NSInteger width = [self getChosenStreamWidth]; NSInteger onscreenControls = [self.onscreenControlSelector selectedSegmentIndex]; - BOOL streamingRemotely = [self.remoteSelector selectedSegmentIndex] == 1 ? YES : NO; - [dataMan saveSettingsWithBitrate:_bitrate framerate:framerate height:height width:width onscreenControls:onscreenControls - remote: streamingRemotely]; + BOOL optimizeGames = [self.optimizeSettingsSelector selectedSegmentIndex] == 1; + BOOL multiController = [self.multiControllerSelector selectedSegmentIndex] == 1; + BOOL audioOnPC = [self.audioOnPCSelector selectedSegmentIndex] == 1; + BOOL useHevc = [self.hevcSelector selectedSegmentIndex] == 1; + [dataMan saveSettingsWithBitrate:_bitrate + framerate:framerate + height:height + width:width + onscreenControls:onscreenControls + remote:NO + optimizeGames:optimizeGames + multiController:multiController + audioOnPC:audioOnPC + useHevc:useHevc + enableHdr:NO]; } - (void)didReceiveMemoryWarning { diff --git a/iPad.storyboard b/iPad.storyboard index 4069c8e..42985ea 100644 --- a/iPad.storyboard +++ b/iPad.storyboard @@ -1,5 +1,5 @@ - + @@ -78,37 +78,16 @@ -