Expose Connection environment variables to the app start (#1430)

Co-authored-by: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com>
This commit is contained in:
Elia Zammuto
2023-07-29 18:21:58 +00:00
committed by GitHub
parent 4b986b26c2
commit 3b2a098640
6 changed files with 117 additions and 40 deletions

View File

@@ -1,6 +1,6 @@
/**
* @file src/process.cpp
* @brief todo
* @brief Handles the startup and shutdown of the apps started by a streaming Session.
*/
#define BOOST_BIND_GLOBAL_PLACEHOLDERS
@@ -101,7 +101,7 @@ namespace proc {
}
int
proc_t::execute(int app_id) {
proc_t::execute(int app_id, rtsp_stream::launch_session_t launch_session) {
// Ensure starting from a clean slate
terminate();
@@ -120,6 +120,29 @@ namespace proc {
_app_prep_begin = std::begin(_app.prep_cmds);
_app_prep_it = _app_prep_begin;
// Add Stream-specific environment variables
_env["SUNSHINE_APP_ID"] = std::to_string(_app_id);
_env["SUNSHINE_APP_NAME"] = _app.name;
_env["SUNSHINE_CLIENT_WIDTH"] = std::to_string(launch_session.width);
_env["SUNSHINE_CLIENT_HEIGHT"] = std::to_string(launch_session.height);
_env["SUNSHINE_CLIENT_FPS"] = std::to_string(launch_session.fps);
_env["SUNSHINE_CLIENT_HDR"] = launch_session.enable_hdr ? "true" : "false";
_env["SUNSHINE_CLIENT_GCMAP"] = std::to_string(launch_session.gcmap);
_env["SUNSHINE_CLIENT_HOST_AUDIO"] = launch_session.host_audio ? "true" : "false";
_env["SUNSHINE_CLIENT_ENABLE_SOPS"] = launch_session.enable_sops ? "true" : "false";
int channelCount = launch_session.surround_info & (65535);
switch (channelCount) {
case 2:
_env["SUNSHINE_CLIENT_AUDIO_CONFIGURATION"] = "2.0";
break;
case 6:
_env["SUNSHINE_CLIENT_AUDIO_CONFIGURATION"] = "5.1";
break;
case 8:
_env["SUNSHINE_CLIENT_AUDIO_CONFIGURATION"] = "7.1";
break;
}
if (!_app.output.empty() && _app.output != "null"sv) {
#ifdef _WIN32
// fopen() interprets the filename as an ANSI string on Windows, so we must convert it