Cameron Gutman
6dca9c6754
Add special termination error code for protected content
2021-04-09 11:53:03 -05:00
Cameron Gutman
9841a6e34d
Fix parsing of termination message from GFE 3.22
2021-04-09 11:41:59 -05:00
Cameron Gutman
731d52d020
Return a packet length from the decryption process
2021-04-09 10:40:28 -05:00
Cameron Gutman
12f0f3d6d7
Add encrypted control stream support for GFE 3.22
...
Receive-side not yet fully working
2021-04-09 10:25:24 -05:00
Cameron Gutman
f0dbee171b
Consider UDP 48000 as part of RTSP for connection testing
...
GFE 3.22 requires UDP 48000 communication to complete RTSP handshake
2021-04-09 08:39:28 -05:00
Cameron Gutman
d0c3513504
Reorder audio initialization and RTSP handshake to avoid RTSP PLAY failure on GFE 3.22
2021-04-09 08:39:28 -05:00
Cameron Gutman
2c13835f32
Increase first-start audio drop for upcoming GFE 3.22 changes
2021-04-09 08:39:28 -05:00
Cameron Gutman
c0c200e72c
Fix APP_VERSION_AT_LEAST macro definition
2021-04-09 07:51:05 -05:00
Cameron Gutman
9b194cc700
Adjust RTSP requests to conform to GFE 3.22 changes
2021-04-09 07:46:14 -05:00
Cameron Gutman
9a706fd78c
Temporarily switch to control protocol 9 on GFE 3.22
2021-04-09 07:45:17 -05:00
Cameron Gutman
415d97aa4d
Pass through input for full control stream encryption on GFE 3.22
2021-04-09 07:44:31 -05:00
Cameron Gutman
a51cc972d3
Add APP_VERSION_AT_LEAST() macro for cleaner GFE version checks
2021-04-09 07:26:24 -05:00
Cameron Gutman
b528867466
Change NAL type parsing to match the spec and add AUD removal for H.264
2021-03-29 19:27:19 -05:00
Cameron Gutman
8b1fbc770e
Discard AUD NALs prepended to incoming frames
2021-03-28 10:34:01 -05:00
Cameron Gutman
a64af8d8cf
Fix unused variable warning on NaCl
2021-01-09 20:08:22 -06:00
Cameron Gutman
021fe902d9
Update ENet submodule to upstream 1.3.17 release
2021-01-09 18:46:13 -06:00
Cameron Gutman
fd950b6452
Allow applications to reliably calculate decode unit queue delay
2020-12-31 16:08:00 -06:00
Cameron Gutman
3aa2463856
Add a special error code for early termination
2020-12-24 11:21:47 -06:00
Cameron Gutman
97ca7b099f
Report frames to the control stream code before FEC reconstruction
2020-12-24 11:08:31 -06:00
Cameron Gutman
cca2ba9aab
Add LiStringifyPortFlags() helper function
2020-12-23 13:42:28 -06:00
Cameron Gutman
ce546b12b0
Fix undefined behavior due to shifting an int by 31
2020-12-06 00:44:33 -06:00
Cameron Gutman
6dd3f9e7bc
Treat GCC/Clang warnings as errors
2020-12-05 23:46:10 -06:00
Cameron Gutman
941ffef2ca
Fix final GCC sign warnings
2020-12-05 23:45:49 -06:00
Cameron Gutman
8dc304bcd3
Fix more warnings
2020-12-05 23:30:25 -06:00
Cameron Gutman
3fddfc5557
Fix Clang warnings
2020-12-05 23:20:02 -06:00
Cameron Gutman
ac6630ef59
Add AppVeyor CI builds
2020-12-05 20:12:14 -06:00
Cameron Gutman
0ead0df2a1
Remove usage of long types for LP64 and LLP64 consistency
2020-12-05 16:51:03 -06:00
Cameron Gutman
333382ae74
Use stdint types for ByteBuffer
2020-11-30 22:03:24 -06:00
Cameron Gutman
4b4162c1a1
Fix redefinition warning for errno.h constants on Windows
2020-11-30 20:44:46 -06:00
Cameron Gutman
5f9f7ce407
Code cleanup: use stdbool.h
2020-11-30 20:38:13 -06:00
Cameron Gutman
e9ee868da4
Don't enable QoS for IPv6/NAT64 either
2020-10-31 17:08:29 -05:00
Cameron Gutman
dbf81dcb63
Don't enable QoS for remote IPv4 streams
...
Some broken routers/CPE will drop all QoS tagged packets
2020-10-28 20:35:45 -05:00
Cameron Gutman
edf08d0a60
Merge pull request #51 from d3m3vilurr/fix-vita-compile
...
vita: Restore select call on the VITA system
2020-10-22 21:39:53 -05:00
Cameron Gutman
f15582a090
Update pollSockets() fallback for Vita compatibility
2020-10-22 17:20:07 -05:00
Cameron Gutman
4f42188c1f
Test for UDP MTU issues
2020-10-10 13:03:05 -05:00
Cameron Gutman
327917683a
Fix platform cleanup on resolveHostName() failure
2020-10-10 12:51:31 -05:00
Cameron Gutman
dbedf938d4
Don't require linking to wlanapi.dll
...
This is not always available on Windows Server
2020-09-08 18:26:36 -07:00
Cameron Gutman
128c1503f2
Don't perform the connection test in resolveHostName() for single addresses unless required
2020-09-06 17:11:14 -07:00
Cameron Gutman
6ca0b93809
Ignore ICMP Port Unreachable messages on our UDP sockets
...
These messages can falsely indicate failure in cases where the UDP socket
for audio or video hasn't opened yet when we start to send our PING packets.
It is also problematic when sending STUN requests to multiple IP addresses.
If one returns an ICMP Port Unreachable, it can cause us to fail the entire set
of requests even when other IP addresses do respond.
2020-09-06 14:04:57 -07:00
Cameron Gutman
7b024c967e
Try TCP 47989 and TCP 48010 as fallbacks if 47984 doesn't work
2020-09-06 11:55:25 -07:00
Cameron Gutman
9e4651e460
Fix implicit function declaration warnings
2020-08-29 21:13:54 -07:00
Cameron Gutman
38fe65f8bd
Remove unused variable
2020-08-29 21:09:35 -07:00
Cameron Gutman
1b022a0d05
Terminate the connection if we can't receive a key frame in 10 seconds
2020-08-29 21:00:05 -07:00
Cameron Gutman
a89fcb8a46
Always use the test port
2020-08-29 19:14:53 -07:00
Cameron Gutman
9064d4931f
Add createSocket() helper to reduce code duplication
2020-08-29 18:54:11 -07:00
Cameron Gutman
feaca5b5b0
Use resolveHostName() instead of getaddrinfo() and connectTcpSocket() directly
2020-08-29 18:27:02 -07:00
Cameron Gutman
e74fe2b016
Fix socket errors being clobbered by closeSocket()
2020-08-28 18:48:15 -07:00
Cameron Gutman
5ddd53e17f
Enable media streaming mode for 802.11 WLAN interfaces on Windows
2020-08-11 22:12:58 -07:00
Cameron Gutman
f2c1d03d8e
Don't bother doing any connection testing if no ports were specified
2020-08-09 12:08:16 -07:00
Cameron Gutman
b59007cdea
Fix server-side log spam caused by sending unused command 0x0201
2020-08-09 11:46:49 -07:00
Cameron Gutman
ae00c09cb6
Restore the 500 ms ping logic to prevent warnings in the server-side logs
2020-08-08 23:16:55 -07:00
Cameron Gutman
2fdcfb9429
Accept IPv6 addresses for network testing to support NAT64
2020-08-06 21:59:17 -07:00
Cameron Gutman
453c722fa8
Add LiGetPortFlagsFromTerminationErrorCode()
2020-08-06 21:43:18 -07:00
Cameron Gutman
6010367637
Only allow input packets to be queued between start and stop
2020-08-06 19:12:29 -07:00
Cameron Gutman
f6927475cf
Enable poll() in ENet for Linux/BSD
2020-07-27 00:03:22 -07:00
Cameron Gutman
6351749039
Fix TCP connection tests on Linux and BSD
2020-07-26 20:56:39 -07:00
Cameron Gutman
117a7c637f
Switch to poll() to be safe against stack corruption from exceeding FD_SETSIZE
...
Fortunately, the fd_set definition is not prone to stack corruption on Windows,
because FD_SETSIZE is the maximum number of sockets in a fd_set, not
the maximum value socket file descriptor that can be stored in a fd_set.
https://beesbuzz.biz/code/5739-The-problem-with-select-vs-poll
2020-07-26 20:27:58 -07:00
Cameron Gutman
84f2421fbf
Add support for client-side connectivity testing
2020-07-19 14:39:42 -07:00
Cameron Gutman
5c9935e11b
Temporarily comment out validation of reserved field
...
FEC doesn't recover this field correctly with GFE 3.20.4.
2020-07-01 11:50:23 -05:00
Cameron Gutman
407d57a50a
Update ENet submodule to fix QoS-related connection issues
2020-06-12 21:59:16 -07:00
Cameron Gutman
bea625a13d
Work around rounding error in GFE's mouse position scaling
2020-05-26 18:19:53 -07:00
Cameron Gutman
0df24c76c0
Fix incorrect behavior of modifier keys on the right side of the keyboard
2020-05-26 17:33:57 -07:00
Cameron Gutman
f8ffb30e1f
Don't send no-op mouse move and scroll events
2020-05-26 17:13:22 -07:00
Cameron Gutman
7b56ab755d
Add batching for mouse position packets
2020-05-20 18:56:30 -07:00
Cameron Gutman
b44cad6598
Fix freeing uninitialized pointer on allocation failure
2020-05-20 18:38:58 -07:00
Cameron Gutman
c8faf3539b
Replace version check with note for LiSendMousePosition()
2020-05-03 15:56:39 -07:00
Cameron Gutman
495b269a10
Disable FEC on Gen 4 and earlier and assert that FLAG_EXTENSION is present
2020-05-03 15:51:49 -07:00
Cameron Gutman
f911d974c9
Enable FEC validation mode on debug builds
2020-05-02 16:56:13 -07:00
Cameron Gutman
719f690e56
Add an assert to catch incorrectly sized video packets
2020-05-02 16:49:51 -07:00
Cameron Gutman
5ba94e0282
Add FEC validation mode to diagnose FEC recovery failures
2020-05-02 14:24:24 -07:00
Cameron Gutman
f596e80575
Improve logging of video/audio delay and errors
2020-05-01 20:23:44 -07:00
Cameron Gutman
b46e06fcf1
Terminate the connection if video isn't received for 10 seconds
2020-05-01 19:25:24 -07:00
Cameron Gutman
413ea9bc8e
Minor RTSP code cleanup
2020-05-01 18:32:26 -07:00
Cameron Gutman
9ffdc79b6f
Add log messages to troubleshoot problems with missing video/audio
2020-04-29 20:17:55 -07:00
Cameron Gutman
fcabfc37ad
Dynamically allocate session ID string
2020-04-29 20:12:19 -07:00
Cameron Gutman
7d0458a16b
Dynamically allocate the RTSP response buffer
2020-04-29 19:58:50 -07:00
Cameron Gutman
247b1fe0e3
Provide reference dimensions for mouse position data
2020-04-11 20:51:17 -07:00
Cameron Gutman
bbbf4336cc
Add additional documentation for LiSendMousePositionEvent()
2020-04-11 15:59:12 -07:00
Cameron Gutman
ef7de27727
Add absolute mouse motion support
2020-04-11 15:40:50 -07:00
Cameron Gutman
f0c3b57d11
Enable QoS for ENet traffic on Windows
2020-04-09 17:42:49 -07:00
Cameron Gutman
2a02569c5c
Avoid 10 second delay on graceful termination with GFE 3.20.3.63
2020-04-09 17:28:34 -07:00
Cameron Gutman
0cda408d3c
Warn when streaming above 4K with H.264 or 8K with HEVC
2020-04-04 12:36:09 -07:00
Cameron Gutman
4f9d45fbb5
Round down odd height values to avoid NVENC initialization failure
2020-04-04 11:51:55 -07:00
Cameron Gutman
86751d9162
Move ConnectionListener initialization prior to possible Limelog() usage
2020-04-04 11:51:20 -07:00
Cameron Gutman
c2471157c0
Use EF instead of CS7 for DSCP on ENet traffic
2020-04-03 17:01:45 -07:00
Cameron Gutman
85de16b41b
Add 7.1 surround sound support
2020-04-03 00:11:41 -07:00
Cameron Gutman
d9d2668473
Fix audio problems caused by stale HighQualitySurroundSupported and HighQualitySurroundEnabled values
2020-04-02 18:44:13 -07:00
Cameron Gutman
99f22fa7e9
Undeprecate AUDIO_CONFIGURATION values and add a new macro for converting AUDIO_CONFIGURATION into launch/resume parameters
2020-04-02 18:41:32 -07:00
Cameron Gutman
607aaca93f
Replace AUDIO_CONFIGURATION constants with MAKE_AUDIO_CONFIGURATION() macro
2020-03-31 21:33:34 -07:00
Cameron Gutman
fb60ae6a4d
Parse Opus parameters from RTSP DESCRIBE response
2020-03-31 20:52:38 -07:00
Cameron Gutman
f489c9d725
Enable QoS marking on macOS and Linux
...
Using SO_NET_SERVICE_TYPE on macOS seems to make a noticeable difference
to packet latency and loss rate for some users.
2020-03-29 15:45:36 -07:00
Cameron Gutman
c3ab74b8af
Reduce ENet retransmission delay by sleeping for shorter periods between polls
2020-03-29 14:35:24 -07:00
Cameron Gutman
c1b8aa266f
Use 10 ms audio packets on low bitrate streams to balance latency and bandwidth
2020-03-18 20:03:56 -07:00
Cameron Gutman
67390dfb94
Remove deprecated listener callbacks
2020-02-24 23:57:06 -08:00
Cameron Gutman
2fc278da00
Change errorCode to int for consistency between 32-bit and 64-bit platforms
...
Unfortunately this requires updating all client code that uses these callbacks.
2020-02-24 23:01:22 -08:00
Cameron Gutman
cfeb0ffd90
Add MODIFIER_META constant
2020-01-15 17:48:36 -08:00
Cameron Gutman
3ccacdd3be
Merge pull request #48 from loki-47-6F-64/master
...
Correct payload-length when parsing RTSP Messages
2020-01-11 11:50:55 -08:00
Cameron Gutman
e60a7ef75f
Add color space and color range options
2019-12-14 14:32:47 -08:00
Cameron Gutman
b0213d06a7
Always use DSCP marking for our AV traffic
2019-12-12 18:43:57 -08:00
Cameron Gutman
3dd9a9f1b1
Use RAND_bytes() instead of rand() for STUN transaction IDs
2019-12-08 14:49:28 -08:00