1
Fork 0
Commit Graph

826 Commits

Author SHA1 Message Date
Juliusz Chroboczek 053067548a Ensure that replaced down tracks are closed even on failure.
Thanks to Ludovic Rateau.
2021-07-15 23:52:03 +02:00
Juliusz Chroboczek 9b8d868647 Fix a race between delUpConn and addLocal.
We could call addLocal after the remote was closed, which
would cause the local connection to remain forever.

Thanks to Ludovic Rateau.
2021-07-15 16:03:06 +02:00
Juliusz Chroboczek 3d2089f40f Merge GetRTP and Nack into GetPacket.
The two function were always called together.  This factors out
the NACKing logic into the track.
2021-07-14 14:22:22 +02:00
Juliusz Chroboczek 36d31f0db8 Maintain a reference to the connection associated to each track.
This avoids carrying an extra parameter in many places.
2021-07-14 14:05:23 +02:00
Juliusz Chroboczek bcd62f190b Flush buffered packets in diskwriter at shutdown. 2021-07-11 23:22:46 +02:00
Juliusz Chroboczek b0c39fca22 Implement loss handling in diskwriter. 2021-07-11 23:09:19 +02:00
Juliusz Chroboczek 39d8cf72fe Define a type maybeUint32 and use it in diskwriter. 2021-07-11 22:44:50 +02:00
Juliusz Chroboczek eec6c8a5b0 Use a partition tail checker in the diskwriter.
Now that we have our own samplebuilder, we can use the mark bit
to avoid dropping packets before a dropped packet.
2021-07-11 21:01:10 +02:00
Juliusz Chroboczek e840e53ac2 Switch to our own samplebuilder.
Pion's samplebuilder has been broken for over a month now, switch
to our own.
2021-07-11 20:18:44 +02:00
Juliusz Chroboczek cfe66a5c39 Update dependencies. 2021-07-11 20:15:00 +02:00
Juliusz Chroboczek 3398e929e3 Tweaks to README.
Fixes the instructions for compling under Windows.
2021-07-04 15:16:18 +02:00
Juliusz Chroboczek 6143f53ca2 Remove unreachable code. 2021-06-20 18:40:01 +02:00
Antonin Décimo f89270e874 Fix typos. 2021-06-09 15:20:17 +02:00
Juliusz Chroboczek de78f3ce62 Map entries before the first in packetmap.
The first time we drop, we may already have mapped a number of
packets with the identity mapping.  Insert an identity mapping
in Drop.

