Commit graph

548 commits

Author SHA1 Message Date
Erik Språng
4208a13e65 Removes deprecated InsertPacket/TimeToSendPacket/TimeToSendPadding
The methods are no longer in use, this CL cleans away references and
updates any tests using them.

Bug: webrtc:10633
Change-Id: I2db301e0a021a2f85a8b9a74e409303baba407da
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/150520
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28956}
2019-08-26 11:55:55 +00:00
Niels Möller
d77cc24f67 New const method StreamStatistician::GetStats
And a corresponding struct RtpReceiveStats. This is intended
to hold the information exposed via GetStats, which is quite
different from the stats reported to the peer via RTCP.

This is a preparation for moving ReceiveStatistics out of the
individual receive stream objects, and instead have a shared instance
owned by RtpStreamReceiverController or maybe Call.

Bug: webrtc:10679,chromium:677543
Change-Id: Ibb52ee769516ddc51da109b7f2319405693be5d5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/148982
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28943}
2019-08-23 08:38:59 +00:00
Chen Xing
05f8f1d273 Add helper classes to send and receive abs-capture-time extensions.
This change adds helper classes to manipulate Absolute Capture Time header extensions. Both classes support the "timestamp interpolation" optimization.

Bug: webrtc:10739
Change-Id: I08eff46eb8910842a6dbaa3288b976004fabe1c7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/149801
Commit-Queue: Chen Xing <chxg@google.com>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28936}
2019-08-22 09:09:17 +00:00
Erik Språng
f5815fa6bb Remove WebRTC-Pacer-LegacyPacketReferencing flag and most usage
This flag has been default-off since Jul 24th (m77 branch) and apart
from a bug fixed on Aug 5th, there have been no reports of issues, so
let's remove it and start cleaning away the old code path.

Most of the usage within RtpSender/PacingController and their
respective unit tests are removed with this CL, but there will be
several more to follow.

Bug: webrtc:10633
Change-Id: I1986ccf093434ac8fbd8d6db82a0bb44f50b514e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/149838
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28930}
2019-08-21 16:40:55 +00:00
Erik Språng
54d5d2c75b Rename RtpRtcp::Configuration::media_send_ssrc to local_media_ssrc
The name media_send_ssrc makes less sense when used mostly for the
RtcpReceiver functionality.

The old member is still there and used as a fallback. That will be
cleaned away after downstream code is fixed.

Bug: webrtc:10774
Change-Id: I4ec18db76910f31dfe76bc9b137ffe89220d3fa8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/149836
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Fredrik Solenberg <solenberg@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28923}
2019-08-21 09:45:21 +00:00
Erik Språng
93f518917f Remove some usage of RtpRtcp::SetSSRC()
Bug: webrtc:10774
Change-Id: Ib8fa84f5d70ceb7e715405eae2901bcd7bdfebfe
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/146984
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28895}
2019-08-19 11:11:41 +00:00
Danil Chapovalov
83773b555c Delete deprecated RtpRtcp::CreateRtpRtcp factory
Bug: None
Change-Id: I2ace74c380b89d300a6d0e7cca4766147f33cb1d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/149821
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28890}
2019-08-19 10:07:10 +00:00
Niels Möller
78c56cba00 Delete deprecated version of ReceiveStatistics::Create
Bug: webrtc:10679
Change-Id: I885f38a80c0fe10f1596f33fa95e40a91b23001c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/148445
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28852}
2019-08-14 08:40:09 +00:00
Niels Möller
d78196576d Delete StreamDataCountersCallback from ReceiveStatistics
Bug: webrtc:10679
Change-Id: Ife6a4f598c5b70478244b15fc884f6a424d1505b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/148521
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28841}
2019-08-13 14:47:08 +00:00
Niels Möller
01525f9e03 Delete method StreamStatistician::GetDataCounters
Usage replaced with GetReceiveStreamDataCounters.

