754 Commits

Author SHA1 Message Date
Cameron Gutman
ceafe7897c Refactor input packet sending logic into a separate function 2021-07-29 23:49:58 -05:00
Mariotaku
5846a9d6aa
Added unicode input event (#63)
* Added unicode input event

* Prevents strcpy overflow

* Updated according to change requests
2021-07-29 21:36:47 -05:00
Cameron Gutman
8abc371fb4 Print warning when audio decryption fails 2021-07-17 22:57:50 -05:00
Cameron Gutman
b2c39883bf Fix incorrect IV for encrypted control stream packets on big-endian machines 2021-07-17 22:29:30 -05:00
Cameron Gutman
d14f62c26a Fix crash when client provides no video decoder callbacks 2021-07-17 21:55:39 -05:00
Cameron Gutman
fa892c5334 Remove SEI prefix NAL units before returning data to clients 2021-07-09 17:37:30 -05:00
Cameron Gutman
5820cc2048 Fix double-free if unencrypted packet is received on encrypted stream 2021-07-08 20:50:09 -05:00
Cameron Gutman
3b9d8a3176 Assert that the port numbers are set prior to being used 2021-07-02 01:44:11 -05:00
Cameron Gutman
cdda221d64 Log the parsed ports 2021-07-02 01:30:33 -05:00
Cameron Gutman
5ec8ee7cbf Parse the RTSP port out of the RTSP session URL 2021-07-02 01:17:34 -05:00
Cameron Gutman
0cd3fcf1be Fix off-by-one in port number validation 2021-07-02 01:16:20 -05:00
Cameron Gutman
46887c0447 Parse the ports from RTSP SETUP instead of RTSP DESCRIBE
RTSP SETUP is better because it can provide multiple IP+port candidates
2021-07-02 00:28:48 -05:00
Cameron Gutman
f05be47ed8 Replace other hardcoded ports 2021-07-02 00:27:35 -05:00
Cameron Gutman
56ccd99cc7 Dynamically determine audio, video, and control ports from RTSP DESCRIBE response 2021-07-01 23:45:33 -05:00
Cameron Gutman
2660a05084 Fix GCC build 2021-07-01 22:28:17 -05:00
Cameron Gutman
1b642fec73 Fix control flow bugs in poll() error paths 2021-07-01 22:20:09 -05:00
Cameron Gutman
52250b4815 Use O_NONBLOCK for platforms without support for FIONBIO 2021-07-01 22:15:26 -05:00
Cameron Gutman
c00f4e15ae Use poll() instead of SO_RCVTIMEO for RTSP timeout support
poll() is more portable than SO_RCVTIMEO
2021-07-01 22:10:46 -05:00
Cameron Gutman
7c346c3104 Fix handling of older GFE versions in surround sound mode
7.1 surround sound would usually behave like CBR content, which never
tripped the logic to detect this incompatibility. Now we will both
detect it via hardcoded version number check, but also detect when the
FEC base sequence number constraint is violated too.
2021-06-20 14:55:44 -05:00
Cameron Gutman
5e3aa93479 Add a recording mode for debugging purposes 2021-06-20 11:15:30 -05:00
Cameron Gutman
75999a6e07 Add Video/Audio prefix to ThreadProc names
It's easier to find them in stack traces that way.
2021-06-20 10:36:05 -05:00
Cameron Gutman
eff97414bf Perform the initial audio resync even if we hit the polling timeout 2021-06-19 16:44:48 -05:00
Cameron Gutman
c680a60710 Disable audio FEC when using old GFE and Sunshine versions 2021-06-19 16:22:44 -05:00
Cameron Gutman
fed1a899aa Add defines for RTP audio payload types 2021-06-19 16:08:18 -05:00
Cameron Gutman
b58930c687 Don't start the decoder thread in pull-mode 2021-06-13 15:30:37 -05:00
Cameron Gutman
68c784445c Introduce optional pull-based API for video data 2021-06-13 15:14:38 -05:00
Cameron Gutman
b2d4b2c61f Fix spurious exit of fast recovery mode when the stream starts 2021-06-12 18:33:20 -05:00
Cameron Gutman
9999156f26 Update ENet to avoid dependency on qwave.dll 2021-06-12 12:16:39 -05:00
Cameron Gutman
ac9c4e82ac Introduce a list to cache freed input packet entries for reuse 2021-06-12 10:43:50 -05:00
Cameron Gutman
a13eeddacf Fix Win32 release build 2021-06-09 20:38:22 -05:00
Cameron Gutman
f01103af23 Add a free FEC block cache to avoid memory allocations 2021-06-09 20:29:05 -05:00
Cameron Gutman
fb9aab0e57 Reimplement LBQ on condition variables 2021-06-09 19:59:52 -05:00
Cameron Gutman
71a267fd28 Change PltWaitForEvent to void return type 2021-06-09 19:37:06 -05:00
Cameron Gutman
61b4fc1fe7 Add condition variable support and reimplement PLT_EVENT with it for non-Win32 platforms 2021-06-09 19:29:31 -05:00
Cameron Gutman
ccec4e8475 Add thread naming on macOS and iOS 2021-06-09 03:00:25 -05:00
Cameron Gutman
b471edbb80 Add a fast path to drop the audio FEC block with in-order packets
If we have not seen any OOS audio data lately, we can assume that
seeing the next FEC block means the previous block has completed
transmission. If we don't have it all by then, just assume it was
lost and move on. This reduces the perception of audio loss by
reducing the change that we cause the audio device to underrun.
2021-06-09 02:31:55 -05:00
Cameron Gutman
c64ba99654 Fix build on GCC/Clang 2021-06-09 01:45:44 -05:00
Cameron Gutman
7b838dd692 Improve audio FEC queue timeout logic 2021-06-09 00:46:14 -05:00
Cameron Gutman
ca7a6e7bbe Validate block size before writing data 2021-06-08 20:03:49 -05:00
Cameron Gutman
2228e4812d Improve debugging for A/V data loss and recovery 2021-06-08 20:01:58 -05:00
Cameron Gutman
5a71a4c092 Use 10ms packets for slow Opus decoders
With the old 20ms packets, an FEC block was 80ms of audio data.
This is enough data that waiting for the FEC shards can cause
an audio data underflow. The burst of 80ms of audio data after
reassembly fails can then lead clients to drop samples due to
excessive queued data.
2021-06-07 23:20:40 -05:00
Cameron Gutman
4e7b1e3c37
Merge pull request #60 from GaryOderNichts/wiiu-platform
Wii U platform support
2021-06-04 21:53:58 -05:00
GaryOderNichts
e5b39af6a5 some Wii U changes 2021-06-05 01:59:58 +02:00
GaryOderNichts
0c66a50e2d Wii U platform support 2021-06-04 21:36:54 +02:00
Cameron Gutman
509a17dbc3 Perform PLC for each lost packet in the FEC block 2021-06-03 21:03:46 -05:00
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