[vlc-commits] udp: adjust receive buffer for windows 7 and earlier
Ilkka Ollakka
git at videolan.org
Fri Mar 20 15:41:08 CET 2015
vlc | branch: master | Ilkka Ollakka <ileoo at videolan.org> | Thu Mar 19 08:52:30 2015 +0200| [ca1e15692ce9acc2d421c302434efd10eec64d27] | committer: Ilkka Ollakka
udp: adjust receive buffer for windows 7 and earlier
Try to detect runtime what windows version it is running to see if
receive buffers should be increased or leave to OS handling.
Fixes #14200
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=ca1e15692ce9acc2d421c302434efd10eec64d27
---
src/network/udp.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/src/network/udp.c b/src/network/udp.c
index b2c8a50..d33b13a 100644
--- a/src/network/udp.c
+++ b/src/network/udp.c
@@ -97,6 +97,23 @@ static int net_SetupDgramSocket (vlc_object_t *p_obj, int fd,
#endif
#if defined (_WIN32)
+
+ /* Check windows version so we know if we need to increase receive buffers
+ * for Windows 7 and earlier
+
+ * SetSocketMediaStreamingMode is present in win 8 and later, so we set
+ * receive buffer if that isn't present
+ */
+ HINSTANCE h_Network = LoadLibraryW(L"Windows.Networking.dll");
+ if( (h_Network == NULL) ||
+ (GetProcAddress( h_Network, "SetSocketMediaStreamingMode" ) == NULL ) )
+ {
+ setsockopt (fd, SOL_SOCKET, SO_RCVBUF,
+ (void *)&(int){ 0x80000 }, sizeof (int));
+ }
+ if( h_Network )
+ FreeLibrary( h_Network );
+
if (net_SockAddrIsMulticast (ptr->ai_addr, ptr->ai_addrlen)
&& (sizeof (struct sockaddr_storage) >= ptr->ai_addrlen))
{
More information about the vlc-commits
mailing list