From ad7f93c3cba9955334999326271acfd8eaa0f668 Mon Sep 17 00:00:00 2001 From: loki Date: Tue, 14 Apr 2020 00:59:43 +0300 Subject: [PATCH] Switch between nvenc and software encoding --- sunshine/stream.cpp | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/sunshine/stream.cpp b/sunshine/stream.cpp index 17013b11..e3f504e0 100644 --- a/sunshine/stream.cpp +++ b/sunshine/stream.cpp @@ -604,21 +604,19 @@ void videoBroadcastThread(safe::signal_t *shutdown_event, udp::socket &sock, vid payload = {(char *) payload_new.data(), payload_new.size()}; - // // make sure moonlight recognizes the nalu code for IDR frames - // if (packet->flags & AV_PKT_FLAG_KEY) { - // // TODO: Not all encoders encode their IDR frames with the 4 byte NALU prefix - // std::string_view frame_old = "\000\000\001e"sv; - // std::string_view frame_new = "\000\000\000\001e"sv; - // if(session->config.monitor.videoFormat != 0) { - // frame_old = "\000\000\001("sv; - // frame_new = "\000\000\000\001("sv; - // } + // make sure moonlight recognizes the nalu code for IDR frames + if (packet->flags & AV_PKT_FLAG_KEY) { + // TODO: Not all encoders encode their IDR frames with the 4 byte NALU prefix + std::string_view frame_old = "\000\000\001e"sv; + std::string_view frame_new = "\000\000\000\001e"sv; + if(session->config.monitor.videoFormat != 0) { + frame_old = "\000\000\001("sv; + frame_new = "\000\000\000\001("sv; + } - // assert(std::search(std::begin(payload), std::end(payload), std::begin(frame_new), std::end(frame_new)) == - // std::end(payload)); - // payload_new = replace(payload, frame_old, frame_new); - // payload = {(char *) payload_new.data(), payload_new.size()}; - // } + payload_new = replace(payload, frame_old, frame_new); + payload = {(char *) payload_new.data(), payload_new.size()}; + } // insert packet headers auto blocksize = session->config.packetsize + MAX_RTP_HEADER_SIZE;