47 Commits

Author SHA1 Message Date
Cameron Gutman
72f4f9e7b1 Disable BLL-FEC on GFE 3.26
The effective FEC percentage is much lower which negatively impacts performance on lossy networks
2022-10-04 17:51:01 -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
f05be47ed8 Replace other hardcoded ports 2021-07-02 00:27:35 -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
c057075eac Set minRequiredFecPackets to better handle lossy links at low bitrates 2021-05-16 09:27:50 -05:00
Cameron Gutman
7174caf5f1 Implement support for multi-FEC frames 2021-04-26 20:36:07 -05:00
Cameron Gutman
db81f1e512 Add support for audio stream encryption
Clients must opt-in using the new encryptionFlags field
2021-04-22 00:20:17 -05:00
Cameron Gutman
5782246b30 Add hack to prevent video glitching on GFE 3.22 when packets per frame exceed 120 2021-04-09 19:30:38 -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
9a706fd78c Temporarily switch to control protocol 9 on GFE 3.22 2021-04-09 07:45:17 -05: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
d9d2668473 Fix audio problems caused by stale HighQualitySurroundSupported and HighQualitySurroundEnabled values 2020-04-02 18:44:13 -07:00
Cameron Gutman
607aaca93f Replace AUDIO_CONFIGURATION constants with MAKE_AUDIO_CONFIGURATION() macro 2020-03-31 21:33:34 -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
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
f5ae5df5d0 Fix logic error in low bitrate audio duration selection 2019-12-01 19:22:16 -08:00
Cameron Gutman
c1a26618d4 Increase audio packet duration for low bandwidth connections 2019-11-30 21:59:34 -06:00
Cameron Gutman
a9780361a3 Fix high-quality surround sound breaking audio when streaming over the Internet or IPv6 2019-08-04 15:05:40 -07:00
Cameron Gutman
6245934462 Fix streaming from Gen 3 servers 2019-07-05 21:01:14 -07:00
Cameron Gutman
59481c085a Add support for requesting 20 ms audio frames for slow Opus decoders 2019-05-04 15:33:48 -07:00
Cameron Gutman
c87d4a755e Add a workaround to get low bandwidth stereo working again and a cap flag to never request HQ audio 2019-04-25 01:03:27 -07:00
Cameron Gutman
9fc962eb61 Use strict bitrate logic only in remote streaming mode 2019-01-01 18:45:01 -08:00
Cameron Gutman
64096db415 Include FEC overhead in specified bitrate 2019-01-01 18:21:30 -08:00
Cameron Gutman
dd49e5bbfd Fix video bitrate being capped at initialBitrateKbps 2018-12-21 15:07:18 -08:00
Cameron Gutman
639ff18dbb Allow automatic detection of remote streaming 2018-11-21 20:52:50 -08:00
Cameron Gutman
b2ebba2167 Only disable split encode on older GFE versions 2018-09-22 20:22:10 -07:00
Cameron Gutman
8743ce5d08 Improve encoding rate steps for PC native resolutions 2018-09-05 18:40:47 -07:00
Cameron Gutman
884b8d0a95 Additional fixes for corrupt FEC recovery handling 2018-09-05 12:04:39 -07:00
Cameron Gutman
fc124b60ce Enable slicing on HEVC if the client requests it 2018-08-04 16:37:57 -07:00
Cameron Gutman
679f6e83bb Fix HEVC streams requiring a higher bitrate to enable high quality surround audio 2018-07-27 19:04:25 -07:00
Cameron Gutman
4c47dd74ad Revert "Reduce audio bitrate when streaming with a low video bitrate" due to breakage on GFE 3.14.1 2018-07-27 19:02:27 -07:00
Cameron Gutman
a8b01d6c29 Enable high quality surround sound when the video bitrate is over 15 Mbps 2018-05-27 18:45:09 -07:00
Cameron Gutman
783af66324 Reduce audio bitrate when streaming with a low video bitrate 2018-05-27 17:29:20 -07:00
Cameron Gutman
bf737dc959 Plumb clientRefreshRateX100 for modern GFE versions 2018-02-03 21:56:52 -08:00
Cameron Gutman
f6ae7fc2b4 Improve decoder compatibility by using num_ref_frames=1 when RFI is disabled. Fixes decoder hangs on Amlogic SoCs. 2017-11-30 23:38:49 -08:00
Cameron Gutman
deb0e69d64 HDR is a Gen7 feature 2017-11-30 23:26:32 -08:00
Cameron Gutman
26fe1cb22c Separate H.265 video format for SDR and HDR formats 2017-11-25 12:12:38 -08:00
Cameron Gutman
314a5937f4 Set encoder feature flags to disable split frame encode on GFE 3.10 2017-11-10 00:09:15 -08:00
Cameron Gutman
a135ceaa9a Add support for HDR streaming 2017-10-11 23:21:43 -07:00
Cameron Gutman
d2229fd6a8 Update SDP attributes for better 4K streaming 2017-10-11 23:00:01 -07:00
Cameron Gutman
b83cafe845 Ensure FEC is always enabled 2017-06-10 15:51:05 -07:00
Iwan Timmer
9bf8d361a1 Forward Error Correction (#24)
* Preperation for FEC by adding new queue which buffers whole frames

* Add code for creating recovered RTP packet

* Add checks before repair missing packets

* Initial implementation for single FEC packet

* Implement FEC for multiple packets
2017-05-04 21:22:30 -07:00
Cameron Gutman
f57bd745b4 API update to provide enough information to support GFE 3.0.7 2016-10-05 17:23:59 -07:00
Cameron Gutman
48a5d63045 Reorganize the folder structure and delete the Xcode build files 2016-03-31 07:22:03 -04:00