1
Fork 0
Commit Graph

58 Commits

Author SHA1 Message Date
Juliusz Chroboczek de3a016f4d Set the username in the server when using tokens.
This avoids the need to pass the username in the URL without
requiring the client to parse tokens.
2022-02-20 15:33:11 +01:00
Juliusz Chroboczek a86fb08f6c Replace ClientPermissions with a list of strings.
Now that we support external auth, the permissions list is
open-ended.  Make it a list for simplicity.
2022-02-19 23:44:57 +01:00
Juliusz Chroboczek 24187430e8 Rename client status to data, add group data.
We now distinguish between status, which is maintained by the server,
and data, which is provided by the client.  In addition to client data,
we now support group data.
2022-01-29 23:28:08 +01:00
Juliusz Chroboczek 1fb4288630 Don't send NACKs from disk writer.
We're already doing it in the receiver loop.
2022-01-26 02:31:34 +01:00
Juliusz Chroboczek 564dcd4167 Move keyframe handling back to the packet level.
Doing that at the sample level suffers from too much delay
due to buffering in the samplebuilder.
2022-01-25 23:11:03 +01:00
Juliusz Chroboczek 0cbfa7b0ca Write out disk writer packets unconditionally.
If the stream was very short, we may not have created
a writer yet.  Write out packets even in that case.
2022-01-25 22:04:57 +01:00
Juliusz Chroboczek fdf1fb4b16 Rework packet recovery in diskwriter.
We now request a keyframe if we lose too many packets.
2021-11-28 13:58:07 +01:00
Juliusz Chroboczek 1f9e45a30b Increase samplebuilder buffers even more. 2021-11-27 23:21:39 +01:00
Juliusz Chroboczek 501edd4a88 Update samplebuilder, increase buffer size.
This avoids a crash when a single frame was too large for the
samplebuilder.
2021-11-23 19:39:40 +01:00
Juliusz Chroboczek 869eb9b839 Move password checking into group.go.
It used to be delegated to clients.
2021-10-27 04:15:44 +02:00
Juliusz Chroboczek cf9c0edb89 Update Pion to 3.1.0-beta.3, new samplebuilder. 2021-08-23 18:15:55 +02:00
Juliusz Chroboczek a5c97fd849 Add System permission.
This replaces the OverridePermissions method, and is communicated
to clients that can reliably and safely identify a system user.
2021-07-30 19:26:34 +02:00
Juliusz Chroboczek 0623e92760 Add support for recording h.264 video.
We store h.264 in Matroska, since we already have the library.
We currently store the video width and height as 0.
2021-07-29 23:44:24 +02:00
Juliusz Chroboczek 7d29ef5a64 Make disk writer use the codecs package.
Instead of testing whether a sample is a keyframe, we test at the
packet level, then compare timestamps to identify the keyframe.
2021-07-29 23:07:08 +02:00
Juliusz Chroboczek 52a26327d7 Implement group status.
We now inform clients of the status of a group (locked, etc.).  Also
cleans up the handling of administrative messages, which solves the
issue of receiving "user" before "joined".
2021-07-16 19:51:54 +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 6143f53ca2 Remove unreachable code. 2021-06-20 18:40:01 +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 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 25b70bb72a Remove debugging statement. 2021-05-15 16:08:46 +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 6f9d7fc306 Scalable video coding (SVC). 2021-05-14 23:21:14 +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 c53cc20d26 Use Write instead of WriteRTP in the downTrack interface. 2021-05-11 23:48:17 +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 26bf8a341a Don't send client parameters in delete message.
This avoids a race condition since the delete messages are sent
asynchronously.
2021-05-10 16:58:28 +02:00
Juliusz Chroboczek 795a40ceaf Simulcast. 2021-05-08 21:12:29 +02:00
Juliusz Chroboczek 3ba2394be7 Implement user statuses.
The server now maintains a set of statuses for each user that are not
interpreted by the server but communicated to the other members of the
group using 'user' messages.
2021-04-28 17:01:05 +02:00
Juliusz Chroboczek f0a39fca48 Send user permissions to client.
We now maintain the user list in the serverConnection.
2021-04-28 00:07:19 +02:00
Juliusz Chroboczek 1fd8b92f02 Avoid race in newDiskConn. 2021-02-28 16:27:26 +01:00
Juliusz Chroboczek c72cbe8f27 Don't attempt to replace empty connection in disk writer. 2021-02-04 22:01:41 +01:00
Juliusz Chroboczek 14a4303664 Rework connection replacement.
We used to signal connection replacement by reusing the same connection
id.  This turned out to be racy, as we couldn't reliably discard old
answers after a connection id was refused.

We now use a new id for every new connection, and explicitly signal
stream replacement in the offer message.  This requires maintaining a
local id on the client side.
2021-01-31 23:59:17 +01:00
Juliusz Chroboczek 6098d4af9d Implement autolock. 2021-01-14 03:56:37 +01:00
Juliusz Chroboczek 81e155a45f Implement saving to disk of VP9. 2021-01-03 22:19:25 +01:00
Juliusz Chroboczek ddafca5780 Decrease keyframe interval when writing to disk. 2021-01-03 13:48:02 +01:00
Juliusz Chroboczek f53276b89e Simplify the protocol and the protocol interface.
Split the id field into id and source, where source indicates the sender
of the message and id the entity being sent.  Remove the label request,
just use the offerer's username.  Maintain the username within the
ServerConnection, this removes a parameter from some methods.
2021-01-03 12:17:30 +01:00
Juliusz Chroboczek 6c8e20c445 Don't attempt to write unsupported track to disk. 2020-12-26 04:17:55 +01:00
Juliusz Chroboczek 26ca4f7969 Warn when attempting to record unsupported codec. 2020-12-25 21:04:17 +01:00
Juliusz Chroboczek 159a9b8147 Fix recording filename for Windows. 2020-12-23 23:15:36 +01:00
Juliusz Chroboczek 6969ae7d68 Warn when writing to disk fails. 2020-12-23 23:15:36 +01:00
Juliusz Chroboczek d9dbb50bf5 Maintain a reference to client in disk connections. 2020-12-23 23:15:36 +01:00
Juliusz Chroboczek 325f288189 Move to github. 2020-12-19 17:37:48 +01:00