diff --git a/limelight-common/Limelight.h b/limelight-common/Limelight.h index c96ba85..2df56ce 100644 --- a/limelight-common/Limelight.h +++ b/limelight-common/Limelight.h @@ -25,6 +25,9 @@ typedef struct _STREAM_CONFIGURATION { // Max video packet size in bytes (use 1024 if unsure) int packetSize; + // Enable remote optimizations + int remote; + // AES encryption data for the remote input stream. This must be // the same as what was passed as rikey and rikeyid // in /launch and /resume requests. diff --git a/limelight-common/SdpGenerator.c b/limelight-common/SdpGenerator.c index 8a16bbb..b77985c 100644 --- a/limelight-common/SdpGenerator.c +++ b/limelight-common/SdpGenerator.c @@ -166,7 +166,10 @@ static PSDP_OPTION getAttributesList(char *urlSafeAddr) { err |= addAttributeString(&optionHead, "x-nv-video[0].rateControlMode", "4"); - // FIXME: Remote optimizations + if (StreamConfig.remote) { + err |= addAttributeString(&optionHead, "x-nv-video[0].averageBitrate", "4"); + err |= addAttributeString(&optionHead, "x-nv-video[0].peakBitrate", "4"); + } err |= addAttributeString(&optionHead, "x-nv-video[0].timeoutLengthMs", "7000"); err |= addAttributeString(&optionHead, "x-nv-video[0].framesWithInvalidRefThreshold", "0"); @@ -211,9 +214,13 @@ static PSDP_OPTION getAttributesList(char *urlSafeAddr) { err |= addAttributeString(&optionHead, "x-nv-vqos[0].videoQualityScoreUpdateTime", "5000"); - // FIXME: Remote optimizations - err |= addAttributeString(&optionHead, "x-nv-vqos[0].qosTrafficType", "5"); - err |= addAttributeString(&optionHead, "x-nv-aqos.qosTrafficType", "4"); + if (StreamConfig.remote) { + err |= addAttributeString(&optionHead, "x-nv-vqos[0].qosTrafficType", "0"); + err |= addAttributeString(&optionHead, "x-nv-aqos.qosTrafficType", "0"); + } else { + err |= addAttributeString(&optionHead, "x-nv-vqos[0].qosTrafficType", "5"); + err |= addAttributeString(&optionHead, "x-nv-aqos.qosTrafficType", "4"); + } if (ServerMajorVersion == 3) { err |= addGen3Options(&optionHead, urlSafeAddr);