Bug: None
Change-Id: Ic5f62ff8a8d33b9eec21657512ba6a0a44635e6d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/148801
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28840}
2019-08-13 13:46:45 +00:00
Niels Möller
58b496b4d8 Let StreamStatistician::GetReceiveStreamDataCounters return counters by value
Tbr: ossu@webrtc.org # Trivial update of audio/ call site
Bug: None
Change-Id: I3763e83f6c0e18be1b696dd7b2ba5841045c9159
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/148820
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28830}
2019-08-12 12:36:00 +00:00
Niels Möller
0d210ee2f6 Change return type of of ReceiveStatistics::Create to unique_ptr.
There are currently three overloads with different number of arguments,
and one of those return a raw pointer. This cl changes that to unique_ptr.
The transition plan is to update those downstream call sites that
currently require a raw pointer to use one of the other overloads.

Bug: webrtc:10679
Change-Id: I234605e99c04a59fbe6f478581ed8edd96a9b05a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/148447
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28804}
2019-08-08 08:19:43 +00:00
Niels Möller
12ebfa69ba Delete RtcpStatisticsCallback from ReceiveStatistics
Update VideoReceiveStream::GetStats to use
StreamStatistician::GetStatistics instead, similarly to the audio
receiver.

Bug: webrtc:10679
Change-Id: I8a701e8a8e921c87895424362dc83500737c916d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/142233
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28793}
2019-08-07 13:33:55 +00:00
Danil Chapovalov
83bbe91398 Delete deprecated rtc_event_log header
Bug: webrtc:10206
Change-Id: I9ed3148843c647372993729b87c0e74741ab540b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/147870
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28791}
2019-08-07 10:58:17 +00:00
Chen Xing
e08648dc70 Add AbsoluteCaptureTime to RtpPacketInfo.
This change stores the optional `AbsoluteCaptureTime` header extension in `RtpPacketInfo` so that we later can consume it in `SourceTracker`.

Bug: webrtc:10739
Change-Id: I975e8863117fcda134535cd49ad71079a7ff38ec
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/148068
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Chen Xing <chxg@google.com>
Cr-Commit-Position: refs/heads/master@{#28790}
2019-08-07 10:12:56 +00:00
Niels Möller
4d7c405599 Split out RtcpCnameCallback from RtcpStatisticsCallback
Cname callback is used only on receive side, and statistics (soon)
only on the send side.

Bug: webrtc:10679
Change-Id: I122e9cafaea93cd0ba75dc955a652d9d4bddc379
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/147867
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28767}
2019-08-06 08:29:57 +00:00
Chen Xing
b56cca3282 Remove the old ContributingSources class.
This change removes the old `ContributingSources` class. It has been replaced by the new `SourceTracker`.

Bug: webrtc:10793
Change-Id: Ibd481cf6584837c46b229b9fc2a071362f07d361
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/147878
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Chen Xing <chxg@google.com>
Cr-Commit-Position: refs/heads/master@{#28756}
2019-08-05 12:30:22 +00:00
Niels Möller
9a9f18a736 Get WebRTC.Video.ReceivedPacketsLostInPercent from ReceiveStatistics
Old way to produce this histogram was based on RtcpStatisticsCallback
reporting sent RTCP messages, with some additional processing by the
ReportBlockStats class. After this cl, to grand average fraction loss
is computed by StreamStatistician, queried by VideoReceiveStream when
the stream is closed down, and passed to ReceiveStatisticsProxy which
produces histograms.

This is a preparation for deleting the RtcpStatisticsCallback from
ReceiveStatistics.

Bug: webrtc:10679
Change-Id: Ie37062c1ae590fd92d3bd0f94c510e135ab93e8d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/147722
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28747}
2019-08-02 12:38:34 +00:00
Erik Språng
60ffc31ae1 Fix potential crash if nack is being processed when media gets disabled
This is a race that can happen if a nack arrives before media is
disabled, but the packet is not processed until after the disabling
is complete.

Bug: webrtc:10633, b/138636698
Change-Id: Ic90462b815163ab58c324e5cdb95c8d199c0b772
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/147277
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28718}
2019-07-31 12:28:04 +00:00
Erik Språng
630443aba2 Remove usage of RTPSender::SetSsrc() in unit tests
That method will be retired, but some new tests managed to sneak in
usage again.

