709 Commits

Author SHA1 Message Date
Cameron Gutman
a8aed6b344 Avoid spurious audio data loss warning on connection start 2021-06-03 21:02:27 -05:00
Cameron Gutman
ef33aaa3c8 Fix queued packet leak when audio packet queue overflows 2021-06-02 22:05:45 -05:00
Cameron Gutman
e9fd544ff4 Fix FEC queue state assert firing on shutdown 2021-06-02 20:11:20 -05:00
Cameron Gutman
e3d4f4e91f Validate the Opus data in debug builds 2021-06-02 20:10:46 -05:00
Cameron Gutman
ab51acb712 Only data shards should be eligible for immediate consumption 2021-06-02 19:50:22 -05:00
Cameron Gutman
d0adb044cf Fix bugs discovered by FEC state validation logic 2021-06-02 19:36:57 -05:00
Cameron Gutman
565b170e00 Add FEC state validation in debug builds 2021-06-02 19:36:31 -05:00
Cameron Gutman
9361c325bb Rename RtpFecQueue to RtpVideoQueue to match RtpAudioQueue 2021-06-01 22:57:26 -05:00
Cameron Gutman
08e4a47fc2 Add FEC validation mode for audio FEC 2021-06-01 22:43:43 -05:00
Cameron Gutman
dd3675db63 Fix mishandling of a completely missing FEC block 2021-06-01 21:31:48 -05:00
Cameron Gutman
da7db59414 Fix freeing FEC block after wrapping seqnum with in-order FEC block 2021-06-01 21:16:18 -05:00
Cameron Gutman
fde6b05618 Fix incorrect assert on sequence number wrap 2021-06-01 21:14:25 -05:00
Cameron Gutman
683208ddc8 Return all available audio data after FEC block timer expires 2021-06-01 20:01:26 -05:00
Cameron Gutman
3dff15b8c4 Fix memory leak when switching between immediate and queued audio packets 2021-06-01 19:33:56 -05:00
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