- From: henbos via GitHub <sysbot+gh@w3.org>
- Date: Mon, 07 Oct 2024 11:39:52 +0000
- To: public-webrtc@w3.org
henbos has just created a new issue for https://github.com/w3c/webrtc-rtptransport: == API creates per-packet temporary objects, this is not ideal for GC == `RTCRtpPacket.copyPayloadTo(buffer)` avoids the GC overhead of the payload with BYOB, but not the rest of the packet. ``` interface RTCRtpTransport { sequence<RTCRtpPacket> readPacketizedRtp(unsigned long maxNumberOfPackets); ... }; ``` While the overhead of the packet in terms of bytes is small we still have the problem of garbage collection. For every packet we create a temporary `RTCRtpPacket` which needs to be GC'd, this could be over a thousand times per second. # Proposal: BYOP (Bring Your Own Packets) The app tells the transport where to store the packets we read instead of creating temporaries. Changes to the API: ``` interface RTCRtpPacket { constructor(); ... }; interface RTCRtpTransport { int readPacketizedRtp(sequence<RTCRtpPacket> packets); ... }; ``` Example usage: ``` // One-time setup const receivePackets = new RTCRtpPacket[kMaxNumberOfPackets]; for (let i = 0; i < kMaxNumberOfPackets; ++i) { receivePackets[i] = new RTCRtpPacket(); } // Repeatedly const packetsRead = transport.readPacketizedRtp(receivePackets); for (let i = 0; i < packetsRead; ++i) { handlePacket(receivePackets[i]); } ``` CC @handellm Please view or discuss this issue at https://github.com/w3c/webrtc-rtptransport/issues/77 using your GitHub account -- Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Monday, 7 October 2024 11:39:53 UTC