From b74940b90b504f2559bd9ca7023d9668f12f1d91 Mon Sep 17 00:00:00 2001 From: Ramil Badraddinli Date: Sun, 15 Feb 2026 01:21:27 +0200 Subject: [PATCH 1/2] Avoid sending VLA in every packet --- src/packet/payload.rs | 9 ++++++++- src/rtp/ext.rs | 7 +++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/packet/payload.rs b/src/packet/payload.rs index 27d5a57ef..f3e6da2b1 100644 --- a/src/packet/payload.rs +++ b/src/packet/payload.rs @@ -1,5 +1,6 @@ use crate::format::CodecSpec; use crate::media::ToPayload; +use crate::rtp::vla::VideoLayersAllocation; use crate::rtp_::Frequency; use crate::streams::StreamTx; @@ -42,6 +43,7 @@ impl Payloader { for (idx, data) in chunks.into_iter().enumerate() { let last = idx == len - 1; + let first = idx == 0; let previous_data = stream.last_packet(); let marker = self.pack.is_marker(data.as_slice(), previous_data, last) @@ -52,13 +54,18 @@ impl Payloader { // TODO: delegate to self.pack to decide whether this packet is nackable. let nackable = !is_audio; + let mut pkt_ext_vals = ext_vals.clone(); + if !first { + pkt_ext_vals.user_values.remove::(); + } + stream.write_rtp( pt, seq_no, rtp_time.rebase(self.clock_rate).numer() as u32, wallclock, marker, - ext_vals.clone(), + pkt_ext_vals, nackable, data, )?; diff --git a/src/rtp/ext.rs b/src/rtp/ext.rs index 1a704b127..2375fce72 100644 --- a/src/rtp/ext.rs +++ b/src/rtp/ext.rs @@ -1071,6 +1071,13 @@ impl UserExtensionValues { .downcast() .ok() } + + /// Remove a user extension value (by type). + pub fn remove(&mut self) { + if let Some(map) = &mut self.map { + map.remove(&TypeId::of::()); + } + } } impl UnwindSafe for UserExtensionValues {} From ffd8ffc0d8b9224783f1da71332db49f8afacda4 Mon Sep 17 00:00:00 2001 From: Martin Algesten Date: Sun, 15 Feb 2026 21:04:47 +0100 Subject: [PATCH 2/2] Changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 014726d00..1dc818639 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # Unreleased + * Avoid sending VLA on every packet #866 * Add `abs-capture-time` RTP header extension #864 # 0.16.2