Commit Graph

26 Commits

Author SHA1 Message Date
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
884b8d0a95 Additional fixes for corrupt FEC recovery handling 2018-09-05 12:04:39 -07:00
Cameron Gutman
ddab05c56e Assert that recovered packets are valid 2018-09-04 22:13:37 -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
ed134f07d3 Fix crash when using DR_NEEDS_IDR on a non-direct submit decoder 2018-06-01 16:59:06 -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
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
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
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
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
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
ec6c569130 Split reference frame invalidation support capabilities into codec-specific options 2017-05-15 23:11:37 -07:00
Cameron Gutman
f1adbc1e6b Apparently we're back to 8 byte first frame headers on GFE 3.2 2016-12-13 20:24:34 -08:00
Cameron Gutman
bd825776b3 Add support for GFE 3.0.7 2016-10-05 17:31:19 -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
2103b62386 Cancel the pending IDR frame request if we got a spurious IDR frame after a stream discontinuity 2016-05-26 17:38:03 -05:00
Cameron Gutman
48a5d63045 Reorganize the folder structure and delete the Xcode build files 2016-03-31 07:22:03 -04:00