Bug: webrtc:10774
Change-Id: I354b4f5193625c8ddc75d54a252360810c3f60c8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/146983
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28697}
2019-07-29 11:35:21 +00:00
Anton Sukhanov
1a13c8f11a Add option to remove transport sequence number from FEC packet calculation
This is experimental field trial to exclude transport sequence number from FEC packets and should only be used in conjunction with datagram transport. Datagram transport removes transport sequence numbers from RTP packets and uses datagram feedback loop to re-generate RTCP feedback packets, but FEC contorol packets are calculated before sequence number is removed and as a result recovered packets will be corrupt unless we also remove transport sequence number during FEC calculations.

This change is a bit embarrassing, but it was the easiest workaround we found to make FEC work with datagrams. Added TODO to find better long term solution.

TODO(sukhanov): We need to find find better way to implement FEC with datagram transport, probably moving FEC to datagram integration layter. Wealso remove special field trial once we switch datagram path from RTCConfiguration flags to field trial and use the same field trial for FECworkaround.

Bug: webrtc:9719
Change-Id: I1e23c56e3cbaa087460410942fb6c5b4921a763e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/146221
Commit-Queue: Anton Sukhanov <sukhanov@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Bjorn Mellem <mellem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28686}
2019-07-25 22:47:27 +00:00
Steve Anton
2bac7da134 Optimize sending the MID and (R)RID header extensions
These RTP header extensions are used for Unified Plan SDP / BUNDLE and
replace SSRC signaling.

Previously, the RTPSender would attach these header extensions to every
packet when configured. Now, the header extensions will be attached to
every packet until the an RTCP RR is received on that SSRC which
indicates the receiver knows what MID/RID the SSRC is associated with.

This should reduce overhead by 2-4 bytes per packet when the MID header
extension is used and by 4-8 bytes when both header extensions are used.

Bug: webrtc:10078
Change-Id: I5fa3ce28a75224adf11d2792bf4ff8dc76e46d99
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/146480
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28685}
2019-07-25 19:23:14 +00:00
Sebastian Jansson
a72d583271 Fix for potential out of bounds reading in rtcp::RemoteEstimate parser.
packet_size() includes the size of padding, this means that the size
check might incorrectly not trigger even if the payload is empty. In
turn this means that the ReadBigEndian call might read out of bounds
memory.

Refactored the code to reuse the App parsing code more, eliminating
the risk of this particular kind of error.

Bug: chromium:987507
Change-Id: Id8f3e292c3d30460d3cdb551f0a45070fdf8f022
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/146716
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28680}
2019-07-25 10:54:05 +00:00
Sebastian Jansson
97321b687b Adds test for experimental remote estimate SDP negotiation.
Bug: webrtc:10742
Change-Id: I50d9caecda10c504cb4880c37475eeccd22c0855
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/146705
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28670}
2019-07-24 15:29:24 +00:00
Erik Språng
aa59eca891 Move RtpPacketSender and merge it with RtpPacketPacer.
This interface is intended to only handle packet-sending parts of the
paced sender.

See https://webrtc-review.googlesource.com/c/src/+/145212 for context

Bug: webrtc:10809
Change-Id: I93f0b40e1865665c2d436db67021350a0ed0687b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145216
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@{#28662}
2019-07-24 13:28:21 +00:00
Erik Språng
c4f047d627 Make WebRTC-Pacer-LegacyPacketReferencing default off
This makes the code path where packets are directly owned by PacedSender
rather that being temporarily put in the RtpPacketHistory the default.

Functionally, this should essentially be a noop, with only minor timing
differences.

The old code-path will stay around for a short while and then be
removed once we are certain there are no regressions.

Bug: webrtc:10633
Change-Id: Id6360dea48fd0c9d46fde6f5eee93726d4f11d13
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/146212
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28660}
2019-07-24 13:05:56 +00:00
Erik Språng
6cacef2402 Reset packet history on ssrc/seqno reset
If the SSRC of an RTP module is changed at runtime, we may get conflicts
with packets already there. Eg:
* Put seq# 123 in the history for SSRC 1.
* Change the SSRC to 2.
* Send a NACK for seq# 123 from SSRC 2.

Currently, we will respond with the packet belonging to SSRC 1 (and not
if the NACK specifies SSRC 1, to boot).

We can gen similar issues if the sequence number is changed, where
half frame are left in the buffer.

