pub struct ReorderingBuffer { /* private fields */ }
Expand description

Reordering buffer for RTP packets.

The reordering buffer internally uses u64 packet indices. These indices are estimated from packet sequence numbers according to the algorithm presented in RFC 3711, section 3.3.1.

This simplifies the original algorithm presented in RFC 3550.

Note: RFC 3711 uses 32-bit ROC. This implementation uses 64-bit indices, so the actual bit width of the ROC is 48 bits here (48-bit ROC + 16-bit sequence number gives 64-bit packet index). The 32-bit ROC value can be extracted from packet indices simply by cutting off the upper 16 bits, e.g. (index >> 16) as u32.

Implementations

Create a new reordering buffer with a given depth.

Estimate packet index from a given sequence number.

Check if a packet with a given index would be a duplicate.

Push a given packet into the buffer and return index of the inserted packet.

The method returns an error if the packet cannot be inserted into the buffer because it is either a duplicate or the buffer would exceed its capacity.

Take the next packet from the buffer.

This method will return a packet only if there is a packet in the front slot of the buffer. In other words, the index of the returned packet will always be equal to the start index.

Remove the front packet in the buffer and advance the window start position by one.

The method will always advance the window start position even if the front slot is empty or if the underlying buffer itself is empty.

Check if the underlying buffer is empty.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.