Commit Graph
100 Commits
Author SHA1 Message Date
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
Cameron Gutman f5ae5df5d0 Fix logic error in low bitrate audio duration selection 2019-12-01 19:22:16 -08:00
Cameron Gutman e938d84cdb Use TCP_NOOPT to restrict MSS on BSD-based OSes 2019-12-01 15:22:18 -08:00
Cameron Gutman ceab64c46b Use IP_PMTUDISC_DONT to clamp MSS on Windows 2019-12-01 15:00:21 -08:00
Cameron Gutman e5b6a2b7a9 Bump RTSP_MAX_RESP_SIZE to 48 KB 2019-12-01 13:59:09 -08:00
Cameron Gutman c1a26618d4 Increase audio packet duration for low bandwidth connections 2019-11-30 21:59:34 -06:00
Cameron Gutman 6b42954b47 Add LiGetPendingAudioDuration() function 2019-11-30 21:31:50 -06:00
Cameron Gutman 52f489bc46 Fix RTSP handshake errors on networks with broken PMTUD 2019-11-30 21:19:56 -06:00
Cameron Gutman f4dad9ae8b Add presentation timestamp to video frame metadata 2019-11-10 18:07:11 -08:00
Cameron Gutman eceb7d3a2b Merge pull request #46 from d3m3vilurr/vita-nonblock-socket
vita: Enable nonblock TCP socket
2019-11-03 21:22:20 -08:00
Cameron Gutman 49fd1bed3f Return correct error code when RTSP receive times out 2019-11-02 21:42:08 -07:00
Cameron Gutman 25528671d2 Fix error value on control stream and RTSP handshake failure 2019-11-02 21:28:05 -07:00
Cameron Gutman dca2205ac8 Fix assert failure on control stream establishment failure 2019-11-02 21:27:35 -07:00
Cameron Gutman 197594f38c Add platform helper function to set socket non-blocking mode 2019-11-02 19:16:46 -07:00
Cameron Gutman 9bd301897a Remove unnecessary field in QDU struct 2019-10-21 17:03:01 -07:00
Cameron Gutman f988a154a3 Fix Linux build 2019-10-12 19:42:49 -07:00
Cameron Gutman ea135be05a Only test TCP ports if the hostname resolves to multiple addresses 2019-10-12 19:09:28 -07:00
Cameron Gutman 93ce13e43f Update enet submodule to 93b080b053 2019-10-12 15:14:30 -07:00
Cameron Gutman 0cc66748ea Merge pull request #45 from d3m3vilurr/vita-newlib
vita: Apply newlib changes
2019-10-05 10:51:26 -07:00
Cameron Gutman 7de68207f0 Fix control stream connection error on multi-homed hosts 2019-09-14 14:06:34 -07:00
Cameron Gutman 438b4f87d3 Rewrite STUN code to avoid requiring TCP and use multiple servers in parallel 2019-08-13 17:51:11 -07:00
Cameron Gutman 4daf496bb4 Merge pull request #42 from d3m3vilurr/vita-getaddrinfo
vita: Apply getaddrinfo
2019-08-13 17:47:03 -07:00
Cameron Gutman 6750cde2ab Test STUN server via TCP to allow fallback if it's unreachable 2019-08-07 23:13:27 -07: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 c322ed9437 Terminate with the given error code if the disconnect timeout expires instead of -1 2019-07-23 23:41:48 -04:00
Cameron Gutman 25dfbcfd41 Implement isPrivateNetworkAddress() for IPv6 2019-07-15 00:16:17 -07:00
Cameron Gutman 6245934462 Fix streaming from Gen 3 servers 2019-07-05 21:01:14 -07:00
Cameron Gutman 801aaf43d6 Fix video on GFE 3.19 2019-05-27 01:27:50 -07:00
Cameron Gutman dffe51e885 Add LiGetPendingVideoFrames() and LiGetPendingAudioFrames() 2019-05-07 20:25:26 -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 1154cb1d3d Name our threads on Windows 2019-05-03 20:55:20 -07:00
Cameron Gutman 31aa893acd Name our threads on Linux 2019-05-03 18:54:40 -07:00
Cameron Gutman e01617cd17 Remove unused variable 2019-05-02 19:41:59 -07:00
Cameron Gutman a7d4537274 Fix receive time corruption after f395d305 2019-04-30 23:15:40 -07:00
Cameron Gutman 4a82762118 Assert that LENTRY_INTERNAL can fit in the reserved space 2019-04-27 14:09:55 -07:00
Cameron Gutman 0b8dc80823 Fetch receive time only once per frame instead of once per packet 2019-04-26 21:51:17 -07:00
Cameron Gutman fe7cb006da Improve FEC queue packet submission and retrieval from O(n) to O(1) 2019-04-25 23:02:01 -07:00
Cameron Gutman f395d3056a Eliminate a copy and allocation for each incoming video packet 2019-04-25 22:07:03 -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 d6971983aa Use an interruptible sleep to allow our threads to exit sooner 2019-04-06 15:26:59 -07:00
Cameron Gutman 9220fcb8e8 Require 2 intervals of 15% frame loss or one of 30% frame loss to trigger the poor connection warning 2019-04-06 12:23:36 -07:00
Cameron Gutman 40fa4ef3c8 Reduce NAT keepalive packet rate after connection is established 2019-03-24 12:54:41 -07:00
Cameron Gutman e9bc1070b7 Tune thresholds for poor connection warning 2019-03-18 20:21:02 -07:00
Cameron Gutman c9745855fd Track leaks of mutexes and events for debugging 2019-03-17 12:56:27 -07:00
Cameron Gutman 71a69204e9 Add a connection status callback to notify when the connection becomes lossy 2019-03-17 01:37:09 -07:00
Cameron Gutman 4a7d28038d Deprecate connection listener message callbacks 2019-03-17 01:34:04 -07:00
Cameron Gutman 6eb17a8e73 Fix build warnings 2019-02-26 23:44:10 -08:00
Cameron Gutman 8755529b1a Add support for high-resolution scroll events 2019-02-26 18:48:13 -08:00
Cameron Gutman 708a513256 Initialize platform sockets in LiFindExternalAddressIP4() 2019-02-22 20:59:54 -08:00
Cameron Gutman 1673093316 Update ENet submodule to remove redundant Vita error codes 2019-02-17 09:54:29 -08:00
Cameron Gutman 83d7f675a7 Fix sign extension bug in connection termination error code 2019-02-12 22:24:18 -08:00
Cameron Gutman a016474acc Update documentation in Limelight.h 2019-02-10 02:59:07 -08:00
Cameron Gutman eb6bfe0205 Ensure graceful ENet disconnect after handling pending receives 2019-02-10 02:19:15 -08:00
Cameron Gutman b7ce1bedbe Handle ENet disconnect events after receives 2019-02-10 01:42:49 -08:00
Cameron Gutman 6232935a1a Optimize sendMessageEnet() with fewer allocations and less time holding locks 2019-02-10 01:09:27 -08:00
Cameron Gutman cf4de951cb Use the termination reason from the server when calling the termination callback 2019-02-10 00:49:03 -08:00
Cameron Gutman aa9610847e Ensure termination error code is propagated properly 2019-02-09 21:30:16 -08:00
Cameron Gutman ad5dd9c940 Request haptics data from server 2019-02-09 02:16:59 -08:00
Cameron Gutman fa86e76978 Implement gamepad rumble support 2019-02-08 19:13:53 -08:00
Cameron Gutman 924fdaf2db Fix bugs in ByteBuffer API and add BbAdvanceBuffer() 2019-02-08 19:01:51 -08:00
Cameron Gutman dc21e28e1f Fix parsing XOR-MAPPED-ADDRESS if the optional comprehension bit is set 2019-01-22 17:35:53 -08:00
Cameron Gutman 12eebe0039 Wait for first IDR frame before enabling RFI 2019-01-19 14:44:48 -08:00
Cameron Gutman a653f4d3e0 Fix IDR frame dropping race condition which seems to occur frequently with GFE 3.17 2019-01-18 01:50:39 -08:00
Cameron Gutman 9360adb39a Fix invalid reference frame invalidation payload when dropping an early frame
This bug causes the request to be discarded on GFE 3.17.
2019-01-18 01:37:02 -08:00
Cameron Gutman f884003066 Avoid accumulating audio latency from audio captured by the host before we're ready to play it 2019-01-06 13:24:36 -08:00
Cameron Gutman 610c00bf2d Only start the audio UDP ping thread when we are ready to accept samples 2019-01-03 19:59:53 -08: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 860393536d Ensure a connection termination callback is not invoked due to calling LiInterruptConnection() 2018-12-28 15:28:56 -08:00
Cameron Gutman dd49e5bbfd Fix video bitrate being capped at initialBitrateKbps 2018-12-21 15:07:18 -08:00
Cameron Gutman 80eba25bb9 Update readme with new URL 2018-12-03 21:37:11 -08:00
Cameron Gutman edbaa43c2c Fix back-to-back calls of LiSendMultiControllerEvent() not working properly 2018-11-25 14:50:51 -08:00
Cameron Gutman e8dd103ed9 Use existing cleanup path for handling early-out errors 2018-11-22 12:52:11 -08:00
Cameron Gutman e741a12a25 Ensure RemoteAddrString is nulled out just in case LiStopConnection() is called 2018-11-21 21:31:18 -08:00
Cameron Gutman 639ff18dbb Allow automatic detection of remote streaming 2018-11-21 20:52:50 -08:00
Cameron Gutman 42df6475c8 Catch forgetting to initialize packetSize field 2018-11-21 20:36:49 -08:00
Cameron Gutman 396b02a94d Test each address returned in the getaddrinfo() call and stop blindly preferring IPv4
Fixes NAT64 on iOS 12 and probably other obscure configurations
2018-11-16 00:37:38 -08:00
Cameron Gutman d9210a6a9a Fix buffer overflow when connecting to an IPv4 address 2018-11-16 00:30:36 -08:00
Cameron Gutman 8665d80697 Don't expect responses for ENet control messages to fix GFE 3.16 2018-11-15 12:55:22 -08:00
Cameron Gutman 11ea2b1053 Add more distinguishable error codes for STUN 2018-10-28 17:19:40 -07:00
Cameron Gutman 0eed722635 Add a simple STUN function for resolving external WAN addresses 2018-10-26 19:20:40 -07:00
Cameron Gutman cd6b636dca Don't call a null pointer if a logging function is called before LiStartConnection() 2018-10-26 19:17:53 -07:00
Cameron Gutman 9396f6c528 Move resolveHostName() into PlatformSockets.c 2018-10-26 17:02:45 -07:00
Cameron Gutman 558ba488e8 Add X1 and X2 mouse buttons which are now apparently working 2018-10-03 17:54:24 -07:00
Cameron Gutman 487a62f58c Fix MSVC build issues 2018-09-25 00:56:43 -07:00
Cameron Gutman dd7820f100 Add LiGetMillis() for clients to use for latency calculation 2018-09-25 00:47:22 -07:00
Cameron Gutman b2ebba2167 Only disable split encode on older GFE versions 2018-09-22 20:22:10 -07:00
Cameron Gutman 718d6a4b28 Correctly declare the OPUS_MULTISTREAM_CONFIGURATION as const for AudioRendererInit functions 2018-09-13 06:18:14 -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 9c1d7ffb70 Detect packets that aren't correctly recovered by FEC 2018-09-05 01:06:25 -07:00
Cameron Gutman dbbb88af09 More FEC fixes 2018-09-04 22:27:44 -07:00
Cameron Gutman ddab05c56e Assert that recovered packets are valid 2018-09-04 22:13:37 -07:00
Cameron Gutman ea0f06ded0 Derive bufferHighestSequenceNumber from the FEC info to ensure it's always accurate 2018-09-04 20:20:32 -07:00
Cameron Gutman 6e633498c3 Fix decoding of large FEC index values (greater than 255) 2018-09-04 18:46:22 -07:00
Cameron Gutman fa7b23f339 Catch RTP FEC queue corruption earlier 2018-09-04 15:56:02 -07:00
Cameron Gutman 4a3521cfc6 Fix depacketizer state corruption if state is dropped in the middle of a frame 2018-09-04 14:35:56 -07:00
Cameron Gutman b9290449b4 Fix queue state error (and subsequent assert) when the queue advances after a constraint violation upon reception of a packet behind the new lowest entry 2018-08-29 08:24:58 -07:00