Skip to content

rtpbasepayload: always store input buffer meta before negotiation

The decision to store the input buffer depends on whether extensions are to be added to the output buffer, I assume as an optimization.

This creates an issue for subclasses that call negotiate(), where header_exts is actually populated, from their handle_buffer() implementation: at chain time, no header extension has been negotiated yet, which means that we don't add extensions to the first batch of buffers that comes out.

Keep track of whether negotiate has been called (this is different from the negotiated field) and always store the input buffer until then. This fixes the issue while largely preserving the optimization.

Merge request reports