diff --git a/src/rtsp.cpp b/src/rtsp.cpp index 21a98745..00eb7f41 100644 --- a/src/rtsp.cpp +++ b/src/rtsp.cpp @@ -796,7 +796,7 @@ namespace rtsp_stream { return; } - auto session = stream::session::alloc(config, launch_session->gcm_key, launch_session->iv, launch_session->av_ping_payload, launch_session->control_connect_data); + auto session = stream::session::alloc(config, *launch_session); auto slot = server->accept(session); if (!slot) { diff --git a/src/stream.cpp b/src/stream.cpp index 54bed0ab..0b547271 100644 --- a/src/stream.cpp +++ b/src/stream.cpp @@ -1779,7 +1779,7 @@ namespace stream { } std::shared_ptr - alloc(config_t &config, crypto::aes_t &gcm_key, crypto::aes_t &iv, std::string_view av_ping_payload, uint32_t control_connect_data) { + alloc(config_t &config, rtsp_stream::launch_session_t &launch_session) { auto session = std::make_shared(); auto mail = std::make_shared(); @@ -1788,18 +1788,18 @@ namespace stream { session->config = config; - session->control.connect_data = control_connect_data; + session->control.connect_data = launch_session.control_connect_data; session->control.feedback_queue = mail->queue(mail::gamepad_feedback); session->control.hdr_queue = mail->event(mail::hdr); - session->control.iv = iv; + session->control.iv = launch_session.iv; session->control.cipher = crypto::cipher::gcm_t { - gcm_key, false + launch_session.gcm_key, false }; session->video.idr_events = mail->event(mail::idr); session->video.invalidate_ref_frames_events = mail->event>(mail::invalidate_ref_frames); session->video.lowseq = 0; - session->video.ping_payload = av_ping_payload; + session->video.ping_payload = launch_session.av_ping_payload; constexpr auto max_block_size = crypto::cipher::round_to_pkcs7_padded(2048); @@ -1826,11 +1826,11 @@ namespace stream { session->audio.fec_packet->fecHeader.ssrc = 0; session->audio.cipher = crypto::cipher::cbc_t { - gcm_key, true + launch_session.gcm_key, true }; - session->audio.ping_payload = av_ping_payload; - session->audio.avRiKeyId = util::endian::big(*(std::uint32_t *) iv.data()); + session->audio.ping_payload = launch_session.av_ping_payload; + session->audio.avRiKeyId = util::endian::big(*(std::uint32_t *) launch_session.iv.data()); session->audio.sequenceNumber = 0; session->audio.timestamp = 0; diff --git a/src/stream.h b/src/stream.h index ca87168e..ee04c537 100644 --- a/src/stream.h +++ b/src/stream.h @@ -40,7 +40,7 @@ namespace stream { }; std::shared_ptr - alloc(config_t &config, crypto::aes_t &gcm_key, crypto::aes_t &iv, std::string_view av_ping_payload, uint32_t control_connect_data); + alloc(config_t &config, rtsp_stream::launch_session_t &launch_session); int start(session_t &session, const std::string &addr_string); void