Cameron Gutman
5ddd53e17f
Enable media streaming mode for 802.11 WLAN interfaces on Windows
2020-08-11 22:12:58 -07:00
Cameron Gutman
f2c1d03d8e
Don't bother doing any connection testing if no ports were specified
2020-08-09 12:08:16 -07:00
Cameron Gutman
b59007cdea
Fix server-side log spam caused by sending unused command 0x0201
2020-08-09 11:46:49 -07:00
Cameron Gutman
ae00c09cb6
Restore the 500 ms ping logic to prevent warnings in the server-side logs
2020-08-08 23:16:55 -07:00
Cameron Gutman
2fdcfb9429
Accept IPv6 addresses for network testing to support NAT64
2020-08-06 21:59:17 -07:00
Cameron Gutman
453c722fa8
Add LiGetPortFlagsFromTerminationErrorCode()
2020-08-06 21:43:18 -07:00
Cameron Gutman
6010367637
Only allow input packets to be queued between start and stop
2020-08-06 19:12:29 -07:00
Cameron Gutman
f6927475cf
Enable poll() in ENet for Linux/BSD
2020-07-27 00:03:22 -07:00
Cameron Gutman
6351749039
Fix TCP connection tests on Linux and BSD
2020-07-26 20:56:39 -07:00
Cameron Gutman
117a7c637f
Switch to poll() to be safe against stack corruption from exceeding FD_SETSIZE
...
Fortunately, the fd_set definition is not prone to stack corruption on Windows,
because FD_SETSIZE is the maximum number of sockets in a fd_set, not
the maximum value socket file descriptor that can be stored in a fd_set.
https://beesbuzz.biz/code/5739-The-problem-with-select-vs-poll
2020-07-26 20:27:58 -07:00
Cameron Gutman
84f2421fbf
Add support for client-side connectivity testing
2020-07-19 14:39:42 -07:00
Cameron Gutman
5c9935e11b
Temporarily comment out validation of reserved field
...
FEC doesn't recover this field correctly with GFE 3.20.4.
2020-07-01 11:50:23 -05:00
Cameron Gutman
407d57a50a
Update ENet submodule to fix QoS-related connection issues
2020-06-12 21:59:16 -07:00
Cameron Gutman
bea625a13d
Work around rounding error in GFE's mouse position scaling
2020-05-26 18:19:53 -07:00
Cameron Gutman
0df24c76c0
Fix incorrect behavior of modifier keys on the right side of the keyboard
2020-05-26 17:33:57 -07:00
Cameron Gutman
f8ffb30e1f
Don't send no-op mouse move and scroll events
2020-05-26 17:13:22 -07:00
Cameron Gutman
7b56ab755d
Add batching for mouse position packets
2020-05-20 18:56:30 -07:00
Cameron Gutman
b44cad6598
Fix freeing uninitialized pointer on allocation failure
2020-05-20 18:38:58 -07:00
Cameron Gutman
c8faf3539b
Replace version check with note for LiSendMousePosition()
2020-05-03 15:56:39 -07:00
Cameron Gutman
495b269a10
Disable FEC on Gen 4 and earlier and assert that FLAG_EXTENSION is present
2020-05-03 15:51:49 -07:00
Cameron Gutman
f911d974c9
Enable FEC validation mode on debug builds
2020-05-02 16:56:13 -07:00
Cameron Gutman
719f690e56
Add an assert to catch incorrectly sized video packets
2020-05-02 16:49:51 -07:00
Cameron Gutman
5ba94e0282
Add FEC validation mode to diagnose FEC recovery failures
2020-05-02 14:24:24 -07:00
Cameron Gutman
f596e80575
Improve logging of video/audio delay and errors
2020-05-01 20:23:44 -07:00
Cameron Gutman
b46e06fcf1
Terminate the connection if video isn't received for 10 seconds
2020-05-01 19:25:24 -07:00
Cameron Gutman
413ea9bc8e
Minor RTSP code cleanup
2020-05-01 18:32:26 -07:00
Cameron Gutman
9ffdc79b6f
Add log messages to troubleshoot problems with missing video/audio
2020-04-29 20:17:55 -07:00
Cameron Gutman
fcabfc37ad
Dynamically allocate session ID string
2020-04-29 20:12:19 -07:00
Cameron Gutman
7d0458a16b
Dynamically allocate the RTSP response buffer
2020-04-29 19:58:50 -07:00
Cameron Gutman
247b1fe0e3
Provide reference dimensions for mouse position data
2020-04-11 20:51:17 -07:00
Cameron Gutman
bbbf4336cc
Add additional documentation for LiSendMousePositionEvent()
2020-04-11 15:59:12 -07:00
Cameron Gutman
ef7de27727
Add absolute mouse motion support
2020-04-11 15:40:50 -07:00
Cameron Gutman
f0c3b57d11
Enable QoS for ENet traffic on Windows
2020-04-09 17:42:49 -07:00
Cameron Gutman
2a02569c5c
Avoid 10 second delay on graceful termination with GFE 3.20.3.63
2020-04-09 17:28:34 -07:00
Cameron Gutman
0cda408d3c
Warn when streaming above 4K with H.264 or 8K with HEVC
2020-04-04 12:36:09 -07:00
Cameron Gutman
4f9d45fbb5
Round down odd height values to avoid NVENC initialization failure
2020-04-04 11:51:55 -07:00
Cameron Gutman
86751d9162
Move ConnectionListener initialization prior to possible Limelog() usage
2020-04-04 11:51:20 -07:00
Cameron Gutman
c2471157c0
Use EF instead of CS7 for DSCP on ENet traffic
2020-04-03 17:01:45 -07:00
Cameron Gutman
85de16b41b
Add 7.1 surround sound support
2020-04-03 00:11:41 -07:00
Cameron Gutman
d9d2668473
Fix audio problems caused by stale HighQualitySurroundSupported and HighQualitySurroundEnabled values
2020-04-02 18:44:13 -07:00
Cameron Gutman
99f22fa7e9
Undeprecate AUDIO_CONFIGURATION values and add a new macro for converting AUDIO_CONFIGURATION into launch/resume parameters
2020-04-02 18:41:32 -07:00
Cameron Gutman
607aaca93f
Replace AUDIO_CONFIGURATION constants with MAKE_AUDIO_CONFIGURATION() macro
2020-03-31 21:33:34 -07:00
Cameron Gutman
fb60ae6a4d
Parse Opus parameters from RTSP DESCRIBE response
2020-03-31 20:52:38 -07:00
Cameron Gutman
f489c9d725
Enable QoS marking on macOS and Linux
...
Using SO_NET_SERVICE_TYPE on macOS seems to make a noticeable difference
to packet latency and loss rate for some users.
2020-03-29 15:45:36 -07:00
Cameron Gutman
c3ab74b8af
Reduce ENet retransmission delay by sleeping for shorter periods between polls
2020-03-29 14:35:24 -07:00
Cameron Gutman
c1b8aa266f
Use 10 ms audio packets on low bitrate streams to balance latency and bandwidth
2020-03-18 20:03:56 -07:00
Cameron Gutman
67390dfb94
Remove deprecated listener callbacks
2020-02-24 23:57:06 -08:00
Cameron Gutman
2fc278da00
Change errorCode to int for consistency between 32-bit and 64-bit platforms
...
Unfortunately this requires updating all client code that uses these callbacks.
2020-02-24 23:01:22 -08:00
Cameron Gutman
cfeb0ffd90
Add MODIFIER_META constant
2020-01-15 17:48:36 -08:00
Cameron Gutman
3ccacdd3be
Merge pull request #48 from loki-47-6F-64/master
...
Correct payload-length when parsing RTSP Messages
2020-01-11 11:50:55 -08:00
Cameron Gutman
e60a7ef75f
Add color space and color range options
2019-12-14 14:32:47 -08:00
Cameron Gutman
b0213d06a7
Always use DSCP marking for our AV traffic
2019-12-12 18:43:57 -08:00
Cameron Gutman
3dd9a9f1b1
Use RAND_bytes() instead of rand() for STUN transaction IDs
2019-12-08 14:49:28 -08:00
Cameron Gutman
f5ae5df5d0
Fix logic error in low bitrate audio duration selection
2019-12-01 19:22:16 -08:00
Cameron Gutman
e938d84cdb
Use TCP_NOOPT to restrict MSS on BSD-based OSes
2019-12-01 15:22:18 -08:00
Cameron Gutman
ceab64c46b
Use IP_PMTUDISC_DONT to clamp MSS on Windows
2019-12-01 15:00:21 -08:00
Cameron Gutman
e5b6a2b7a9
Bump RTSP_MAX_RESP_SIZE to 48 KB
2019-12-01 13:59:09 -08:00
Cameron Gutman
c1a26618d4
Increase audio packet duration for low bandwidth connections
2019-11-30 21:59:34 -06:00
Cameron Gutman
6b42954b47
Add LiGetPendingAudioDuration() function
2019-11-30 21:31:50 -06:00
Cameron Gutman
52f489bc46
Fix RTSP handshake errors on networks with broken PMTUD
2019-11-30 21:19:56 -06:00
Cameron Gutman
f4dad9ae8b
Add presentation timestamp to video frame metadata
2019-11-10 18:07:11 -08:00
Cameron Gutman
eceb7d3a2b
Merge pull request #46 from d3m3vilurr/vita-nonblock-socket
...
vita: Enable nonblock TCP socket
2019-11-03 21:22:20 -08:00
Cameron Gutman
49fd1bed3f
Return correct error code when RTSP receive times out
2019-11-02 21:42:08 -07:00
Cameron Gutman
25528671d2
Fix error value on control stream and RTSP handshake failure
2019-11-02 21:28:05 -07:00
Cameron Gutman
dca2205ac8
Fix assert failure on control stream establishment failure
2019-11-02 21:27:35 -07:00
Cameron Gutman
197594f38c
Add platform helper function to set socket non-blocking mode
2019-11-02 19:16:46 -07:00
Cameron Gutman
9bd301897a
Remove unnecessary field in QDU struct
2019-10-21 17:03:01 -07:00
Cameron Gutman
f988a154a3
Fix Linux build
2019-10-12 19:42:49 -07:00
Cameron Gutman
ea135be05a
Only test TCP ports if the hostname resolves to multiple addresses
2019-10-12 19:09:28 -07:00
Cameron Gutman
93ce13e43f
Update enet submodule to 93b080b053
2019-10-12 15:14:30 -07:00
Cameron Gutman
0cc66748ea
Merge pull request #45 from d3m3vilurr/vita-newlib
...
vita: Apply newlib changes
2019-10-05 10:51:26 -07:00
Cameron Gutman
7de68207f0
Fix control stream connection error on multi-homed hosts
2019-09-14 14:06:34 -07:00
Cameron Gutman
438b4f87d3
Rewrite STUN code to avoid requiring TCP and use multiple servers in parallel
2019-08-13 17:51:11 -07:00
Cameron Gutman
4daf496bb4
Merge pull request #42 from d3m3vilurr/vita-getaddrinfo
...
vita: Apply getaddrinfo
2019-08-13 17:47:03 -07:00
Cameron Gutman
6750cde2ab
Test STUN server via TCP to allow fallback if it's unreachable
2019-08-07 23:13:27 -07:00
Cameron Gutman
a9780361a3
Fix high-quality surround sound breaking audio when streaming over the Internet or IPv6
2019-08-04 15:05:40 -07:00
Cameron Gutman
c322ed9437
Terminate with the given error code if the disconnect timeout expires instead of -1
2019-07-23 23:41:48 -04:00
Cameron Gutman
25dfbcfd41
Implement isPrivateNetworkAddress() for IPv6
2019-07-15 00:16:17 -07:00
Cameron Gutman
6245934462
Fix streaming from Gen 3 servers
2019-07-05 21:01:14 -07:00
Cameron Gutman
801aaf43d6
Fix video on GFE 3.19
2019-05-27 01:27:50 -07:00
Cameron Gutman
dffe51e885
Add LiGetPendingVideoFrames() and LiGetPendingAudioFrames()
2019-05-07 20:25:26 -07:00
Cameron Gutman
59481c085a
Add support for requesting 20 ms audio frames for slow Opus decoders
2019-05-04 15:33:48 -07:00
Cameron Gutman
1154cb1d3d
Name our threads on Windows
2019-05-03 20:55:20 -07:00
Cameron Gutman
31aa893acd
Name our threads on Linux
2019-05-03 18:54:40 -07:00
Cameron Gutman
e01617cd17
Remove unused variable
2019-05-02 19:41:59 -07:00
Cameron Gutman
a7d4537274
Fix receive time corruption after f395d305
2019-04-30 23:15:40 -07:00
Cameron Gutman
4a82762118
Assert that LENTRY_INTERNAL can fit in the reserved space
2019-04-27 14:09:55 -07:00
Cameron Gutman
0b8dc80823
Fetch receive time only once per frame instead of once per packet
2019-04-26 21:51:17 -07:00
Cameron Gutman
fe7cb006da
Improve FEC queue packet submission and retrieval from O(n) to O(1)
2019-04-25 23:02:01 -07:00
Cameron Gutman
f395d3056a
Eliminate a copy and allocation for each incoming video packet
2019-04-25 22:07:03 -07:00
Cameron Gutman
c87d4a755e
Add a workaround to get low bandwidth stereo working again and a cap flag to never request HQ audio
2019-04-25 01:03:27 -07:00
Cameron Gutman
d6971983aa
Use an interruptible sleep to allow our threads to exit sooner
2019-04-06 15:26:59 -07:00
Cameron Gutman
9220fcb8e8
Require 2 intervals of 15% frame loss or one of 30% frame loss to trigger the poor connection warning
2019-04-06 12:23:36 -07:00
Cameron Gutman
40fa4ef3c8
Reduce NAT keepalive packet rate after connection is established
2019-03-24 12:54:41 -07:00
Cameron Gutman
e9bc1070b7
Tune thresholds for poor connection warning
2019-03-18 20:21:02 -07:00
Cameron Gutman
c9745855fd
Track leaks of mutexes and events for debugging
2019-03-17 12:56:27 -07:00
Cameron Gutman
71a69204e9
Add a connection status callback to notify when the connection becomes lossy
2019-03-17 01:37:09 -07:00
Cameron Gutman
4a7d28038d
Deprecate connection listener message callbacks
2019-03-17 01:34:04 -07:00
Cameron Gutman
6eb17a8e73
Fix build warnings
2019-02-26 23:44:10 -08:00
Cameron Gutman
8755529b1a
Add support for high-resolution scroll events
2019-02-26 18:48:13 -08:00