In these cases, the stream is likely being reset so we should just
clear the packet history too.

Bug: webrtc:10794
Change-Id: I28147c2532cf1c78840d4808c4366d4a647541f7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145729
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28658}
2019-07-24 12:52:23 +00:00
Erik Språng
a57711c941 Fix issue with TransmissionOffset using new pacer code path
This CL fixes two issues related to the TransmissionOffset header
extension and the new (not yet active) pacer mode.

Previously capture time (if unset) would be populated when put into the
packet history before entering the pacer. Since the pacer now owns the
packets, this does not occur until packet is actually sent, if at all.
Capture has really nothing to do with the packet history, this should
be set by the RtpSender pre-pacing instead.

Furthermore, for retransmissions the old path would take the capture
time from the original packet, build the RTX-wrapped retransmission and
set the toffset extension of the RTX packet using that captured capture
time. Since RTX packets are now fully built before the pacer, this does
not work, and we need to transfer the capture time from the original to
the RTX packet instead.

Bug: webrtc:10633
Change-Id: I031e8b6cc4ab20fb094dbd46720829b78951e7f9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/146218
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28657}
2019-07-24 11:24:57 +00:00
Sebastian Jansson
e1795f4158 Adds remote estimate RTCP packet.
This adds the RemoteEstimate rtcp packet and wires it up to GoogCC where
it's used to improve congestion controller behavior.

The functionality is negotiated using SDP.

It's added with a field trial that allow disabling the functionality in
case there's any issues.

Bug: webrtc:10742
Change-Id: I1ea8e4216a27cd2b00505c99b42d1e38726256c8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/146602
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28654}
2019-07-24 10:17:26 +00:00
Erik Språng
b9f5989e05 Remove legacy/unused RtpPacketHistory::StorageMode::kStore
The kStoreAndCull mode has been the default since May 3rd 2019:
https://webrtc.googlesource.com/src/+/d2a634447f42d6856656a9fcdb65d5845b736941

Let's clean away the old code.

Bug: webrtc:8975
Change-Id: I5f41b48b68aecce281cbb713e50db60c8a89da9a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/146213
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28650}
2019-07-23 21:20:50 +00:00
Erik Språng
21f2fc9c73 Remove the non-useful rtx payload padding option
This CL removes the field trial left in place as a kill-switch in case
there were any regressions related to selecting payload padding based
on the likelihood of being useful instead of matching size.

It also removes the functionality that was only enabled with the
kill-switch active.

The feature has been default-on since June 23rd 2019:
https://webrtc.googlesource.com/src.git/+/214f54365ec210db76218a35ead66c9ce23e068e

Since we have not observed any issues, let's clean this code up.

Bug: webrtc:8975
Change-Id: I7f49fe354227b3f6566a250332e56b6d70fe2f09
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145821
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28616}
2019-07-19 11:19:18 +00:00
Erik Språng
0f6191d227 RtpSender::GeneratePadding() fixes for new PacedSender code path
This CL fixes two things related to the (not yet active) new
PacedSender code path:

1. Make sure BWE header extensions are properly populated for all
   padding packets.
2. When generating padding, don't hold the RtpSender critsect when
   accessing the RtpPacketHistory as this may lead to a lock order
   inversion.

Bug: webrtc:10633
Change-Id: I8650fbf5dafddbeae61837d2137338163e1c48ce
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145723
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28613}
2019-07-19 10:58:34 +00:00
Mirko Bonadei
a7e3bcebae Reland "Make new pacer padding more like old one"
This reverts commit 11820502b8.

Reason for revert: The culprit was https://webrtc-review.googlesource.com/c/src/+/133169.

Original change's description:
> Revert "Make new pacer padding more like old one"
> 
> 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}

TBR=mbonadei@webrtc.org,sprang@webrtc.org,stefan@webrtc.org

Change-Id: I1fff79d75dc888921c6fbfc7f3980395a67e1c1a
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10633
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145403
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28565}
2019-07-12 17:36:17 +00:00
Mirko Bonadei
3b67672af7 Reland "Pass RtpRtcp::Configuration to RtcpReceiver ctor and initialize ssrcs"
This reverts commit 4d68314ec8.

Reason for revert: The culprit was https://webrtc-review.googlesource.com/c/src/+/133169.

