Refactor RTSP handling to be session-based rather than socket-based

This is required to support per-session attributes like encryption keys during RTSP message processing.
This commit is contained in:
Cameron Gutman
2024-02-02 20:05:56 -06:00
parent e62d6915db
commit ca29eac53a
6 changed files with 130 additions and 104 deletions

View File

@@ -136,7 +136,7 @@ namespace proc {
}
int
proc_t::execute(int app_id, rtsp_stream::launch_session_t launch_session) {
proc_t::execute(int app_id, std::shared_ptr<rtsp_stream::launch_session_t> launch_session) {
// Ensure starting from a clean slate
terminate();
@@ -157,14 +157,14 @@ namespace proc {
// 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);
_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";