Pass RTSP session URL to moonlight-common-c for dynamic ports

This commit is contained in:
Cameron Gutman 2021-07-02 01:51:08 -05:00
parent cbd42f4a58
commit bee8378795
4 changed files with 24 additions and 7 deletions

View file

@ -151,7 +151,8 @@ NvHTTP::launchApp(int appId,
PSTREAM_CONFIGURATION streamConfig,
bool sops,
bool localAudio,
int gamepadMask)
int gamepadMask,
QString& rtspSessionUrl)
{
int riKeyId;
@ -185,10 +186,12 @@ NvHTTP::launchApp(int appId,
// Throws if the request failed
verifyResponseStatus(response);
rtspSessionUrl = getXmlString(response, "sessionUrl0");
}
void
NvHTTP::resumeApp(PSTREAM_CONFIGURATION streamConfig)
NvHTTP::resumeApp(PSTREAM_CONFIGURATION streamConfig, QString& rtspSessionUrl)
{
int riKeyId;
@ -207,6 +210,8 @@ NvHTTP::resumeApp(PSTREAM_CONFIGURATION streamConfig)
// Throws if the request failed
verifyResponseStatus(response);
rtspSessionUrl = getXmlString(response, "sessionUrl0");
}
void

View file

@ -150,14 +150,16 @@ public:
quitApp();
void
resumeApp(PSTREAM_CONFIGURATION streamConfig);
resumeApp(PSTREAM_CONFIGURATION streamConfig,
QString& rtspSessionUrl);
void
launchApp(int appId,
PSTREAM_CONFIGURATION streamConfig,
bool sops,
bool localAudio,
int gamepadMask);
int gamepadMask,
QString& rtspSessionUrl);
QVector<NvApp>
getAppList();

View file

@ -1026,16 +1026,19 @@ bool Session::startConnectionAsync()
}
}
QString rtspSessionUrl;
try {
NvHTTP http(m_Computer->activeAddress, m_Computer->serverCert);
if (m_Computer->currentGameId != 0) {
http.resumeApp(&m_StreamConfig);
http.resumeApp(&m_StreamConfig, rtspSessionUrl);
}
else {
http.launchApp(m_App.id, &m_StreamConfig,
enableGameOptimizations,
m_Preferences->playAudioOnHost,
m_InputHandler->getAttachedGamepadMask());
m_InputHandler->getAttachedGamepadMask(),
rtspSessionUrl);
}
} catch (const GfeHttpResponseException& e) {
emit displayLaunchError(tr("GeForce Experience returned error: %1").arg(e.toQString()));
@ -1061,6 +1064,13 @@ bool Session::startConnectionAsync()
hostInfo.serverInfoGfeVersion = siGfeVersion.data();
}
// Older GFE and Sunshine versions didn't have this field
QByteArray rtspSessionUrlStr;
if (!rtspSessionUrl.isEmpty()) {
rtspSessionUrlStr = rtspSessionUrl.toLatin1();
hostInfo.rtspSessionUrl = rtspSessionUrlStr.data();
}
if (m_Preferences->packetSize != 0) {
// Override default packet size and remote streaming detection
// NB: Using STREAM_CFG_AUTO will cap our packet size at 1024 for remote hosts.

@ -1 +1 @@
Subproject commit 7c346c31040c6ed736d9d4b3a7cbc4b0aca1849c
Subproject commit 3b9d8a31763be77c921bd2581b5e75f4d40a1b11