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
Cameron Gutman
feb46b978e
Handle EINTR to fix streaming with GDB attached
2018-08-10 15:51:17 -07:00
Cameron Gutman
72bbbb7549
Add Moonlight PC reference to readme
2018-08-06 21:34:12 -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
d55b6bb502
Update ENet with Vita fix
2018-07-27 00:52:44 -07:00
Cameron Gutman
219d87486e
Check for both EWOULDBLOCK and EAGAIN for OSes where those values differ
2018-07-21 16:12:38 -07:00
Cameron Gutman
ebd0b2d3b1
Merge pull request #37 from d3m3vilurr/fix-vita
...
Fix vita connecting problems
2018-07-21 15:33:54 -07:00
Cameron Gutman
dabf0e9c23
Merge pull request #36 from d3m3vilurr/refix-alloca
...
Add NEED_ALLOCA macro
2018-07-21 12:19:42 -07:00
Cameron Gutman
6e7965f013
Use SO_RCVTIMEO to avoid the overhead of an extra syscall per packet
2018-07-16 00:46:40 -07:00
Cameron Gutman
a9438d1f5e
Fix build on MSVC
2018-06-23 19:44:56 -07:00
Cameron Gutman
77b277d05e
Inform the host of disconnect immediately so it can clean up properly
2018-06-09 21:37:42 -07:00
Cameron Gutman
ed134f07d3
Fix crash when using DR_NEEDS_IDR on a non-direct submit decoder
2018-06-01 16:59:06 -07:00
Cameron Gutman
b528ef7921
Fix uninitialized variable warning when using an invalid audio configuration
2018-05-28 10:46:42 -07:00
Cameron Gutman
c1b954da1f
Fix channel mapping error in 5.1 high quality mode
2018-05-27 20:03:08 -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
c4692a5b5f
Rework sequencing code and fix audio dropout across 64K boundary in the process
2018-02-19 00:16:32 -08:00
Cameron Gutman
bf737dc959
Plumb clientRefreshRateX100 for modern GFE versions
2018-02-03 21:56:52 -08:00
Cameron Gutman
cafc4d8125
Fix ENet comments
2018-01-19 20:25:54 -08:00
Cameron Gutman
75f5477c85
Use RTSP over TCP for GFE 3.12 and later
2018-01-09 23:06:36 -08:00
Cameron Gutman
a0b500a834
Centralize logic to use UDP for RTSP and append Host option if we use TCP
2018-01-09 22:04:08 -08:00
Cameron Gutman
cde117df06
Allocate enough buffer space for high quality audio packets from GFE 3.12
2018-01-09 19:46:19 -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
069f1475b6
Refactor reference frame invalidation checks into one function
2017-11-30 23:14:11 -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
1c386a8987
Fix race condition that could result in loss of NALUs in an IDR frame
...
Unfortunately, this was a design flaw in the way we handled IDR frames
NALUs. Because we split them all up and handled them as separate
"frames" in the system, some of them could be discarded due to a
video decode unit overflow, for example, and cause the decoder to get
confused due to receiving an SPS without a following PPS.
To address this, NALUs in the IDR frame are always delivered together
as one frame. The SPS, PPS, and VPS are now in separate buffers in
the IDR frame's buffer list and tagged as such with the new buffer
type field. The IDR frames themselves have a new frame type field
which marks them as special frames that clients may need to process
in a special way.
This will likely be a breaking change for your clients!
2017-11-18 14:00:25 -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
c0596ad1df
Add the ability for clients to reduce bitrate when HEVC is used
2017-09-25 21:36:23 -07:00
Cameron Gutman
957b1de1ad
Fix double-free and memory leak in RTSP option parsing failure path
2017-09-02 16:09:22 -07:00
Cameron Gutman
454fdccffc
Fix possible lost wakeups by acquring event mutex in signal path
2017-08-20 00:28:15 -07:00
Cameron Gutman
e3dadc3c08
Fix a couple files with bogus permissions
2017-08-20 00:28:15 -07:00
Cameron Gutman
047cdca847
Update README.md
2017-08-14 00:13:37 -07:00
Cameron Gutman
9c37b57510
Use a 24-bit rounding mask to correctly round SPI and restore SPI asserts
2017-06-11 14:52:56 -07:00
Cameron Gutman
c51bfdc9cb
Remove packet loss reporting, since it will be unreliable due to the FEC queue in front of the depacketizer
2017-06-11 14:50:21 -07:00
Cameron Gutman
3579265560
The SPI assert can still wrap on a long running stream and doesn't provide a ton of value anyway, so let's just kill it
2017-06-11 13:30:32 -07:00
Cameron Gutman
05c0fd68e3
Merge pull request #31 from irtimmer/audio_context
...
Add audio context and flags
2017-06-11 13:25:09 -07:00
Cameron Gutman
fdb256185a
Merge pull request #32 from irtimmer/customlog
...
Use application callback instead of standard error stream for logging
2017-06-11 13:22:51 -07:00
Cameron Gutman
88f95c7871
Remove a dangerous short cast that was causing incorrect wrapping of the packet index and a few other unnecessary casts
2017-06-11 12:55:44 -07:00
Cameron Gutman
99cfae7acc
Add receive time to decode unit
2017-06-10 16:08:52 -07:00
Cameron Gutman
4113108f23
Remove extra depacketizer code handling packet sequencing since RTP FEC queue does that now
2017-06-10 15:52:20 -07:00
Cameron Gutman
b83cafe845
Ensure FEC is always enabled
2017-06-10 15:51:05 -07:00
Cameron Gutman
4134ea3c23
Prevent the depacketizer from receiving parity packets
2017-06-10 15:42:51 -07:00
Cameron Gutman
6fb3472aec
Add a frame number field to the decode unit struct
2017-06-10 13:41:21 -07:00
Cameron Gutman
c386569754
Remove length prefix on video buffers
2017-06-10 12:55:50 -07:00
Cameron Gutman
af6f13c7fa
Use clock_gettime() for better timestamps on platforms that support it
2017-06-10 12:07:25 -07:00
Cameron Gutman
c01deff683
Fix LC_DEBUG not working if NDEBUG is defined
2017-06-08 18:50:21 -07:00
Cameron Gutman
634031839c
Use isBefore() for sequence number comparison
2017-06-08 00:30:29 -07:00
Cameron Gutman
965657523d
Improve debug output during frame loss
2017-06-07 22:49:54 -07:00
Cameron Gutman
6b2de18481
Don't wait for a parity packet to submit a completed frame
2017-06-07 22:46:13 -07:00
Cameron Gutman
3deba8de7e
Reduce video latency by 1 frame by not waiting for the next frame to signal us to give the current frame to the decoder. Also avoid giving partially reconstructed frames to the depacketizer because it can get confused with certain packet loss patterns.
2017-06-07 21:52:49 -07:00
Cameron Gutman
1a2996a49a
Various minor fixes to the FEC queue
2017-06-07 21:48:04 -07:00
Cameron Gutman
4791f62688
Add additional asserts that were useful for debugging corruption caused by the bug fixed in a499413221
2017-06-06 02:55:25 -07:00
Cameron Gutman
a499413221
Fix the buffer data packets value being truncated on very large frames causing an out of bounds buffer access in reed_solomon_reconstruct()
2017-06-06 02:07:13 -07:00