srtp
srtp copied to clipboard
`EncryptRTP` API change
current:
EncryptRTP(dst []byte, plaintext []byte, header *rtp.Header) ([]byte, error)
proposed:
EncryptRTP(dst []byte, packet *rtp.Packet) ([]byte, error)
pros:
- Simpler API when callers use
*rtp.Packet
. - Avoids an extra
Unmarshal
for callers when usertp.Packet
. For example:WriteRTP
. - Avoids a memcpy of the payload prior to encryption.
- Removes the implicit assumption that
cap(dst) == cap(plaintext)
will avoid an allocation.
cons:
- Worse API when callers use byte slices. Requires
Unmarshal
, but net performance is still the same/better. - Removes the option to fill the packet headers after sending. I can't think of a case when this would be practical.
ditto for the WriteRTP
and ReadRTP
methods. Should combine Header, []byte
into Packet
everywhere.
I am against this. In my case RTP/RTCP packets are generated by other parts of the system, and I use pion/srtp
to encrypt generated packets. The same case is for receiving, I need to decrypt them to []byte
and pass elsewhere for processing.