obs-outputs: Set a fixed size socket buffer on Windows 7

Auto tuning apparently doesn't work very well on this version and
af6844f5c2 caused throughput
regressions.
master
Richard Stanway 2022-02-21 00:32:06 +01:00 committed by Jim
parent a7a0f69808
commit a39d174100
1 changed files with 21 additions and 0 deletions

View File

@ -16,6 +16,9 @@
******************************************************************************/
#include "rtmp-stream.h"
#ifdef _WIN32
#include <util/windows/win-version.h>
#endif
#ifndef SEC_TO_NSEC
#define SEC_TO_NSEC 1000000000ULL
@ -605,6 +608,24 @@ static void *send_thread(void *data)
os_set_thread_name("rtmp-stream: send_thread");
#if defined(_WIN32)
// Despite MSDN claiming otherwise, send buffer auto tuning on
// Windows 7 doesn't seem to work very well.
if (get_win_ver_int() == 0x601) {
DWORD cur_sendbuf_size;
DWORD desired_sendbuf_size = 524288;
socklen_t int_size = sizeof(int);
if (!getsockopt(stream->rtmp.m_sb.sb_socket, SOL_SOCKET,
SO_SNDBUF, (char *)&cur_sendbuf_size,
&int_size) &&
cur_sendbuf_size < desired_sendbuf_size) {
setsockopt(stream->rtmp.m_sb.sb_socket, SOL_SOCKET,
SO_SNDBUF, (char *)&desired_sendbuf_size,
sizeof(desired_sendbuf_size));
}
}
log_sndbuf_size(stream);
#endif