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
Cameron Gutman
ae92f15b0a
Use SRW locks for our mutex on Windows
...
These avoid a kernel transition for uncontended cases
2021-04-25 15:04:12 -05:00
Cameron Gutman
13041e0323
Further optimization to avoid needless calls to EVP_aes_128_gcm() and EVP_aes_128_cbc()
2021-04-22 17:49:51 -05:00
Cameron Gutman
8354c403f4
Optimize OpenSSL backend to avoid redundant reinitialization
...
It is best to pass as few parameters to EVP_*Init_ex() as possible.
Passing a key, IV, or cipher will cause redundant work to happen behind
the scenes as OpenSSL doesn't check whether they have actually changed.
This avoids a malloc()/free() and redoing AES key expansion for every
message that is encrypted and decrypted.
2021-04-22 17:34:48 -05:00
Cameron Gutman
29d2cc6d5b
Improve MbedTLS implementation of AES-CBC
2021-04-22 17:08:35 -05:00