695 Commits

Author SHA1 Message Date
Cameron Gutman
4aa82b0a9f Fix Clang/GCC build 2021-06-01 18:39:19 -05:00
Cameron Gutman
89918324ce Implement audio FEC recovery support 2021-06-01 18:31:56 -05:00
Cameron Gutman
122ce4a568 Enable SO_RCVTIMEO for RTP sockets on Windows 2021-05-25 20:38:30 -05:00
Cameron Gutman
d9ea208dea Avoid unlock and immediate relock of mutex 2021-05-25 19:57:06 -05:00
Cameron Gutman
1376c62e5f Remove declaration of old deleted function 2021-05-25 19:54:27 -05:00
Cameron Gutman
59484ea066 Reorder some internal structures to reduce padding 2021-05-25 19:54:03 -05:00
Cameron Gutman
46cea5011d Use GetModuleHandle() for kernel32.dll, since it's guaranteed to be loaded already 2021-05-25 19:40:14 -05:00
Cameron Gutman
4723f8ba7c Update ENet to avoid excessive retransmissions when RTT variance is 0 2021-05-16 15:37:40 -05:00
Cameron Gutman
d4e22bb4a6 Update ENet to fix inaccurate RTT values under 8 ms 2021-05-16 14:42:15 -05:00
Cameron Gutman
daee5db7bc Use SleepEx() instead of WaitForSingleObjectEx() to implement PltSleepMs()
This was legacy cruft from back when Sleep() was forbidden in Metro apps in Win8.0.
2021-05-16 11:41:38 -05:00
Cameron Gutman
c057075eac Set minRequiredFecPackets to better handle lossy links at low bitrates 2021-05-16 09:27:50 -05:00
Cameron Gutman
ed9301f3f8 Join the input thread without interrupting first
Otherwise we'll kill it before it finishes draining
2021-05-15 22:56:44 -05:00
Cameron Gutman
431e188b07 Allow the input queue to drain before terminating the thread
This ensures any final input messages (like key ups) make it to the host
2021-05-15 22:01:50 -05:00
Cameron Gutman
71c9ff0d91 Elide the wait if the queue head is already non-null 2021-05-15 21:31:45 -05:00
Cameron Gutman
edf1838708 Expose RTT information from ENet 2021-05-15 13:58:54 -05:00
Cameron Gutman
5feb3b6f90 Dynamically adjust wait time to hit the next RTO 2021-05-15 12:47:20 -05:00
Cameron Gutman
50c0648de2 Run a full enet_host_service() rather than just enet_host_flush() on send 2021-05-15 12:26:01 -05:00
Cameron Gutman
97216e1704 Wait for ENet socket readability rather than just sleeping 10 ms 2021-05-15 00:15:16 -05:00
Cameron Gutman
43eb36e17a Simplify and improve graceful disconnect logic 2021-05-14 22:36:13 -05:00
Cameron Gutman
387ff48a65 Perform a graceful disconnection if the termination was locally initiated 2021-05-14 22:06:07 -05:00
Cameron Gutman
1b3c14a792 Increase maximum input queue size 2021-05-14 21:07:14 -05:00
Cameron Gutman
132833deeb Limit RTO to 2x RTT and fix early peer timeout expiration 2021-05-14 20:44:19 -05:00
Cameron Gutman
a1a150c300 Refactor IDR/RFI requests to simplify code and fix race conditions 2021-05-14 20:41:20 -05:00
Cameron Gutman
cd62147cdf Print a warning when the input queue reaches the maximum size 2021-05-14 20:36:25 -05:00
Cameron Gutman
7743899251 Optimize LBQ to avoid unnecessary syscalls 2021-05-14 18:42:01 -05:00
Cameron Gutman
5d09d43b08 Disable RFI at 4K until the problems are understood 2021-05-06 22:17:04 -05:00
Cameron Gutman
ccaca624f3 Attempt to fix audio latency issues on some PCs 2021-05-04 10:21:41 -05:00
Cameron Gutman
65047ac0e2 Switch to VS2019 build images for CI
Requires suppressing warning C5105 caused by Windows SDK headers
2021-04-29 17:59:38 -05:00
Cameron Gutman
b0737b882d Adjust MSVC warning level 2021-04-29 17:51:20 -05:00
Mariotaku Lee
179970a0d5 Behavior changes to CMakeLists.txt
- Allows static library compilation
 - Links to MBedTLS/OpenSSL based on build option
 - Limits visibility of some defines and headers
2021-04-29 17:40:47 -05:00
Cameron Gutman
bc1b5a1b2f Fix Linux build 2021-04-29 17:40:13 -05:00
Cameron Gutman
a000f9f8b8 Validate that claimed length doesn't exceed the actual length 2021-04-29 17:26:59 -05:00
Cameron Gutman
8f371343cd Consolidate includes 2021-04-29 17:22:15 -05:00
Cameron Gutman
da68e64d9b Fix various MSVC warnings 2021-04-29 17:21:12 -05:00
Cameron Gutman
77ed77b93b Pull ENet changes from upstream 2021-04-29 09:44:32 -05:00
Cameron Gutman
252a50bb75 Disable WSAECONNRESET errors for UDP sockets on Windows 2021-04-28 20:37:20 -05:00
Cameron Gutman
7549243f40 Add the correct definition for ECONNREFUSED for Windows 2021-04-28 17:30:00 -05:00
Cameron Gutman
9c92c12fea Prevent errno.h from including incompatible error codes with Winsock codes 2021-04-28 17:29:33 -05:00
Cameron Gutman
3ae03998a2 Add retry logic for RTSP handshake connection refused error
This can happen due to a race condition between GFE completing the launch request and starting to listen on TCP 48010
2021-04-28 17:08:27 -05:00
Cameron Gutman
068f7aa9d9 Allow connection interruption during the RTSP handshake 2021-04-28 17:06:04 -05:00
Cameron Gutman
bce9f82844 Fix strict aliasing violation (and save a byteswap on each packet) 2021-04-28 17:05:41 -05:00
Cameron Gutman
fe205d838d Don't check for errors from sendto() in the ping threads 2021-04-28 17:04:44 -05:00
Cameron Gutman
83b1b17f87 Add specific logging for frames dropped completely 2021-04-27 17:39:00 -05:00
Cameron Gutman
c1befbe2a8 Improve audio resync logic to use initial receive time rather send time 2021-04-26 22:43:49 -05:00
Cameron Gutman
33c4e98152 Adjust initial audio resync drop time based on connection handshake latency 2021-04-26 21:39:36 -05:00
Cameron Gutman
7174caf5f1 Implement support for multi-FEC frames 2021-04-26 20:36:07 -05:00
Cameron Gutman
9a5dbcf31c Create a second queue for completed FEC blocks 2021-04-26 20:26:16 -05:00
Cameron Gutman
b33e9fbcde Fix list corruption on entry removal 2021-04-26 20:24:39 -05:00
Cameron Gutman
ca4019c09f Refactor FEC queue in preparation for multi-block frame support 2021-04-26 17:09:50 -05:00
Cameron Gutman
8dab1ee300 Use stdint.h types for Video.h 2021-04-26 17:08:44 -05:00