Cameron Gutman
ae92f15b0a
Use SRW locks for our mutex on Windows
...
These avoid a kernel transition for uncontended cases
2021-04-25 15:04:12 -05:00
Cameron Gutman
13041e0323
Further optimization to avoid needless calls to EVP_aes_128_gcm() and EVP_aes_128_cbc()
2021-04-22 17:49:51 -05:00
Cameron Gutman
8354c403f4
Optimize OpenSSL backend to avoid redundant reinitialization
...
It is best to pass as few parameters to EVP_*Init_ex() as possible.
Passing a key, IV, or cipher will cause redundant work to happen behind
the scenes as OpenSSL doesn't check whether they have actually changed.
This avoids a malloc()/free() and redoing AES key expansion for every
message that is encrypted and decrypted.
2021-04-22 17:34:48 -05:00
Cameron Gutman
29d2cc6d5b
Improve MbedTLS implementation of AES-CBC
2021-04-22 17:08:35 -05:00
Cameron Gutman
d7549cd953
Use array initializers compatible with MSVC
2021-04-22 00:32:41 -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
55cf1f8d30
Remove unnecessary calls to EVP_CIPHER_CTX_reset()
...
EVP_EncryptInit_ex() and EVP_DecryptInit_ex() free the cipher state as required
2021-04-22 00:17:46 -05:00
Cameron Gutman
625ec431eb
Improve AES-CBC code in preparation for audio encryption
2021-04-21 23:59:14 -05:00
Cameron Gutman
3abd3af4b2
Convert 'supportsHevc' and 'enableHdr' fields to bool type
2021-04-21 23:32:43 -05:00
Cameron Gutman
b24a71ab0b
Add explicit IDR frame request packet for GFE 3.22
2021-04-21 17:52:05 -05:00
Cameron Gutman
3adacb876d
Fix incorrect checks for AF_INET6
2021-04-19 23:01:17 -05:00
Cameron Gutman
221af82950
Add workaround for false GCC warning in CI
2021-04-18 00:15:27 -05:00
Cameron Gutman
76bba517b8
AppVeyor build fixes
2021-04-17 23:59:47 -05:00
Cameron Gutman
23a86b0455
Build with OpenSSL and MbedTLS for CI
2021-04-17 23:56:15 -05:00
Cameron Gutman
3979dbd082
Allow compilation on OSes without IPv6 support
2021-04-17 23:40:36 -05:00
Cameron Gutman
bced126fdb
Fix MSVC builds
2021-04-17 22:44:47 -05:00
Cameron Gutman
873fc6f837
Build fixes
2021-04-17 22:00:53 -05:00
Cameron Gutman
4304e597d8
Add byteswapping macros for big-endian systems
2021-04-17 21:43:13 -05:00
Cameron Gutman
efaeade7a6
Small cleanup and bugfix
2021-04-17 20:24:43 -05:00
Cameron Gutman
98d7ceecf7
Add native MbedTLS crypto backend
2021-04-17 19:00:26 -05:00
Cameron Gutman
d62ee951a0
Refactor OpenSSL usage into a platform-specific file to allow other crypto backends
2021-04-17 17:47:53 -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
31433fc5ee
Minor cleanup and bugfix
2021-04-09 13:47:24 -05:00
Cameron Gutman
83431e557d
Fix leak on each GFE 3.22 input packet
2021-04-09 13:47:00 -05:00
Cameron Gutman
0a00163f0b
Fix audio stream init error check
2021-04-09 13:00:35 -05:00
Cameron Gutman
cb11b76682
Fix GCC/Clang warning
2021-04-09 12:20:02 -05:00
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