Original change's description:
> Revert "Pass RtpRtcp::Configuration to RtcpReceiver ctor and initialize ssrcs"
> 
> This reverts commit 741b96b175.
> 
> Reason for revert: Speculative revert (some perf test are failing)
> 
> Original change's description:
> > Pass RtpRtcp::Configuration to RtcpReceiver ctor and initialize ssrcs
> > 
> > Bug: webrtc:10774
> > Change-Id: Iaae717ed1b7373d5cb2246e3ba92fc6ace422b41
> > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145206
> > Commit-Queue: Erik Språng <sprang@webrtc.org>
> > Reviewed-by: Åsa Persson <asapersson@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#28536}
> 
> TBR=asapersson@webrtc.org,sprang@webrtc.org
> 
> Change-Id: I877c1e4c025717c3392bce96ef31591dc1ef5f0b
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: webrtc:10774
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145325
> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#28551}

TBR=mbonadei@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org

Change-Id: Ib59a7f716a58ca8082fe69020c56054e21646cdf
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10774
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145402
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28564}
2019-07-12 17:35:13 +00:00
Mirko Bonadei
999a72a401 Reland "Optimize PacketRouter/RTPSender interactions."
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}
2019-07-12 17:33:52 +00:00
Mirko Bonadei
9b1f24d552 Reland "Add ability to set RTCP sender ssrc at construction time"
This reverts commit 8b3e4e2d11.

Reason for revert: The culprit was https://webrtc-review.googlesource.com/c/src/+/133169.

Original change's description:
> Revert "Reland "Add ability to set RTCP sender ssrc at construction time""
> 
> This reverts commit 6f420e4248.
> 
> Reason for revert: Speculative revert (some perf test are failing)
> 
> Original change's description:
> > Reland "Add ability to set RTCP sender ssrc at construction time"
> >
> > This is a reland of 94c58fd815
> >
> > Patch set 1 is the original CL.
> > Patch set 2 introduced a trivial fix. In RtcpSender::SetSSRC(), check
> > if either current SSRC is 0 or if the SSRC is identical to the current
> > one. If so, don't schedule an early report.
> > This prevents a regression in which audio jitter became too low(?)
> >
> > Original change's description:
> > > Add ability to set RTCP sender ssrc at construction time
> > >
> > > Bug: webrtc:10774
> > > Change-Id: Iaf5857e24359e9795434bcd0cdbe1658a2f9f5d3
> > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144632
> > > Reviewed-by: Åsa Persson <asapersson@webrtc.org>
> > > Commit-Queue: Erik Språng <sprang@webrtc.org>
> > > Cr-Commit-Position: refs/heads/master@{#28506}
> >
> > Bug: webrtc:10774
> > Change-Id: I103dfa48719aa41d6ab633cdac8b3a5c46b54843
> > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144565
> > Commit-Queue: Erik Språng <sprang@webrtc.org>
> > Reviewed-by: Åsa Persson <asapersson@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#28520}
> 
> TBR=asapersson@webrtc.org,sprang@webrtc.org,ilnik@webrtc.org
> 
> # Not skipping CQ checks because original CL landed > 1 day ago.
> 
> Bug: webrtc:10774
> Change-Id: I39238d942b2bbe0a9c8ca752387a35ed9dd70650
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145327
> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#28555}

TBR=mbonadei@webrtc.org,ilnik@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org

Change-Id: I2e5c17e8edfd938424f901222158643baa04866e
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10774
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145400
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28562}
2019-07-12 17:32:43 +00:00
Mirko Bonadei
8b3e4e2d11 Revert "Reland "Add ability to set RTCP sender ssrc at construction time""
This reverts commit 6f420e4248.

Reason for revert: Speculative revert (some perf test are failing)

