This reverts commit 66147e892d.
Reason for revert: The culprit was https://webrtc-review.googlesource.com/c/src/+/133169.
Original change's description:
> Revert "Optimize PacketRouter/RTPSender interactions."
>
> This reverts commit 6f129b3b76.
>
> Reason for revert: Speculative revert (some perf test are failing)
>
> Original change's description:
> > Optimize PacketRouter/RTPSender interactions.
> >
> > The legacy code-path uses a hashmap as cache in order to speed up
> > finding the right rtp module to send on. The new path should use that
> > as well.
> > In addition, there are checks that verify if an RTP module can send
> > padding, in some cases payload based. These result in a number of
> > calls to methods in RTPSender requiring its lock to be taken. This CL
> > introduces a combined SupportsPadding() check method which performs
> > all those checks in one go.
> >
> > Bug: None
> > Change-Id: I2d18d0d6e7d8cfe92c81d08cef248a4daa7dcd4b
> > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144780
> > Reviewed-by: Åsa Persson <asapersson@webrtc.org>
> > Reviewed-by: Sebastian Jansson <srte@webrtc.org>
> > Commit-Queue: Erik Språng <sprang@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#28535}
>
> TBR=asapersson@webrtc.org,sprang@webrtc.org,srte@webrtc.org
>
> Change-Id: I8499dc0fd6e6d0b9fa7a0886c8754655e5589780
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: None
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145326
> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#28552}
TBR=mbonadei@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org,srte@webrtc.org
Change-Id: I3bff3ecb2b776e30f77c1884f6faa72b21788017
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: None
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145401
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28563}
This reverts commit 6f129b3b76.
Reason for revert: Speculative revert (some perf test are failing)
Original change's description:
> Optimize PacketRouter/RTPSender interactions.
>
> The legacy code-path uses a hashmap as cache in order to speed up
> finding the right rtp module to send on. The new path should use that
> as well.
> In addition, there are checks that verify if an RTP module can send
> padding, in some cases payload based. These result in a number of
> calls to methods in RTPSender requiring its lock to be taken. This CL
> introduces a combined SupportsPadding() check method which performs
> all those checks in one go.
>
> Bug: None
> Change-Id: I2d18d0d6e7d8cfe92c81d08cef248a4daa7dcd4b
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144780
> Reviewed-by: Åsa Persson <asapersson@webrtc.org>
> Reviewed-by: Sebastian Jansson <srte@webrtc.org>
> Commit-Queue: Erik Språng <sprang@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#28535}
TBR=asapersson@webrtc.org,sprang@webrtc.org,srte@webrtc.org
Change-Id: I8499dc0fd6e6d0b9fa7a0886c8754655e5589780
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: None
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145326
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28552}
This reverts commit bb7727211c.
Reason for revert: Speculative revert (some perf test are failing)
Original change's description:
> Make new pacer padding more like old one
>
> The (currently unused) new pacer code path was implemented with what
> was intended as a more careful padding strategy.
> Unfortunately this doesn't work as well as expected due to the fact
> that the padding budget cannot build up underuse.
>
> I made another CL that could fix that, but I think it adds complexity
> for dubious gains. It also will make it more difficult to find any
> potential regression when switching to the new path, should one occur.
> See https://webrtc-review.googlesource.com/c/src/+/144563
>
> Therefore, this CL makes the new code path choose RTX payload in the
> same way as is currently done.
>
> Bug: webrtc:10633
> Change-Id: If2115d4fa7463add959faa77c63101286c27e0f5
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145202
> Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> Commit-Queue: Erik Språng <sprang@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#28537}
TBR=sprang@webrtc.org,stefan@webrtc.org
Change-Id: I99b72858414e0a245da596d94694449da88fd626
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10633
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145324
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28550}
The (currently unused) new pacer code path was implemented with what
was intended as a more careful padding strategy.
Unfortunately this doesn't work as well as expected due to the fact
that the padding budget cannot build up underuse.
I made another CL that could fix that, but I think it adds complexity
for dubious gains. It also will make it more difficult to find any
potential regression when switching to the new path, should one occur.
See https://webrtc-review.googlesource.com/c/src/+/144563
Therefore, this CL makes the new code path choose RTX payload in the
same way as is currently done.
Bug: webrtc:10633
Change-Id: If2115d4fa7463add959faa77c63101286c27e0f5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145202
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28537}
The legacy code-path uses a hashmap as cache in order to speed up
finding the right rtp module to send on. The new path should use that
as well.
In addition, there are checks that verify if an RTP module can send
padding, in some cases payload based. These result in a number of
calls to methods in RTPSender requiring its lock to be taken. This CL
introduces a combined SupportsPadding() check method which performs
all those checks in one go.
Bug: None
Change-Id: I2d18d0d6e7d8cfe92c81d08cef248a4daa7dcd4b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144780
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28535}
This CL makes the new code path for paced sending functionally complete.
By default, the field trial WebRTC-Pacer-ReferencePackets is Enabled,
meaning that there is no behavior change unless the field trial is
forced to Disabled. This is done in tests, and can be done on the
command line for manual testing.
Bug: webrtc:10633
Change-Id: I0d66c94ef83b5847dee437a785018f09ba3f828d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144050
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28497}
Patch set 1 is identical to original CL. Next one adds fix for
backwards compatibilit.
Original cl: https://webrtc-review.googlesource.com/c/src/+/144037
Bug: webrtc:10774
Change-Id: Ib72e3723c7a07e9ee83f97560a85367becd868a1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144601
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28485}
This change adds the writing and parsing of the `abs-capture-time` RTP header extension defined at:
http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time
We are still missing the code to:
- Negotiate the header extension.
- Collect capture time for audio and video and have the info sent with the header extension.
- Receive the header extension and use its info.
Bug: webrtc:10739
Change-Id: I75af492e994367f45a5bdc110af199900327b126
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144221
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Chen Xing <chxg@google.com>
Cr-Commit-Position: refs/heads/master@{#28468}
Unlike TimeToSendPadding(), the new GeneratePadding() method will
generate RTP packets and put them in the pacer queue, which will be
responsible for actually sending them.
A slight difference from previous logic is that we do not use a lower
bound of 50bytes for getting payload packets, instead we always try and
then abort if the next padding packet is larger than the current
available budget.
Since we're not sending the packets immediately, we don't need to worry
about twcc sequence numbering or updating the stats, that will be
handled by the general SendPacket() codepath. We can also omit the
PacingInfo struct and the return value of bytes sent, as that will
be handled when taking the packets out of the queue.
Bug: webrtc:10633
Change-Id: I066c292805a0bf76c59f68e66c21ea23fdb56c03
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/143794
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28403}
RtpPacketSender interface will be removed when downstream projects have
been updated.
Bug: webrtc:10633
Change-Id: Ie127b9814f39bd213d00ded0f7b98380f2f01084
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/143175
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28350}
This CL also improves test coverage and fixes an issue where the
(until now) unused code path for useful padding did not respect the
lower bound packet sizes.
Bug: webrtc:8975
Change-Id: I065745ca7ac9f7098d796c6a015cd96f052ee94f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/142801
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28343}
This method will be called when PacedSender is using the new code path
that directly owns the packets to be sent.
It can be seen as combining a few features of the old code path:
* It checks if this is the correct RTP module and then sends, without
the need for PacketRouter to poll multiple methods for SSRC etc first.
* It partly corresponds to TimeToSendPacket(), but RTX encapsulation
now happens pre-pacer and FEC does not need to have a packet history,
so most of that method is not used.
* It implements most of PrepareAndSendPacket(), such as updating header
extensions, reporting stats and of course forwards to Transport. It
now also handles the history a bit differently, since media packets
will only be stored for potential retransmission post-pacer.
Bug: webrtc:10633
Change-Id: Ie97952eeef6e56e462e115d67f7c7929f36c1817
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/142165
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28298}
This CL just adds the new interfaces, follow-ups will add implementation
in various parts of the code, and then do cleanup once usage of old
interface is gone.
Bug: webrtc:10633
Change-Id: Icd916f4220065c0d0e4f3f0bfaaed248f8c70d08
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/140891
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28252}
Currently, the packet in the history that most closely matches the bit
budget between two PacedSender::Process() calls is selected to be
retransmitted. This usually means that the smallest packet in the
history is selected over and over.
With this new field trial, we ignore the size constraint (since you're
sending padding, you obviously have some bandwidth to spare) and
instead prefer packets that have the fewest transmission times first,
and after that we prefer new packets over older ones. This way, in
case of available bandwidth but small loss, these padding packets have
a greater chance of actually being useful to the receiver.
Bug: webrtc:8975
Change-Id: I15a69231f44bfbefcb9ab38dd7886b966e3af6fe
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135954
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28084}
This is a standardized metric. Spec:
https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-totalpacketsenddelay
It is meant to replace the legacy googBucketDelay. The average
packet delay over any interval can be calculated as the delta
totalPacketSendDelay divided by the delta packetsSent between two
calls to getStats().
Bug: webrtc:10506
Change-Id: I3d6c6d66e5a06937d0ea8d182a82cd255084ad19
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/137044
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27979}
webrtc::RealTimeClock::TimeInMilliseconds() and
rtc::TimeMillis() have for some time been backed by the same clock,
no need for adjustment.
Bug: None
Change-Id: I5962153d9f5aa5e58ccde26393c322972cb51d43
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/136808
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27939}
This CL introduces three-value enum, in order to be able to distinguish
between send success, send failure, and invalid states such as missing
packet or invalid ssrc.
The behavior is unchanged in this CL, a follow-up will change the pacer
to not consume media budget on invalid states.
Bug: webrtc:8052,webrtc:8975
Change-Id: I1c9e2226f995356daa538d3d3cf44945f35e0133
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135165
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27923}
The main purpose right now of this CL is to avoid the situation
where multiple retransmissions are queued for sending (normally after
network glitch with increased pacer queue length), and some of those
fail sending because the can't be retrieved from the packet history
due to too short time since last sent.
Bug: webrtc:8975, webrtc:10607
Change-Id: I9f6369d83f0b8208e5f57b2dc2fd3f2db7c6fea1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135164
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27884}
If the receiver has indicated that a packet has been received, via a
TransportFeedback RTCP message, it is safe to remove it from the
RtpPacketHistory as we can be sure it won't be needed anymore.
This will reduce memory usage, reduce the risk of overflow in the
history at very high bitrates, and hopefully make payload based padding
a little more useful.
This is code stems partly from
https://webrtc-review.googlesource.com/c/src/+/134208
but without the RtpPacketHistory changes which were landed in
https://webrtc-review.googlesource.com/c/src/+/134307
Bug: webrtc:8975
Change-Id: Iea9d3d32bee5512473744e9ef3a18018567fc272
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135160
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27868}
Add support for potentially out-of-order removals of packets, using a
vector of sequence numbers that have been acknowledges as received.
Additionally, make kStoreAndCull storage method by default with a
field-trial kill-switch if things go wrong unexpectedly.
Bug: webrtc:8975
Change-Id: I6da8b92d85fc362c12db82976f115626cb1d32d4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134307
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27850}
This reverts commit 3890e99b70.
Reason for revert: Seems to be causing unexpected perf regressions.
Original change's description:
> Remove packets from RtpPacketHistory if acked via TransportFeedback
>
> If the receiver has indicated that a packet has been received, via a
> TransportFeedback RTCP message, it is safe to remove it from the
> RtpPacketHistory as we can be sure it won't be needed anymore.
> This will reduce memory usage, reduce the risk of overflow in the
> history at very high bitrates, and hopefully make payload based padding
> a little more useful.
>
> Bug: webrtc:8975
> Change-Id: I703a353252943f63d7d6edda68f03bc482633fd6
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133028
> Commit-Queue: Erik Språng <sprang@webrtc.org>
> Reviewed-by: Sebastian Jansson <srte@webrtc.org>
> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#27745}
TBR=danilchap@webrtc.org,sprang@webrtc.org,srte@webrtc.org
Change-Id: I68ea6cf5c8988d4b625f14a1a9bc556c06a39368
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:8975
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134161
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27752}
If the receiver has indicated that a packet has been received, via a
TransportFeedback RTCP message, it is safe to remove it from the
RtpPacketHistory as we can be sure it won't be needed anymore.
This will reduce memory usage, reduce the risk of overflow in the
history at very high bitrates, and hopefully make payload based padding
a little more useful.
Bug: webrtc:8975
Change-Id: I703a353252943f63d7d6edda68f03bc482633fd6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133028
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27745}
With this change, both the normal RTP and the transport-wide sequence
numbers are propagated with with AddPacket() call via a new
RtpPacketSendInfo struct, replacing the previous set of parameters.
The intent with this is that SendTimeHistory can hold a mapping from
transport-wide to rtp sequence numbers, and then via callbacks let the
RTP modules know when packets have been received by the remote end.
Bug: webrtc:8975
Change-Id: I6a24fc6282cbb041393752d39593c2867b242192
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133021
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27708}
This is not used in practice as there's functionality on
other levels that serves the same purpose.
Bug: None
Change-Id: I0488dc42459b07607363eba0f2b06f4c50f7cda4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/125520
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27061}
Replaces use of field trials in RtpSender and RtpVideoSender with injectable WebRtcKeyValueConfig.
Implementation still defaults to field trials.
BUG: webrtc:10335
Change-Id: I5fc6d327ee5d011ccc41385734b38344df172627
Reviewed-on: https://webrtc-review.googlesource.com/c/123447
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26795}
This cl change RtpSender to feed the PacedSender with RTP packet size rather than payload size in experiment WebRTC-SendSideBwe-WithOverhead. Before this cl, the congestion controller was feed with packet size but not the pacer. That means that the pacer budget was updated with an estimate that includes the RTP headers, but the media budget only use the payloads.
BUG: webrtc:10325 webrtc:6762
Change-Id: I35c8350603a7881ea162debcd89ed901cbb50950
Reviewed-on: https://webrtc-review.googlesource.com/c/123444
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26788}
To reflect what this value actually contain.
BUG: webrtc:10325
Change-Id: Ic3c5efbd16157bfae1a2749df17051f105720997
Reviewed-on: https://webrtc-review.googlesource.com/c/123500
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26787}
The discardability flag denotes whether the frame may be dropped by
the decoder with no effect on the decodability of subsequent frames.
Bug: webrtc:10214
Change-Id: I3654951d8863b50effe9670b8d1d7eb051240039
Reviewed-on: https://webrtc-review.googlesource.com/c/122241
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26763}
rtx packet may have addition extension (mid) and may use different
header size for extension (e.g. if repaired rtp stream id registered
to larger id than rtp stream id)
As a result rtx packet size calculation as orginial size + 2 bytes in
some scenarious may be incorrect. This chenage avoids crash in that cases.
Bug: None
Change-Id: I620d95e0592d6bdac0d3623b2675a49fc2177580
Reviewed-on: https://webrtc-review.googlesource.com/c/122180
Reviewed-by: Erik Varga <erikvarga@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26635}
Moved from RtpSender to RtpSenderVideo, since currently the
PlayoutDelay extension is used for video only, and configured via
RTPVideoHeader.
Bug: webrtc:7135
Change-Id: Idfcc90cefea83e40a4e79164d7914cdcd50e41fe
Reviewed-on: https://webrtc-review.googlesource.com/c/120357
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26484}
There's now one const method PlayoutDelayToSend to produce the delay
values to insert into outgoing packets, and two update methods,
OnSentPacket, and OnReceivedAck, to observe outgoing packets and acks,
respectively.
Bug: webrtc:7135
Change-Id: I07498c30f0de87ae0113f7e2eb6357a091a1f0af
Reviewed-on: https://webrtc-review.googlesource.com/c/120603
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26474}
This is a reland of 171df93262
Original change's description:
> Delete RtpUtility::Payload, and refactor RTPSender to not use it
>
> Replaced by a payload type --> video codec map in RTPSenderVideo,
> where it is used to select the right packetizer.
>
> Bug: webrtc:6883
> Change-Id: I43a635d5135c5d519df860a2f4287a4478870b0f
> Reviewed-on: https://webrtc-review.googlesource.com/c/119263
> Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#26380}
Tbr: danilchap@webrtc.org
Bug: webrtc:6883
Change-Id: I30771b86bbe50de609353e23e80dc532dc884ad4
Reviewed-on: https://webrtc-review.googlesource.com/c/119661
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26394}
This reverts commit 171df93262.
Reason for revert: Breaks downstream project
Original change's description:
> Delete RtpUtility::Payload, and refactor RTPSender to not use it
>
> Replaced by a payload type --> video codec map in RTPSenderVideo,
> where it is used to select the right packetizer.
>
> Bug: webrtc:6883
> Change-Id: I43a635d5135c5d519df860a2f4287a4478870b0f
> Reviewed-on: https://webrtc-review.googlesource.com/c/119263
> Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#26380}
TBR=danilchap@webrtc.org,brandtr@webrtc.org,nisse@webrtc.org
Change-Id: I76489c29541827aaba72515a76db54bdb7495e28
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:6883
Reviewed-on: https://webrtc-review.googlesource.com/c/119640
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26385}
Replaced by a payload type --> video codec map in RTPSenderVideo,
where it is used to select the right packetizer.
Bug: webrtc:6883
Change-Id: I43a635d5135c5d519df860a2f4287a4478870b0f
Reviewed-on: https://webrtc-review.googlesource.com/c/119263
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26380}
That is, the payload packetization overhead (eg. vp8 payload header),
not the RTP headers, extensions, etc.
The encoder and pacer both look at payload rate, but are currently not
aware of the bytes that are added in between them.
Bug: webrtc:10155
Change-Id: I4cdb04849d762360374d47a496983c8c6df191d2
Reviewed-on: https://webrtc-review.googlesource.com/c/115410
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26163}
Rids can now be sent using rtp_sender.
Hooking up the rid values in the voice and video engine is still WIP.
Bug: webrtc:10074
Change-Id: I245c7ecb23b67fc0ba65caaa5dbb4fcfd60c81bb
Reviewed-on: https://webrtc-review.googlesource.com/c/114505
Commit-Queue: Amit Hilbuch <amithi@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Seth Hampson <shampson@webrtc.org>
Reviewed-by: Fredrik Solenberg <solenberg@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26092}
before this CL it was only configured when pacer is used.
This CL sets it also when pacer is not used.
Move block for setting TransmissionOffset/AbsoluteTime extensions after pacer_ check
to stress in pacer case there are set(overwritten) in another function.
Bug: None
Change-Id: I06a6dd6ec689a25439a75b3baa71340535cd1ff8
Reviewed-on: https://webrtc-review.googlesource.com/c/112126
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25794}
Delete the deprecated IncomingPacket method, and convert implementation
to use RtpPacketReceived rather than RTPHeader.
Part 1 was https://webrtc-review.googlesource.com/c/src/+/100104
Bug: webrtc:7135, webrtc:8016
Change-Id: Ib4840d947870403deea2f9067f847e4b0f182479
Reviewed-on: https://webrtc-review.googlesource.com/c/6762
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25648}
The replacements are absl::EqualsIgnoreCase and
absl::StartsWithIgnoreCase. Also delete the alias
RtpUtility::StringCompare.
Bug: webrtc:6424
Change-Id: I4bed71540264450f85137ad0c2564125c5c6213f
Reviewed-on: https://webrtc-review.googlesource.com/c/109006
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25481}
This change integrates the FrameDecryptorInterface and the FrameEncryptorInterface into
the video send and receive path. If a FrameEncryptorInterface is set on an outgoing video RTPSender
then each outgoing video frame will first pass through the provided FrameEncryptor which
will have a chance to modify the payload contents for the purposes of encryption. In addition to
this the new GenericFrameDescriptor will be added as additional data.
If a FrameDecryptorInterface is set on an incoming video RtpReceiver then each incoming
video payload will first pass through the provided FrameDecryptor which have a chance to
modify the payload contents for the purpose of decryption.
Bug: webrtc:9795
Change-Id: I9f743ce0cb63df0cf070f6144be7ada078b4e5d2
Reviewed-on: https://webrtc-review.googlesource.com/c/103920
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25258}
Pacer may accept same packet serveral time for resending,
packet may spend non-zero time in pacer queue.
As a result packet can be resend several time within one rtt
wasting bandwidth.
Bug: None
Change-Id: I753a5400b47d3804735e66e539a1b103916d0c94
Reviewed-on: https://webrtc-review.googlesource.com/c/106260
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25205}
Streams that are part of transport feedback are assumed to be part of
allocation. A SetAsPartOfAllocation method is introduced to be used by
media streams that are part of bitrate allocation but not included in
feedback.
This is part of a series of CLs that allows GoogCC to track sent bitrate
that is included in bitrate allocation but without transport feedback.
Bug: webrtc:9796
Change-Id: If7ac1ad3e6f3c28b2ada2aef1607a42689d899b2
Reviewed-on: https://webrtc-review.googlesource.com/c/104881
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25079}
This CL moves the action of acquiring the lock outside
UpdateTransportSequenceNumber. This prepares for an upcoming CL where
the lock is used outside this call at the call sites and avoids the lock-unlock
overhead that would otherwise occur.
Also removing the const declaration as it modifies the state of
transport_sequence_number_allocator_.
Bug: webrtc:9796
Change-Id: I0bd4a0fd2fdbf6291867eb913690c61269eab8c5
Reviewed-on: https://webrtc-review.googlesource.com/c/102684
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25068}
Rename to better match what it does,
Adjust to support two-byte header extension
Bug: webrtc:7990
Change-Id: I2786d70e7cf9cd3d722f54fb1d07c9cfaafab947
Reviewed-on: https://webrtc-review.googlesource.com/103201
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Johannes Kron <kron@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24958}
This reverts commit 8b7bc5d701.
Reason for revert: Slow RTC_DCHECK has been removed.
Original change's description:
> Revert "Second reland of "Optimize execution time of RTPSender::UpdateDelayStatistics""
>
> This reverts commit 9def3b45ef.
>
> Reason for revert: webrtc_perf_tests fails on Mac-10.12.
>
> Original change's description:
> > Second reland of "Optimize execution time of RTPSender::UpdateDelayStatistics"
> >
> > The reland has a lot of additional DCHECKS for easier debugging,
> > so in debug builds it will actually be a ~2x slowdown compared to the old code.
> > The excessive DCHECKS should be removed in a followup CL.
> >
> > Bug: webrtc:9439
> > Change-Id: I8389cd84f1ca12c29cc6993f0d2cf7e6d7dd8379
> > Reviewed-on: https://webrtc-review.googlesource.com/101761
> > Reviewed-by: Åsa Persson <asapersson@webrtc.org>
> > Reviewed-by: Björn Terelius <terelius@webrtc.org>
> > Commit-Queue: Johannes Kron <kron@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#24821}
>
> TBR=terelius@webrtc.org,asapersson@webrtc.org,kron@webrtc.org
>
> Change-Id: I98c4c96d552858d0299d49993e9b9be6a6204dfe
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: webrtc:9439
> Reviewed-on: https://webrtc-review.googlesource.com/101860
> Reviewed-by: Johannes Kron <kron@webrtc.org>
> Commit-Queue: Johannes Kron <kron@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#24825}
TBR=terelius@webrtc.org,asapersson@webrtc.org,kron@webrtc.org
Change-Id: I260c56932710d26f9d7201c07279fef8d2150bd9
Bug: webrtc:9439
Reviewed-on: https://webrtc-review.googlesource.com/102000
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Johannes Kron <kron@webrtc.org>
Commit-Queue: Johannes Kron <kron@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24843}
This reverts commit 3f4a4fad8c.
Reason for revert: Breaking internal tests
Original change's description:
> Added field trial WebRTC-GenericDescriptor for the new generic descriptor.
>
> Also parameterized tests to test the new generic descriptor and
> added --generic_descriptor flag to loopback tests.
>
> Bug: webrtc:9361
> Change-Id: I2b76889606fe2e81249ecdebb0b7b61151682485
> Reviewed-on: https://webrtc-review.googlesource.com/101900
> Commit-Queue: Philip Eliasson <philipel@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
> Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#24835}
TBR=danilchap@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,philipel@webrtc.org
Change-Id: I4d4714a9f4ab0e95adf0f4130bc1a932efc448fa
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:9361
Reviewed-on: https://webrtc-review.googlesource.com/101940
Reviewed-by: Lu Liu <lliuu@webrtc.org>
Commit-Queue: Lu Liu <lliuu@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24839}
Also parameterized tests to test the new generic descriptor and
added --generic_descriptor flag to loopback tests.
Bug: webrtc:9361
Change-Id: I2b76889606fe2e81249ecdebb0b7b61151682485
Reviewed-on: https://webrtc-review.googlesource.com/101900
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24835}
This reverts commit 9def3b45ef.
Reason for revert: webrtc_perf_tests fails on Mac-10.12.
Original change's description:
> Second reland of "Optimize execution time of RTPSender::UpdateDelayStatistics"
>
> The reland has a lot of additional DCHECKS for easier debugging,
> so in debug builds it will actually be a ~2x slowdown compared to the old code.
> The excessive DCHECKS should be removed in a followup CL.
>
> Bug: webrtc:9439
> Change-Id: I8389cd84f1ca12c29cc6993f0d2cf7e6d7dd8379
> Reviewed-on: https://webrtc-review.googlesource.com/101761
> Reviewed-by: Åsa Persson <asapersson@webrtc.org>
> Reviewed-by: Björn Terelius <terelius@webrtc.org>
> Commit-Queue: Johannes Kron <kron@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#24821}
TBR=terelius@webrtc.org,asapersson@webrtc.org,kron@webrtc.org
Change-Id: I98c4c96d552858d0299d49993e9b9be6a6204dfe
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:9439
Reviewed-on: https://webrtc-review.googlesource.com/101860
Reviewed-by: Johannes Kron <kron@webrtc.org>
Commit-Queue: Johannes Kron <kron@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24825}
The reland has a lot of additional DCHECKS for easier debugging,
so in debug builds it will actually be a ~2x slowdown compared to the old code.
The excessive DCHECKS should be removed in a followup CL.
Bug: webrtc:9439
Change-Id: I8389cd84f1ca12c29cc6993f0d2cf7e6d7dd8379
Reviewed-on: https://webrtc-review.googlesource.com/101761
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Johannes Kron <kron@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24821}
RtpPacket::UpdateDelayStatistics was previously optimized with several
sanity checks added. These sanity checks caused many of the unit tests
in peerconnection_integration_unittests to fail and the CL was therefore
reverted. This CL contains the sanity checks along with patches so that
the unit tests pass.
Bug: webrtc:9439
Change-Id: Ia5f5e8b125e5f3f4b79d433e2282901143530a25
Reviewed-on: https://webrtc-review.googlesource.com/99802
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Commit-Queue: Johannes Kron <kron@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24813}
Remove function for converting uri into ExtensionType
This removes one of the lists of all supported extensions
Bug: webrtc:7472
Change-Id: I0c27239d91ef14ca4a3aa0c00588fa2b9cf10e0c
Reviewed-on: https://webrtc-review.googlesource.com/100523
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24752}
as iniditcation retransmission shouldn't be limited because of rate.
Bug: None
Change-Id: I579261749515260b972631779dadc6349dfcab46
Reviewed-on: https://webrtc-review.googlesource.com/99541
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24690}
This reverts commit 7bcd2a98be.
Reason for revert: peerconnection_unittests fails on downstream test runner.
Original change's description:
> Reland "Optimize execution time of RTPSender::UpdateDelayStatistics"
>
> The reland has a lot of additional DCHECKS for easier debugging,
> so in debug builds it will actually be a ~2x slowdown compared to the old code.
> The excessive DCHECKS should be removed in a followup CL.
>
> Bug: webrtc:9439
> Change-Id: I493de337bf20c998aa32c2532212cac85c5517fb
> Reviewed-on: https://webrtc-review.googlesource.com/96641
> Reviewed-by: Philip Eliasson <philipel@webrtc.org>
> Reviewed-by: Åsa Persson <asapersson@webrtc.org>
> Commit-Queue: Björn Terelius <terelius@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#24501}
TBR=terelius@webrtc.org,asapersson@webrtc.org,philipel@webrtc.org
Change-Id: Ia48444d2a7647cf826ef93b4720f6d7ff9a712c3
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:9439
Reviewed-on: https://webrtc-review.googlesource.com/96960
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24502}
The reland has a lot of additional DCHECKS for easier debugging,
so in debug builds it will actually be a ~2x slowdown compared to the old code.
The excessive DCHECKS should be removed in a followup CL.
Bug: webrtc:9439
Change-Id: I493de337bf20c998aa32c2532212cac85c5517fb
Reviewed-on: https://webrtc-review.googlesource.com/96641
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24501}
Running clang-format with chromium's style guide.
The goal is n-fold:
* providing consistency and readability (that's what code guidelines are for)
* preventing noise with presubmit checks and git cl format
* building on the previous point: making it easier to automatically fix format issues
* you name it
Please consider using git-hyper-blame to ignore this commit.
Bug: webrtc:9340
Change-Id: I694567c4cdf8cee2860958cfe82bfaf25848bb87
Reviewed-on: https://webrtc-review.googlesource.com/81185
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23660}
This is a no-op change because rtc::Optional is an alias to absl::optional
This CL generated using script:
#!/bin/bash
dir=modules/rtp_rtcp
find $dir -type f \( -name \*.h -o -name \*.cc \) \
-exec sed -i 's|rtc::Optional|absl::optional|' {} \+ \
-exec sed -i 's|rtc::nullopt|absl::nullopt|' {} \+ \
-exec sed -i 's|#include "api/optional.h"|#include "absl/types/optional.h"|' {} \+
find $dir -type f -name BUILD.gn \
-exec sed -r -i 's|"(../)*api:optional"|"//third_party/abseil-cpp/absl/types:optional"|' {} \+;
git cl format
Bug: webrtc:9078
Change-Id: Ife720849709959046329c1c9faa3f31aa13274dc
Reviewed-on: https://webrtc-review.googlesource.com/83584
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23624}
They have been disabled by default for years, and should have been made redundant by the event logs.
Bug: webrtc:8982
Change-Id: I491923cbc93378d28f5166d24756b335619d9c12
Reviewed-on: https://webrtc-review.googlesource.com/82800
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Jonas Olsson <jonasolsson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23598}
bugs.webrtc.org/8439 introduces application data that could e.g. contain
timestamps. We would like to take different actions for this data
depending on whether this is the first time a packet is being sent.
Bug: webrtc:8906
Change-Id: Ib370d76beec2960d961bf44391930faa4b193479
Reviewed-on: https://webrtc-review.googlesource.com/77643
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Petter Strandmark <strandmark@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23426}
This removes the optimization that would stop sending the MID RTP
header extension when an RTCP report block is received. The old
implementation was not flexible enough for the API, and making
those changes is too involved at this time as we need this to work
now to unblock other work.
Bug: webrtc:4050
Change-Id: I099f8e9047a40993d93bcda9164eb82fdf810387
Reviewed-on: https://webrtc-review.googlesource.com/67192
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22776}
This CL adds the ability to configure RTPSender to include the
MID header extension when sending packets. The MID will be
included on every packet at the start of the stream until an RTCP
acknoledgment is received for that SSRC at which point it will
stop being included. The MID will be included on regular RTP
streams as well as RTX streams.
Bug: webrtc:4050
Change-Id: Ie27ebee1cd00a67f2b931f5363788f523e3e684f
Reviewed-on: https://webrtc-review.googlesource.com/60582
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22574}
This is a reland of 6328d7cbbc
Original change's description:
> Rework rtp packet history
>
> This CL rewrites the history from the ground up, but keeps the logic
> (mostly) intact. It does however lay the groundwork for adding a new
> mode where TransportFeedback messages can be used to remove packets
> from the history as we know the remote end has received them.
>
> This should both reduce memory usage and make the payload based padding
> a little more likely to be useful.
>
> My tests show a reduction of ca 500-800kB reduction in memory usage per
> rtp module. So with simulcast and/or fec this will increase. Lossy
> links and long RTT will use more memory.
>
> I've also slightly update the interface to make usage with/without
> pacer less unintuitive, and avoid making a copy of the entire RTP
> packet just to find the ssrc and sequence number to put into the pacer.
>
> The more aggressive culling is not enabled by default. I will
> wire that up in a follow-up CL, as there's some interface refactoring
> required.
>
> Bug: webrtc:8975
> Change-Id: I0c1bb528f32eeed0fb276b4ae77ae3235656980f
> Reviewed-on: https://webrtc-review.googlesource.com/59441
> Commit-Queue: Erik Språng <sprang@webrtc.org>
> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#22347}
Bug: webrtc:8975
Change-Id: I162cb9a1eccddf567bdda7285f8296dc2f005503
Reviewed-on: https://webrtc-review.googlesource.com/60900
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Original-Commit-Position: refs/heads/master@{#22356}
Reviewed-on: https://webrtc-review.googlesource.com/61661
Cr-Commit-Position: refs/heads/master@{#22438}
This reverts commit 7bb37b884b.
Reason for revert: Breaks downstream projects
Original change's description:
> Reland "Rework rtp packet history"
>
> This is a reland of 6328d7cbbc
>
> Original change's description:
> > Rework rtp packet history
> >
> > This CL rewrites the history from the ground up, but keeps the logic
> > (mostly) intact. It does however lay the groundwork for adding a new
> > mode where TransportFeedback messages can be used to remove packets
> > from the history as we know the remote end has received them.
> >
> > This should both reduce memory usage and make the payload based padding
> > a little more likely to be useful.
> >
> > My tests show a reduction of ca 500-800kB reduction in memory usage per
> > rtp module. So with simulcast and/or fec this will increase. Lossy
> > links and long RTT will use more memory.
> >
> > I've also slightly update the interface to make usage with/without
> > pacer less unintuitive, and avoid making a copy of the entire RTP
> > packet just to find the ssrc and sequence number to put into the pacer.
> >
> > The more aggressive culling is not enabled by default. I will
> > wire that up in a follow-up CL, as there's some interface refactoring
> > required.
> >
> > Bug: webrtc:8975
> > Change-Id: I0c1bb528f32eeed0fb276b4ae77ae3235656980f
> > Reviewed-on: https://webrtc-review.googlesource.com/59441
> > Commit-Queue: Erik Språng <sprang@webrtc.org>
> > Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#22347}
>
> Bug: webrtc:8975
> Change-Id: Ibbdbcc3c13bd58d994ad66f789a95ef9bd9bc19b
> Reviewed-on: https://webrtc-review.googlesource.com/60900
> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
> Commit-Queue: Erik Språng <sprang@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#22356}
TBR=danilchap@webrtc.org,sprang@webrtc.org
Change-Id: Id698f5dbba6f9f871f37501d056e2b8463ebae50
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:8975
Reviewed-on: https://webrtc-review.googlesource.com/61020
Reviewed-by: Oleh Prypin <oprypin@webrtc.org>
Commit-Queue: Oleh Prypin <oprypin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22358}
This is a reland of 6328d7cbbc
Original change's description:
> Rework rtp packet history
>
> This CL rewrites the history from the ground up, but keeps the logic
> (mostly) intact. It does however lay the groundwork for adding a new
> mode where TransportFeedback messages can be used to remove packets
> from the history as we know the remote end has received them.
>
> This should both reduce memory usage and make the payload based padding
> a little more likely to be useful.
>
> My tests show a reduction of ca 500-800kB reduction in memory usage per
> rtp module. So with simulcast and/or fec this will increase. Lossy
> links and long RTT will use more memory.
>
> I've also slightly update the interface to make usage with/without
> pacer less unintuitive, and avoid making a copy of the entire RTP
> packet just to find the ssrc and sequence number to put into the pacer.
>
> The more aggressive culling is not enabled by default. I will
> wire that up in a follow-up CL, as there's some interface refactoring
> required.
>
> Bug: webrtc:8975
> Change-Id: I0c1bb528f32eeed0fb276b4ae77ae3235656980f
> Reviewed-on: https://webrtc-review.googlesource.com/59441
> Commit-Queue: Erik Språng <sprang@webrtc.org>
> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#22347}
Bug: webrtc:8975
Change-Id: Ibbdbcc3c13bd58d994ad66f789a95ef9bd9bc19b
Reviewed-on: https://webrtc-review.googlesource.com/60900
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22356}
This reverts commit 6328d7cbbc.
Reason for revert: Breaks downstream build, due to use of std::pair constructor that some compilers appear to not support yet. See comment.
Original change's description:
> Rework rtp packet history
>
> This CL rewrites the history from the ground up, but keeps the logic
> (mostly) intact. It does however lay the groundwork for adding a new
> mode where TransportFeedback messages can be used to remove packets
> from the history as we know the remote end has received them.
>
> This should both reduce memory usage and make the payload based padding
> a little more likely to be useful.
>
> My tests show a reduction of ca 500-800kB reduction in memory usage per
> rtp module. So with simulcast and/or fec this will increase. Lossy
> links and long RTT will use more memory.
>
> I've also slightly update the interface to make usage with/without
> pacer less unintuitive, and avoid making a copy of the entire RTP
> packet just to find the ssrc and sequence number to put into the pacer.
>
> The more aggressive culling is not enabled by default. I will
> wire that up in a follow-up CL, as there's some interface refactoring
> required.
>
> Bug: webrtc:8975
> Change-Id: I0c1bb528f32eeed0fb276b4ae77ae3235656980f
> Reviewed-on: https://webrtc-review.googlesource.com/59441
> Commit-Queue: Erik Språng <sprang@webrtc.org>
> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#22347}
TBR=danilchap@webrtc.org,sprang@webrtc.org
Change-Id: I2fa7efc7d008c56f7a8f77bc9958c19119f69de8
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:8975
Reviewed-on: https://webrtc-review.googlesource.com/60880
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Commit-Queue: Taylor Brandstetter <deadbeef@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22350}
This CL rewrites the history from the ground up, but keeps the logic
(mostly) intact. It does however lay the groundwork for adding a new
mode where TransportFeedback messages can be used to remove packets
from the history as we know the remote end has received them.
This should both reduce memory usage and make the payload based padding
a little more likely to be useful.
My tests show a reduction of ca 500-800kB reduction in memory usage per
rtp module. So with simulcast and/or fec this will increase. Lossy
links and long RTT will use more memory.
I've also slightly update the interface to make usage with/without
pacer less unintuitive, and avoid making a copy of the entire RTP
packet just to find the ssrc and sequence number to put into the pacer.
The more aggressive culling is not enabled by default. I will
wire that up in a follow-up CL, as there's some interface refactoring
required.
Bug: webrtc:8975
Change-Id: I0c1bb528f32eeed0fb276b4ae77ae3235656980f
Reviewed-on: https://webrtc-review.googlesource.com/59441
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22347}
Pass pointer to application_data from RtpPacketToSend arriving via RtpSender::SendToNetwork through to Transport::SendRtp, in PacketOptions.
Bug: webrtc:8906
Change-Id: Ie75013ed472710f4efcfbcc160e46a6119a1f41d
Reviewed-on: https://webrtc-review.googlesource.com/55600
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Dino Radaković <dinor@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22174}
Changes places where we explicitly construct an Optional to instead use
nullopt or the requisite value type only.
This CL was uploaded by git cl split.
R=danilchap@webrtc.org
Bug: None
Change-Id: Ib4694d183f04d675f2ea66d39661fdffb2a984f1
Reviewed-on: https://webrtc-review.googlesource.com/23604
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Oskar Sundbom <ossu@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20846}
Specifically, I'm moving
safe_compare.h
safe_conversions.h
safe_minmax.h
They shouldn't be part of the API, and moving them to an appropriate
subdirectory of rtc_base/ is a good way to keep track of that.
BUG=webrtc:8445
Change-Id: I458531aeb30bcf4291c4bec3bf22a2fffbf054ff
Reviewed-on: https://webrtc-review.googlesource.com/20860
Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20829}
The RTPFragmentationHeader was used when sending audio using RED
for loss protection. This feature has been deprecated and
gradually removed. This cl removes remnants of support from
the RTP send path.
Bug: webrtc:6471
Change-Id: Ia1249047b09c16f79498827f74c2ce07aa38b8f7
Reviewed-on: https://webrtc-review.googlesource.com/16427
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20473}
This is needed in the general case, now that we aim to support codecs
other than those built-in to WebRTC.
BUG=webrtc:8159
Change-Id: I40a41252bf69ad5d4d0208e3c1e8918da7394706
Reviewed-on: https://webrtc-review.googlesource.com/5380
Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20136}
RtcEventLogImpl no longer hard-codes the way encoding is done. It now relies on RtcEventEncoder for it. This gives two benefits:
1. We can decide between the current encoding and the new encoding (which is still WIP) without code duplication (no need for RtcEventLogImplNew).
2. Encoding is done only when the event needs to be written to a file. This both avoids unnecessary encoding of events which don't end up getting written to a file, as well as is useful for the new, delta-based encoding, which is stateful.
BUG=webrtc:8111
Change-Id: I9517132e5f96b8059002a66fde8d42d3a678c3bb
Reviewed-on: https://webrtc-review.googlesource.com/1365
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20118}