684 Commits

Author SHA1 Message Date
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
Iwan Timmer
10e0acba4a Use application callback instead of standard error stream for logging 2017-06-11 18:02:39 +02: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
Cameron Gutman
9a7519937e Remove unused memory allocation 2017-06-06 00:49:46 -07:00
Cameron Gutman
e2c6104251 Fix build error with LC_DEBUG defined 2017-06-05 22:26:38 -07:00
Iwan Timmer
d3fe286eb7 Add audio context and flags 2017-05-28 15:34:56 +02:00
Cameron Gutman
6e31c21815 Round down the specified packet size to the nearest multiple of 16 rather than forcing 1024 all the time 2017-05-26 21:17:43 -07:00
Cameron Gutman
86447399a9 Add start and stop callbacks for audio and video renderers 2017-05-21 12:50:53 -07:00
Cameron Gutman
92951e1309 Add LiInterruptConnection() to interrupt LiStartConnection() 2017-05-21 12:24:22 -07:00
Cameron Gutman
9ebb429f66 Fix null check typo 2017-05-21 10:59:47 -07:00
Cameron Gutman
b3b5ee1c2c Fix use of enetMutex during connection failure 2017-05-21 10:52:44 -07:00
Cameron Gutman
109472e4ab Fix bogus queue assert firing on failed connection 2017-05-21 10:37:34 -07:00
Cameron Gutman
eaf3355c96 Reduce socket read timeout to 100 ms to allow LiStopConnection() to complete faster 2017-05-21 10:29:00 -07:00
Cameron Gutman
7ee9ea4e11 Fix RFI invalidating an extra frame each time 2017-05-21 10:11:07 -07:00
Cameron Gutman
bfd368769e Force an IDR frame request when the decode unit queue overflows 2017-05-20 17:32:02 -07:00
Cameron Gutman
2d7bf5be82 Fix state cleanup if LiStartConnection() fails 2017-05-18 09:52:50 -07:00
Cameron Gutman
ec6c569130 Split reference frame invalidation support capabilities into codec-specific options 2017-05-15 23:11:37 -07:00
Cameron Gutman
7aeaefd24f Add Limelog support under Android 2017-05-15 00:45:12 -07:00
Cameron Gutman
20821e7eb6 Leave the zero padding bytes on FEC-recovered packets alone. Decoders are required to cope with trailing zero bytes in NALUs and they are not safe to remove because they may actually be part of the byte stream itself. 2017-05-11 20:10:20 -07:00
Cameron Gutman
417c8be124 Add missing license 2017-05-10 10:13:06 -07:00