Original change's description:
> Reland "Add ability to set RTCP sender ssrc at construction time"
>
> This is a reland of 94c58fd815
>
> Patch set 1 is the original CL.
> Patch set 2 introduced a trivial fix. In RtcpSender::SetSSRC(), check
> if either current SSRC is 0 or if the SSRC is identical to the current
> one. If so, don't schedule an early report.
> This prevents a regression in which audio jitter became too low(?)
>
> Original change's description:
> > Add ability to set RTCP sender ssrc at construction time
> >
> > Bug: webrtc:10774
> > Change-Id: Iaf5857e24359e9795434bcd0cdbe1658a2f9f5d3
> > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144632
> > Reviewed-by: Åsa Persson <asapersson@webrtc.org>
> > Commit-Queue: Erik Språng <sprang@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#28506}
>
> Bug: webrtc:10774
> Change-Id: I103dfa48719aa41d6ab633cdac8b3a5c46b54843
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144565
> Commit-Queue: Erik Språng <sprang@webrtc.org>
> Reviewed-by: Åsa Persson <asapersson@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#28520}

TBR=asapersson@webrtc.org,sprang@webrtc.org,ilnik@webrtc.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: webrtc:10774
Change-Id: I39238d942b2bbe0a9c8ca752387a35ed9dd70650
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145327
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28555}
2019-07-12 10:09:07 +00:00
Mirko Bonadei
66147e892d 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}
2019-07-12 08:37:49 +00:00
Mirko Bonadei
4d68314ec8 Revert "Pass RtpRtcp::Configuration to RtcpReceiver ctor and initialize ssrcs"
This reverts commit 741b96b175.

Reason for revert: Speculative revert (some perf test are failing)

Original change's description:
> Pass RtpRtcp::Configuration to RtcpReceiver ctor and initialize ssrcs
> 
> Bug: webrtc:10774
> Change-Id: Iaae717ed1b7373d5cb2246e3ba92fc6ace422b41
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145206
> Commit-Queue: Erik Språng <sprang@webrtc.org>
> Reviewed-by: Åsa Persson <asapersson@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#28536}

TBR=asapersson@webrtc.org,sprang@webrtc.org

Change-Id: I877c1e4c025717c3392bce96ef31591dc1ef5f0b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10774
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145325
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28551}
2019-07-12 08:36:48 +00:00
Mirko Bonadei
11820502b8 Revert "Make new pacer padding more like old one"
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}
2019-07-12 08:33:35 +00:00
Qingsi Wang
6ff9ebd070 Revert "Refactor FEC code to use COW buffers"
This reverts commit 7325bc3917.

Reason for revert: FecTest.UlpfecTest is consistently failing.

Original change's description:
> Refactor FEC code to use COW buffers
> 
> This refactoring helps to reduce unnecessary memcpy calls on the receive
> side.
> 
> This CL is the first stage of refactoring: it only replaces
> |uint8 data[IP_PACKET_SIZE]| with |rtc::CopyOnWriteBuffer data| and does
> necessary changes.
> 
> A follow-up CL will remove length field of the Packet class.
> 
> 
> Bug: webrtc:10750
> Change-Id: Ie233da83ff33f6370f511955e4c65d59522389a7
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144881
> Reviewed-by: Artem Titov <titovartem@webrtc.org>
> Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#28539}

TBR=brandtr@webrtc.org,ilnik@webrtc.org,asapersson@webrtc.org,stefan@webrtc.org,titovartem@webrtc.org

Change-Id: I07c34256a76174f09a0d27eacbae6488e66f4b43
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10750
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145340
Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28545}
2019-07-11 19:55:28 +00:00
Qingsi Wang
0f0668e328 Revert "Cleanup FEC code after refactoring"
This reverts commit 4e5a41a086.

Reason for revert: FecTest.UlpfecTest is consistently failing after the refactoring.

Original change's description:
> Cleanup FEC code after refactoring
> 
> This CL removes length field from Packet class, as COW buffer data
> already has length.
> 
> Bug: webrtc:10750
> Change-Id: I5c2a857b72007e82e819e7fa5f5aeb2e074730fa
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144942
> Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Reviewed-by: Artem Titov <titovartem@webrtc.org>
> Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#28540}

TBR=brandtr@webrtc.org,ilnik@webrtc.org,asapersson@webrtc.org,stefan@webrtc.org,titovartem@webrtc.org

Change-Id: I0adafb513cc151acc510feaef04ef14587b1cb8d
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10750
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145310
Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
Commit-Queue: Qingsi Wang <qingsi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28544}
2019-07-11 19:51:17 +00:00
Ilya Nikolaevskiy
4e5a41a086 Cleanup FEC code after refactoring
This CL removes length field from Packet class, as COW buffer data
already has length.

