Commit Graph
100 Commits
Author SHA1 Message Date
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
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
Cameron Gutman c8828d586c Don't send periodic pings as reliable traffic 2023-07-04 15:03:01 -05:00
Cameron Gutman 7608e8e69d Enforce setting serverCodecModeSupport field in SERVER_INFORMATION 2023-07-04 14:56:20 -05:00
Cameron Gutman 0095141e08 Split control data into multiple channels and optimize packet flags based on type of data
This can significantly performance on lossy networks by avoiding HOL blocking.
2023-07-04 14:49:21 -05:00
Cameron Gutman 7d59c6e14e Fix motionType value in motion packets 2023-07-04 14:18:27 -05:00
Cameron Gutman 54e1556c40 Constrain the reported controller number by the max gamepad count 2023-07-04 14:16:53 -05:00
Cameron Gutman 9ad56cdd8e Move serverCodecModeSupport into SERVER_INFORMATION struct 2023-07-02 23:54:04 -05:00
Cameron Gutman effba1a16f Remove mention of enableHdr 2023-07-02 23:40:42 -05:00
Cameron Gutman 59a506c15a Only select 10-bit format if also compatible with client 2023-07-02 23:32:04 -05:00
Cameron Gutman 1125dc3dba Replace enableHdr option with directly receiving ServerCodecModeSupport value from XML 2023-07-02 23:28:10 -05:00
Cameron Gutman e36bde4acc Implement AV1 codec support
This has a breaking change to StreamConfiguration that requires client updates.
2023-07-02 22:16:20 -05:00
Cameron Gutman c0792168f5 Add LI_BATTERY_PERCENTAGE_UNKNOWN value 2023-07-02 16:42:09 -05:00
Cameron Gutman a0f8c060c0 Introduce new protocol extensions for controller RGB LEDs and battery state 2023-07-02 14:38:54 -05:00
Cameron Gutman c5dc45e144 Define an unknown tool type and clarify button-only events 2023-06-28 17:25:41 -05:00
Cameron Gutman 28d63b11dd Fix float values in pen events 2023-06-25 20:06:43 -05:00
Cameron Gutman f8899f724d Add a touch event type for leaving hover 2023-06-25 16:58:12 -05:00
Cameron Gutman 8c447137d6 Fix controller arrival packet to actually contain the controller that arrived 2023-06-25 14:27:43 -05:00
Cameron Gutman 44c8b95400 Pen tilt is 0..90 not -90..90 2023-06-25 00:24:55 -05:00
Cameron Gutman c8aac7f71c Define units for controller motion events 2023-06-24 21:28:43 -05:00
Cameron Gutman de0efa861a Several fixes for touch and pen APIs 2023-06-24 21:25:48 -05:00
Cameron Gutman 5cbb6f210d Fix signness of pen tilt parameters 2023-06-24 15:14:17 -05:00
Cameron Gutman 812ec0e2b7 Allow exceeding 4 controllers for Sunshine hosts 2023-06-18 16:36:34 -05:00
Cameron Gutman 9bf09d681e Plumb Sunshine feature flags SDP attribute for protocol extensions 2023-06-18 15:52:51 -05:00
Cameron Gutman 689450954c Add pen and motion batching 2023-06-18 14:30:16 -05:00
Cameron Gutman 372eb94ed0 Expand button flags to support additional buttons with Sunshine 2023-06-18 14:03:29 -05:00
Cameron Gutman 7eea7a7971 Fix endianness issues for BE systems 2023-06-18 13:50:39 -05:00
Cameron Gutman 329c55d52f Send pointer IDs instead of touch indices 2023-06-18 13:48:55 -05:00
Cameron Gutman cd35abbae7 Fix build 2023-06-11 19:46:13 -05:00
Cameron Gutman ce98d4fb2f Introduce connection callbacks for trigger rumble and motion events 2023-06-11 19:42:02 -05:00
Cameron Gutman 4a48024dc8 Introduce new input extension functions for touch, pen, motion, and controller arrival 2023-06-11 19:38:22 -05:00
Cameron Gutman 7970925fe4 Introduce macro function to determine endianness 2023-06-11 19:33:24 -05:00
Cameron Gutman 169078d0a9 Allow encoder to pick optimal ref frame count if RFI is supported by the decoder 2023-04-29 13:11:38 -05:00
Cameron Gutman c9426a6a71 Add HDR and colorspace fields to DECODE_UNIT 2023-03-11 11:36:21 -06:00
Cameron Gutman 02f12e4448 Update enet to fix NO_MSGAPI build 2023-03-05 14:32:34 -06:00
Cameron Gutman b77072d399 Don't use GFE modifier workaround with Sunshine 2023-02-25 13:11:54 -06:00
Cameron Gutman d3cb8131d1 Revert "Send TCP FIN after completion of our RTSP request"
Existing servers already know how to parse our messages without this,
so we just risk breaking things with middleboxes that don't do half-closed
connections properly. We'll handle this better with encrypted RTSP.

