Commit Graph

931 Commits

Author SHA1 Message Date
Cameron Gutman 162c581754 Initialize strtokCtx to NULL for first call to strtok_r()
Apparently some strtok_r() implementations require this.
2023-09-27 01:27:12 -05:00
Cameron Gutman 1be56269a3 Fix handling of duplicate packets when OOS data was also received
It's possible for a sequence of packets seqnums like 2, 0, 1, 2 to end up hitting the fast path
again after filling in gap of OOS packets. The fast path assumes duplicate packets are caught
by the next contiguous sequence number check, but this is only true if that value is kept updated.

Since the slow path doesn't update the next contiguous sequence number, it's no longer safe to
use the fast path for the remaining packets in the frame because duplicate packets would be
mishandled.

Queuing duplicate packets violates all sorts of queue assumptions and can cause us to return
corrupt data to the decoder or attempt an FEC recovery without enough shards.
2023-09-23 12:08:16 -04:00
Cameron Gutman 7a6d12fc4e Update ENet submodule to add ENET_NO_INSTALL option 2023-09-20 20:52:28 -05:00
Cameron Gutman c1744de069 Batch async control stream callbacks 2023-09-18 23:02:44 -05:00
Cameron Gutman a258b7e12b Fix leak in unreachable codepath 2023-09-18 22:59:03 -05:00
Cameron Gutman c3e9aea843 Fix non-standard forward declaration 2023-09-18 21:19:59 -05:00
Cameron Gutman 20130e210b Invoke control stream callbacks on a separate thread
Time spent processing client callbacks would contribute to increased control stream latency,
which means higher RTTs, more lengthy waits before retransmissions, and higher client-reported
network latency stats.
2023-09-17 14:49:06 -05:00
Cameron Gutman b2528faa02 Disable GCC static analysis in CI until newer GCC is available in AppVeyor 2023-09-15 23:19:10 -05:00
Cameron Gutman 7f665babf9 Enable GCC static analysis in CI 2023-09-15 22:41:37 -05:00
Cameron Gutman 515bea6fb4 Fix GCC static analysis warnings 2023-09-15 22:03:27 -05:00
Cameron Gutman c13f4a323f Use connected datagram sockets for audio and video
This ensures unwanted data from other sources is dropped and that our own source address doesn't change while streaming.
2023-09-12 23:29:05 -05:00
Cameron Gutman ec6713fd80 Improve checks for runt video packets
Since we always allocate fixed size these aren't likely to be exploitable,
but we ought to fix them anyway. Worst case, we will just read some garbage
and generate corrupt video output.
2023-09-12 22:44:45 -05:00
Cameron Gutman 171858c2e7 Add CodeQL scanning 2023-09-12 21:46:46 -05:00
Cameron Gutman 315d0bbfa3 Use modern string parsing functions in SdpGenerator 2023-09-12 21:24:28 -05:00
Cameron Gutman 5a19e52921 Use modern string parsing functions in RtspParser 2023-09-12 21:20:44 -05:00
Cameron Gutman 91b4186b8a Use strtok_r()/strtok_s() instead of regular strtok() 2023-09-12 20:56:15 -05:00
Cameron Gutman 2bb026c763 Suppress connection warnings for the first sampling period 2023-08-23 21:03:40 -05:00
Cameron Gutman dc62a6f88e Send periodic pings and FEC status messages more frequently 2023-08-19 11:39:55 -05:00
Cameron Gutman e05ee6dfc8 Change FEC status message to avoid truncating large frames 2023-08-19 11:37:44 -05:00
Cameron Gutman 78e06eb613 Batch control stream messages 2023-08-19 11:27:16 -05:00
Cameron Gutman 8b0dbf7158 Send client feature flags indicating FEC status support 2023-08-19 11:03:00 -05:00
Cameron Gutman e0d83f61c2 Fix missing debug message when an I-frame is sent as an RFI recovery frame for AV1 2023-08-14 21:32:38 -05:00
Cameron Gutman 8bca948b61 Fix unused function warning on release builds 2023-08-12 15:08:22 -05:00
Cameron Gutman a0b29fe3dc Avoid asserting on filler NALUs in reference frames on debug builds 2023-08-12 05:32:11 -05:00
Cameron Gutman 325518b47a Add LiGetHostFeatureFlags() API 2023-08-03 22:09:30 -05:00
Cameron Gutman 0f17b4d0c5 Add LI_TOUCH_EVENT_CANCEL_ALL 2023-07-30 19:20:15 -05:00
Cameron Gutman f2cea4d6b0 Update ENet submodule 2023-07-30 14:02:28 -05:00
Cameron Gutman 6d039a646b Fix extended delays for unreliable/unsequenced traffic on high latency connections 2023-07-25 23:30:45 -05:00
Cameron Gutman 92cc6f96d4 Merge latest changes from upstream ENet 2023-07-25 22:03:42 -05:00
Cameron Gutman 77c5d5c282 Tune SO_RCVBUF logic
- Calculate desired SO_RCVBUF by packet size for the video socket
- Use the OS default SO_RCVBUF for audio and STUN sockets
2023-07-25 18:30:19 -05:00
Cameron Gutman 70a2e305bc Extend pen/touch APIs with contact area and orientation 2023-07-22 15:01:03 -05:00
Cameron Gutman 6f4f2607b3 Clarify API documentation 2023-07-22 12:34:02 -05:00
Cameron Gutman d8b2b04bb2 Reuse pressure field in touch/pen events to provide hover distance 2023-07-22 12:33:19 -05:00
Cameron Gutman 27428e655b Move ServerCodecModeSupport values into public header 2023-07-16 15:30:55 -05:00
Cameron Gutman 9b5fbff7ba Only disable 4K H.264 RFI with GFE 2023-07-16 15:13:22 -05:00
Cameron Gutman 2ac25bebaa Send unreliable traffic as reliable when we have just one channel 2023-07-16 15:11:09 -05:00
Cameron Gutman 2d0badde9a Send zero state gyro events as reliable traffic 2023-07-12 01:05:23 -05:00
Cameron Gutman dc803bcd33 Document the correct way to indicate arrival and removal of controllers 2023-07-09 15:24:56 -05:00
Cameron Gutman a3b28eb4d7 Update ENet for UWP builds 2023-07-08 19:15:45 -05:00
Cameron Gutman 49fef03830 Change frameHeaderSize to uint32_t to avoid warning from promotion to signed int 2023-07-08 01:40:44 -05:00
Cameron Gutman 9205a87002 Improve validation of lastPacketPayloadLength field 2023-07-08 01:31:41 -05:00
Mariotaku 659202c3e5 fixed memcpy overlap (reported by AddressSanitizer) (#80)
* removed unneeded memcpy
2023-07-08 01:09:45 -05:00
Cameron Gutman ed7d72c07d Fix single packet frame case for AV1 2023-07-06 01:41:15 -05:00
Cameron Gutman 190b08ecf4 Encode the final packet length in the frame header for AV1
Some decoders (Android) are very strict about trailing padding bytes.
2023-07-06 01:29:24 -05:00
Cameron Gutman 953971c9a3 Fix handling of AV1 keyframes 2023-07-05 18:45:29 -05:00
Cameron Gutman f3b7edbd11 Overflow onto channel 0 rather than distributing
This allows the host to make some assumptions about channel IDs
2023-07-04 16:51:35 -05:00
Cameron Gutman 377d37503f Split controller motion events onto their own channels 2023-07-04 16:18:52 -05:00
Cameron Gutman 53c29f11ba Send mouse deltas reliably for now 2023-07-04 15:48:08 -05:00
Evgeniy S befc9805ab Add workaround for missing last byte in RTSP message
Sometimes on android devices last byte is missing.
This is link to this bug in Goggle Issue Tracker:
https://issuetracker.google.com/issues/150758736?pli=1
2023-07-04 15:04:19 -05:00
Cameron Gutman c8828d586c Don't send periodic pings as reliable traffic 2023-07-04 15:03:01 -05:00