History log of /webrtc/media/src/io/sample_builder/sample_sequence_location.rs (Results 1 – 4 of 4)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 5d8fe953 02-Feb-2023 João Oliveira <[email protected]>

general: apply clippy lints (#407)

* general: update crates to 2021 edition.

* general: apply clippy --fix

* general: apply manual clippy lints

* cargo fmt.


Revision tags: constraints-v0.1.0, interceptor-v0.8.2, rtcp-v0.7.2, mdns-v0.5.2, v0.6.0, interceptor-v0.8.1, media-v0.5.0, data-v0.6.0, sctp-v0.7.0, srtp-v0.9.1, rtcp-v0.7.1, rtp-v0.6.8, dtls-v0.7.0, ice-v0.9.0, turn-v0.6.1, stun-v0.4.4, mdns-v0.5.1, sdp-v0.5.3, util-v0.7.0, ice-v0.8.2
# 146a1e09 06-Oct-2022 Hugo Tunius <[email protected]>

Improve Sample Builder padding handling for static streams (#309)

When sending video streams that are fairly static, such as a screen
share of an inactive screen, libWebRTC will insert padding RTP

Improve Sample Builder padding handling for static streams (#309)

When sending video streams that are fairly static, such as a screen
share of an inactive screen, libWebRTC will insert padding RTP packets.
These were not correctly handled by sample builder, because of this
`SampleBuilder` would throw away packets carrying actual media.

## Example

As an example libWebRTC will send streams like this:

```
p1(t=1, start=true)
p2(t=1)
p3(t=1)
p4(t=1, marker=true)
p5(t=1, padding=true)
p6(t=1, padding=true)
p7(t=1, padding=true)
p8(t=2, start=true, marker=true)
p9(t=2, padding=true)
p10(t=2, padding=true)
p11(t=2, padding=true)
```

Prior to this commit `SampleBuilder` would build a sample out of `p1..=p4`
then drop `p4..=p8`. This would mean the bit of media data in `p8` would
be incorrectly dropped.

The reason for dropping `p4..=p8` is that `p4` is not at a partition head
and `p8` is incorrectly identified as the end of the sample, the real
end is `p7`.

With this commit `SampleBuilder` will build sample out of `p1..=p4`,
identify `p4..=p7` as padding and drop these packets, and build a sample
for `p8`.

There was also a bug where dropping packets because the sample head was
not at a partition start would double count the dropped packets(once in
`build_sample` and once in `purge_buffers`.

show more ...


# 7061eb47 30-Sep-2022 Hugo Tunius <[email protected]>

Handle empty RTP packets in Sample Builder (#303)

libWebRTC, among others, will sometime send padding RTP packets to
keep send rates steady. When they do the packets are sent after a
complete se

Handle empty RTP packets in Sample Builder (#303)

libWebRTC, among others, will sometime send padding RTP packets to
keep send rates steady. When they do the packets are sent after a
complete sequence of RTP packets that form a Sample/GOP/Frame. Example:

* P0, Timestamp=1, Start
* P1, T=1
* P2, T=1, End(RTP Marker Bit set)
* P3, T=1, Padding
* P4, T=1, Padding
* P5, T=2, Start
* P6, T=2 End

Here, when building a sample using the packets P5 and P6 we'll have
`prev_dropped_packets = 2`, however these dropped packets are
inconsequential as they don't carry media. The stream of samples is
unbroken, despite having dropped some packets. With the introduction
of `prev_padding_packets` it's possible to distinguish between dropped
packets that are likely to break the sample stream and these
unimportant padding packets.

show more ...


Revision tags: v0.5.1, ice-v0.8.1, v0.5.0, data-v0.5.0, dtls-v0.6.0, ice-v0.8.0, interceptor-v0.8.0, mdns-v0.5.0, media-v0.4.7, rtcp-v0.7.0, rtp-v0.6.7, sctp-v0.6.1, sdp-v0.5.2, srtp-v0.9.0, stun-v0.4.3, turn-v0.6.0, util-v0.6.0, test-tag
# ffe74184 23-Aug-2022 Martin Algesten <[email protected]>

Move all to top level