This reverts commit 95e3e26d12.
2023-02-20 16:58:21 -06:00
Cameron Gutman 7e089435c7 Reduce max number of frame status reports per second 2023-02-20 16:48:12 -06:00
Cameron Gutman 55a6d58225 Fix leak 2023-02-20 16:42:23 -06:00
Cameron Gutman 207f981fd0 Send final FEC frame status info to Sunshine
This info will be used for dynamic FEC and dynamic video packet batch size.
2023-02-20 16:24:48 -06:00
Cameron Gutman 82105f2f8f Declare packetFreed as volatile 2023-02-15 01:42:48 -06:00
Cameron Gutman c88b1bcf8e Fix integer truncation warning on MSVC 2023-02-15 01:33:32 -06:00
Cameron Gutman 54d46ca80f Put backpressure on control stream sender when the window fills up
Without any backpressure, ENet will just let packets accumulate forever.
2023-02-14 23:02:18 -06:00
Cameron Gutman 830187e4da Throttle mouse/controller message rate in the input send thread
This avoids clients from all having to handle this themselves independently.
2023-02-14 21:24:13 -06:00
Cameron Gutman 95e3e26d12 Send TCP FIN after completion of our RTSP request
This allows servers to read until a FIN, just like we do on the client.
2023-02-13 21:47:22 -06:00
Cameron Gutman 8186687093 Fix video header parsing assert with GFE 3.27 2023-02-13 21:26:47 -06:00
Cameron Gutman be1a48e856 Treat WSA_IO_PENDING as a receive timeout 2023-02-13 20:20:44 -06:00
Cameron Gutman fb12361b3f Fixed ENet to support hosts with multiple possible source addresses 2023-02-12 15:39:58 -06:00
Cameron Gutman dc186082a7 Add protocol extension for multi-client-compatible ping support 2023-02-12 01:23:25 -06:00
Cameron Gutman 07beb0f0a5 Accept any negative version as Sunshine 2023-01-16 21:38:36 -06:00
Cameron Gutman 08bb69ff7c Fix HScroll packet typedef 2023-01-16 21:24:09 -06:00
Cameron Gutman 4dbb445f8b Suppress Opus header assert with Sunshine 2023-01-16 21:13:18 -06:00
Cameron Gutman e1a7fe84e0 Add missing return 2023-01-16 21:12:24 -06:00
Cameron Gutman 79b5ef0e1e Add Sunshine protocol extension for passing HDR metadata 2023-01-16 21:06:33 -06:00
Cameron Gutman c9a5cea93e Add Sunshine protocol extension to support non-normalized key codes 2023-01-16 21:05:11 -06:00
Cameron Gutman 22adeb3902 Enable high resolution scroll events on Sunshine 2023-01-16 20:58:03 -06:00
Cameron Gutman 071e595766 Implement horizontal scrolling protocol extension for Sunshine 2023-01-16 20:56:51 -06:00
Cameron Gutman ef9ad529a4 Skip PPS NALUs prepended to P-frames 2023-01-02 23:48:16 -06:00
Cameron Gutman 9da6329496 Fix integer truncation warning on MSVC 2022-12-06 17:33:43 -06:00
Cameron Gutman 5c7a5ce129 Remove overzealous assert 2022-12-06 17:23:11 -06:00
Cameron Gutman bc00d957d3 Synthesize a PTS for hosts that don't send one 2022-12-06 17:22:02 -06:00
Cameron Gutman 8169a31ecc Fix incorrect PNV_INPUT_HEADER typedef 2022-11-22 21:30:17 -06:00