Also extend any existing mapping when inserting out-of-order mappings.
2021-05-18 13:51:20 +02:00
Juliusz Chroboczek c86f55c3a8 Fix comparisons of seqno in packetmap. 2021-05-17 22:26:59 +02:00
Juliusz Chroboczek f3b73263c8 Fix handling of NACKed packets when dropping.
We were not rewriting in this case.
2021-05-17 20:06:08 +02:00
Juliusz Chroboczek 22585e9d10 Handle spatial scalability.
Maintain spatial layer information, and drop lower layers when
possible.  Yields a 20% saving with VP9.
2021-05-17 18:17:43 +02:00
Juliusz Chroboczek 781bdf8c74 Fix error handling in mainpage and stats. 2021-05-17 14:43:57 +02:00
Juliusz Chroboczek 91fa693709 Display max layer in stats. 2021-05-17 13:51:29 +02:00
Juliusz Chroboczek fd76abb61d Send up actions synchronously. 2021-05-17 03:54:58 +02:00
Juliusz Chroboczek c00a21995e Move PLI rate-limiting into the reader loop. 2021-05-17 03:54:20 +02:00
Juliusz Chroboczek 7665067a91 Rate-limit keyframe requests in disk writer.
We were requesting two keyframes in a row.
2021-05-17 03:10:00 +02:00
Juliusz Chroboczek d94e5583cd Rewrite AV1 keyframe detection.
Metadata OBUs can appear between the sequence header and the first
frame header.
2021-05-16 14:51:09 +02:00
Juliusz Chroboczek 4435a30a53 Use sequence parameter sets for h.264 keyframe detection.
RFC 6184 Section 8.5.1 implies that the sender will send a
a sequence parameter set in response to PLI.  Since a keyframe is
useless without parameters, use the SPS to detect keyframes.
2021-05-15 23:50:32 +02:00
Juliusz Chroboczek f829da67e5 Update CHANGES. 2021-05-15 20:15:34 +02:00
Juliusz Chroboczek 3e00bb4293 AV1 support. 2021-05-15 19:54:07 +02:00
Juliusz Chroboczek 25b70bb72a Remove debugging statement. 2021-05-15 16:08:46 +02:00
Juliusz Chroboczek 7009f7e4e7 Update CHANGES. 2021-05-15 11:49:23 +02:00
Juliusz Chroboczek f12f776e03 Hide simulcast form when not allowed to send. 2021-05-15 11:36:04 +02:00
Juliusz Chroboczek c0da658b9f Send sender report more often.
Now that we start at 200kbps, we need to increase our rate faster.
2021-05-14 23:21:14 +02:00
Juliusz Chroboczek 54cd546120 Request low-resolution video when the video is small. 2021-05-14 23:21:14 +02:00
Juliusz Chroboczek 2da8faa8cf Implement per-stream requests. 2021-05-14 23:21:14 +02:00
Juliusz Chroboczek 515c4a5cd0 Rename pushConns to requestConns, move into Client interface.
Also allow selecting just a single connection.
2021-05-14 23:21:14 +02:00
Juliusz Chroboczek 435f46c520 Add tests for codec manipulation and rtpconn data stuctures. 2021-05-14 23:21:14 +02:00
Juliusz Chroboczek 6f9d7fc306 Scalable video coding (SVC). 2021-05-14 23:21:14 +02:00
Juliusz Chroboczek 7590588a54 Don't renegotiate if nothing changed during a request. 2021-05-14 18:19:44 +02:00
Juliusz Chroboczek 16bf4d6c95 Move call the setViewportHeight to start function.
This avoids issues with initialisation order.
2021-05-14 18:04:18 +02:00
Juliusz Chroboczek 3f3b245926 Fix profile-id for VP9. 2021-05-13 12:59:47 +02:00
Juliusz Chroboczek c18ec32c85 Protect against closed streams in recomputeUserStreams. 2021-05-13 04:09:56 +02:00
Juliusz Chroboczek d236f4c6df Work around empty track id and msid. 2021-05-13 03:45:32 +02:00
Juliusz Chroboczek 5ad0244267 Allow the loss-based congestion controller to yield higher values. 2021-05-12 17:06:26 +02:00
Juliusz Chroboczek 0205695bd7 Fix disk writer when doing simulcast. 2021-05-12 16:39:46 +02:00
Juliusz Chroboczek 1130295e0b Use strings.EqualFold for comparing codec names. 2021-05-12 16:18:23 +02:00
Juliusz Chroboczek 1212c7cb04 Run Firefox workaround unconditionally. 2021-05-12 02:59:12 +02:00
Juliusz Chroboczek c53cc20d26 Use Write instead of WriteRTP in the downTrack interface. 2021-05-11 23:48:17 +02:00
Juliusz Chroboczek b09dba0e26 Remove FIR sending code.
We no longer send FIRs.
2021-05-11 23:46:57 +02:00
Juliusz Chroboczek d3f53e6ada Move rate estimation into rtpDownTrack.WriteRTP. 2021-05-11 22:45:33 +02:00
Juliusz Chroboczek c52e1f4ce0 Move keyframe handling to the sender side.
This is simpler and gets rid of ErrKeyframeNeeded.
2021-05-11 22:36:56 +02:00
Juliusz Chroboczek b2ea8e8533 Move isKeyframe into its own file. 2021-05-11 19:59:24 +02:00
Juliusz Chroboczek 6278333a9a Tweak README. 2021-05-10 23:24:18 +02:00