Bug: webrtc:10750
Change-Id: I5c2a857b72007e82e819e7fa5f5aeb2e074730fa
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144942
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28540}
2019-07-11 15:00:29 +00:00
Ilya Nikolaevskiy
7325bc3917 Refactor FEC code to use COW buffers
This refactoring helps to reduce unnecessary memcpy calls on the receive
side.

This CL is the first stage of refactoring: it only replaces
|uint8 data[IP_PACKET_SIZE]| with |rtc::CopyOnWriteBuffer data| and does
necessary changes.

A follow-up CL will remove length field of the Packet class.


Bug: webrtc:10750
Change-Id: Ie233da83ff33f6370f511955e4c65d59522389a7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144881
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28539}
2019-07-11 14:53:39 +00:00
Erik Språng
bb7727211c 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}
2019-07-11 14:44:09 +00:00
Erik Språng
741b96b175 Pass RtpRtcp::Configuration to RtcpReceiver ctor and initialize ssrcs
Bug: webrtc:10774
Change-Id: Iaae717ed1b7373d5cb2246e3ba92fc6ace422b41
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145206
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28536}
2019-07-11 12:39:17 +00:00
Erik Språng
6f129b3b76 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}
2019-07-11 11:52:29 +00:00
Anton Sukhanov
ff25b873bf Implements method on RtpPacket to extract extension.
Removing extension will be used in DatagramDtlsAdaptor to remove transport sequence number to avoid having both datagram and RTP feedback loops. The sequence number will be stored in temporary map and used to re-create RTCP fdeedback packed when we receive datagram ACK. It would enable integration of Datagram transport without any changes in the upper layers of RTP stack. Note that Datagram adaptor changes will be implemented in a separate changelist.

In this change:
- Implement method to remove extension by rebuilding entire packet without given extension type.
- Fails if extension is not registered or not set.
- Unit test

Bug: webrtc:9719
Change-Id: I9d3811d5d97fadde5a294d5da643b2ebc6a8196e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145100
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Bjorn Mellem <mellem@webrtc.org>
Commit-Queue: Anton Sukhanov <sukhanov@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28530}
2019-07-10 17:35:43 +00:00
Erik Språng
6f420e4248 Reland "Add ability to set RTCP sender ssrc at construction time"
This is a reland of 94c58fd815

Patch set 1 is the original CL.
Patch set 2 introduced a trivial fix. In RtcpSender::SetSSRC(), check
if either current SSRC is 0 or if the SSRC is identical to the current
one. If so, don't schedule an early report.
This prevents a regression in which audio jitter became too low(?)

Original change's description:
> Add ability to set RTCP sender ssrc at construction time
>
> Bug: webrtc:10774
> Change-Id: Iaf5857e24359e9795434bcd0cdbe1658a2f9f5d3
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144632
> Reviewed-by: Åsa Persson <asapersson@webrtc.org>
> Commit-Queue: Erik Språng <sprang@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#28506}

Bug: webrtc:10774
Change-Id: I103dfa48719aa41d6ab633cdac8b3a5c46b54843
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144565
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28520}
2019-07-09 20:20:41 +00:00
Ilya Nikolaevskiy
34462f5dc3 Revert "Add ability to set RTCP sender ssrc at construction time"
This reverts commit 94c58fd815.

Reason for revert: Speculative revert, as it looks like this one broke IOS debug perf bots: https://ci.chromium.org/p/webrtc-internal/builders/ci/iOS64%20Debug/18901

Original change's description:
> Add ability to set RTCP sender ssrc at construction time
> 
> Bug: webrtc:10774
> Change-Id: Iaf5857e24359e9795434bcd0cdbe1658a2f9f5d3
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144632
> Reviewed-by: Åsa Persson <asapersson@webrtc.org>
> Commit-Queue: Erik Språng <sprang@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#28506}

TBR=asapersson@webrtc.org,sprang@webrtc.org

Change-Id: I3f377ca1c84a7448675e5d022cb2f86f9630dbaf
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10774
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144564
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28508}
2019-07-08 16:21:50 +00:00