realtime bitrate adjustment with Sunshine-Foundation (experimental)
This commit is contained in:
@@ -29,6 +29,7 @@
|
||||
- (NSURLRequest*) newLaunchOrResumeRequest:(NSString*)verb config:(StreamConfiguration*)config;
|
||||
- (NSURLRequest*) newQuitAppRequest;
|
||||
- (NSURLRequest*) newAppAssetRequestWithAppId:(NSString*)appId;
|
||||
- (NSURLRequest*) newBirateRequest:(NSInteger)bitrateKbps forClient:(NSString* )clientName;
|
||||
- (void) executeRequestSynchronously:(HttpRequest*)request;
|
||||
|
||||
@end
|
||||
|
||||
@@ -231,6 +231,7 @@
|
||||
}
|
||||
|
||||
NSString* urlString = [NSString stringWithFormat:@"%@/applist?uniqueid=%@", _baseHTTPSURL, _uniqueId];
|
||||
NSLog(@"urlString: %@", urlString);
|
||||
return [self createRequestFromString:urlString timeout:NORMAL_TIMEOUT_SEC];
|
||||
}
|
||||
|
||||
@@ -292,9 +293,22 @@
|
||||
}
|
||||
|
||||
NSString* urlString = [NSString stringWithFormat:@"%@/cancel?uniqueid=%@", _baseHTTPSURL, _uniqueId];
|
||||
NSLog(@"urlString print: %@", urlString);
|
||||
return [self createRequestFromString:urlString timeout:LONG_TIMEOUT_SEC];
|
||||
}
|
||||
|
||||
- (NSURLRequest*)newBirateRequest:(NSInteger)bitrateKbps forClient:(NSString* )clientName {
|
||||
if (![self ensureHttpsUrlPopulated:NO]) {
|
||||
return nil;
|
||||
}
|
||||
|
||||
NSString* urlString = [NSString stringWithFormat:@"%@/bitrate?clientname=%@&bitrate=%@&uniqueid=%@", _baseHTTPSURL, clientName, [NSString stringWithFormat:@"%ld", (long)bitrateKbps], _uniqueId];
|
||||
|
||||
NSLog(@"bitrate urlString print: %@", urlString);
|
||||
return [self createRequestFromString:urlString timeout:LONG_TIMEOUT_SEC];
|
||||
}
|
||||
|
||||
|
||||
- (NSURLRequest*) newAppAssetRequestWithAppId:(NSString *)appId {
|
||||
if (![self ensureHttpsUrlPopulated:NO]) {
|
||||
return nil;
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
- (void)reloadStreamConfig;
|
||||
- (bool)isIPhonePortrait;
|
||||
- (void)quitRunningApp;
|
||||
- (NSInteger)requestForBitrate:(NSInteger)bitrateKbps;
|
||||
#endif
|
||||
- (void)fillResolutionTable:(CGSize*)resolutionTable externalDisplayMode:(NSInteger)externalDisplayMode;
|
||||
|
||||
|
||||
@@ -915,6 +915,15 @@ static NSMutableSet* hostList;
|
||||
#endif
|
||||
}
|
||||
|
||||
- (NSInteger)requestForBitrate:(NSInteger)bitrateKbps{
|
||||
HttpManager* hMan = [[HttpManager alloc] initWithHost:launchedApp.host];
|
||||
HttpResponse* bitrateResponse = [[HttpResponse alloc] init];
|
||||
HttpRequest* bitrateRequest = [HttpRequest requestForResponse: bitrateResponse withUrlRequest:[hMan newBirateRequest:bitrateKbps forClient:@"unknown"]];
|
||||
[hMan executeRequestSynchronously:bitrateRequest];
|
||||
NSLog(@"bitrate request status code: %ld", (long)bitrateResponse.statusCode);
|
||||
return bitrateResponse.statusCode;
|
||||
}
|
||||
|
||||
- (HttpResponse* )requestToQuitApp:(TemporaryApp* )app{
|
||||
HttpManager* hMan = [[HttpManager alloc] initWithHost:app.host];
|
||||
HttpResponse* quitResponse = [[HttpResponse alloc] init];
|
||||
@@ -1168,7 +1177,7 @@ static NSMutableSet* hostList;
|
||||
[streamFrameViewController setUserInteractionEnabledForStreamView:!_settingsExpandedInStreamView || position == FrontViewPositionLeft];
|
||||
[settingsViewController setHidden:_settingsExpandedInStreamView forStack:settingsViewController.resolutionStack];
|
||||
[settingsViewController setHidden:_settingsExpandedInStreamView forStack:settingsViewController.fpsStack];
|
||||
[settingsViewController widget:settingsViewController.bitrateSlider setEnabled:!self.settingsExpandedInStreamView];
|
||||
// [settingsViewController widget:settingsViewController.bitrateSlider setEnabled:!self.settingsExpandedInStreamView];
|
||||
[settingsViewController setHidden:_settingsExpandedInStreamView forStack:settingsViewController.optimizeGamesStack];
|
||||
[settingsViewController setHidden:_settingsExpandedInStreamView forStack:settingsViewController.audioOnPcStack];
|
||||
[settingsViewController.codecSelector setEnabled:!_settingsExpandedInStreamView];
|
||||
|
||||
@@ -292,6 +292,15 @@ BOOL isCustomResolution(int resolutionSelected) {
|
||||
selector:@selector(deviceOrientationDidChange:) // handle orientation change since i made portrait mode available
|
||||
name:UIDeviceOrientationDidChangeNotification
|
||||
object:nil];
|
||||
|
||||
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
|
||||
if(self.mainFrameViewController.settingsExpandedInStreamView){
|
||||
NSInteger responseCode = [self.mainFrameViewController requestForBitrate:self->_bitrate];
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[self widget:self.bitrateSlider setEnabled:responseCode == 200];
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
- (void)viewDidAppear:(BOOL)animated{
|
||||
@@ -1785,6 +1794,7 @@ BOOL isCustomResolution(int resolutionSelected) {
|
||||
[touchAndControlSection updateViewForFoldState];
|
||||
}
|
||||
|
||||
|
||||
- (void) updateBitrate {
|
||||
NSInteger fps = [self getChosenFrameRate];
|
||||
NSInteger width = [self getChosenStreamWidth];
|
||||
@@ -2111,6 +2121,11 @@ BOOL isCustomResolution(int resolutionSelected) {
|
||||
}
|
||||
|
||||
- (void) saveSettings {
|
||||
|
||||
if(self.mainFrameViewController.settingsExpandedInStreamView){
|
||||
[self.mainFrameViewController requestForBitrate:(uint32_t)_bitrate];
|
||||
}
|
||||
|
||||
DataManager* dataMan = [[DataManager alloc] init];
|
||||
Settings* currentSettings = [dataMan retrieveSettings];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user