writeRtp method
Write RTP data to the track (for local tracks)
Can accept either raw bytes or an RtpPacket.
Implementation
void writeRtp(dynamic rtp, [RtpExtensions? extensions]) {
if (remote) {
throw StateError('Cannot write to remote track');
}
if (stopped) {
return;
}
final RtpPacket packet;
if (rtp is Uint8List) {
packet = RtpPacket.parse(rtp);
} else if (rtp is RtpPacket) {
packet = rtp;
} else {
throw ArgumentError('Expected Uint8List or RtpPacket');
}
// Create new packet with overridden payload type if codec is set
final outputPacket = codec != null
? RtpPacket(
version: packet.version,
padding: packet.padding,
extension: packet.extension,
marker: packet.marker,
payloadType: codec!.payloadType,
sequenceNumber: packet.sequenceNumber,
timestamp: packet.timestamp,
ssrc: packet.ssrc,
csrcs: packet.csrcs,
extensionHeader: packet.extensionHeader,
payload: packet.payload,
)
: packet;
_rtpController.add((outputPacket, extensions));
}