23 Commits

Author SHA1 Message Date
philipel
c3b3f7a8aa Reland of Log created probe clusters to RtcEventLog. (patchset #1 id:1 of https://codereview.chromium.org/2781853002/ )
Reason for revert:
Fix

Original issue's description:
> Revert of Log created probe clusters to RtcEventLog. (patchset #1 id:1 of https://codereview.chromium.org/2783693002/ )
>
> Reason for revert:
> Break bots.
>
> Original issue's description:
...
>
> TBR=terelius@webrtc.org,stefan@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6984
>
> Review-Url: https://codereview.webrtc.org/2781853002
> Cr-Commit-Position: refs/heads/master@{#17425}
> Committed: e3b354bdfa

TBR=terelius@webrtc.org,stefan@webrtc.org
BUG=webrtc:6984

Review-Url: https://codereview.webrtc.org/2779893004
Cr-Commit-Position: refs/heads/master@{#17433}
2017-03-29 08:23:13 +00:00
philipel
e3b354bdfa Revert of Log created probe clusters to RtcEventLog. (patchset #1 id:1 of https://codereview.chromium.org/2783693002/ )
Reason for revert:
Break bots.

Original issue's description:
> Reland of Log created probe clusters to RtcEventLog. (patchset #1 id:1 of https://codereview.chromium.org/2775273003/ )
>
> Reason for revert:
> Speculative reland since it apparently built on https://build.chromium.org/p/chromium.webrtc.fyi/builders/Mac%20Builder/builds/22852
>
> Original issue's description:
> > Revert of Log created probe clusters to RtcEventLog. (patchset #3 id:40001 of https://codereview.chromium.org/2776073003/ )
> >
> > Reason for revert:
> > Break build bots.
> >
> > Original issue's description:
> > > Log created probe clusters to RtcEventLog.
> > >
> > > BUG=webrtc:6984
> > >
> > > Review-Url: https://codereview.webrtc.org/2776073003
> > > Cr-Commit-Position: refs/heads/master@{#17413}
> > > Committed: bb9e6edc32
> >
> > TBR=terelius@webrtc.org,stefan@webrtc.org
> > # Skipping CQ checks because original CL landed less than 1 days ago.
> > NOPRESUBMIT=true
> > NOTREECHECKS=true
> > NOTRY=true
> > BUG=webrtc:6984
> >
> > Review-Url: https://codereview.webrtc.org/2775273003
> > Cr-Commit-Position: refs/heads/master@{#17415}
> > Committed: 7ac5c32db2
>
> TBR=terelius@webrtc.org,stefan@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6984
>
> Review-Url: https://codereview.webrtc.org/2783693002
> Cr-Commit-Position: refs/heads/master@{#17424}
> Committed: 2a63160b95

TBR=terelius@webrtc.org,stefan@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:6984

Review-Url: https://codereview.webrtc.org/2781853002
Cr-Commit-Position: refs/heads/master@{#17425}
2017-03-28 14:59:51 +00:00
philipel
2a63160b95 Reland of Log created probe clusters to RtcEventLog. (patchset #1 id:1 of https://codereview.chromium.org/2775273003/ )
Reason for revert:
Speculative reland since it apparently built on https://build.chromium.org/p/chromium.webrtc.fyi/builders/Mac%20Builder/builds/22852

Original issue's description:
> Revert of Log created probe clusters to RtcEventLog. (patchset #3 id:40001 of https://codereview.chromium.org/2776073003/ )
>
> Reason for revert:
> Break build bots.
>
> Original issue's description:
> > Log created probe clusters to RtcEventLog.
> >
> > BUG=webrtc:6984
> >
> > Review-Url: https://codereview.webrtc.org/2776073003
> > Cr-Commit-Position: refs/heads/master@{#17413}
> > Committed: bb9e6edc32
>
> TBR=terelius@webrtc.org,stefan@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6984
>
> Review-Url: https://codereview.webrtc.org/2775273003
> Cr-Commit-Position: refs/heads/master@{#17415}
> Committed: 7ac5c32db2

TBR=terelius@webrtc.org,stefan@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:6984

Review-Url: https://codereview.webrtc.org/2783693002
Cr-Commit-Position: refs/heads/master@{#17424}
2017-03-28 14:42:39 +00:00
philipel
7ac5c32db2 Revert of Log created probe clusters to RtcEventLog. (patchset #3 id:40001 of https://codereview.chromium.org/2776073003/ )
Reason for revert:
Break build bots.

Original issue's description:
> Log created probe clusters to RtcEventLog.
>
> BUG=webrtc:6984
>
> Review-Url: https://codereview.webrtc.org/2776073003
> Cr-Commit-Position: refs/heads/master@{#17413}
> Committed: bb9e6edc32

TBR=terelius@webrtc.org,stefan@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:6984

Review-Url: https://codereview.webrtc.org/2775273003
Cr-Commit-Position: refs/heads/master@{#17415}
2017-03-28 11:20:56 +00:00
philipel
bb9e6edc32 Log created probe clusters to RtcEventLog.
BUG=webrtc:6984

Review-Url: https://codereview.webrtc.org/2776073003
Cr-Commit-Position: refs/heads/master@{#17413}
2017-03-28 11:12:26 +00:00
philipel
c7bf32a110 Propagate packet pacing information to SenTimeHistory.
In order to not make this CL too large I have broken it down into at least two steps. In this CL we only propagate the pacing information part of the way:

webrtc::PacedSender::Process                        <--- propagate from here
webrtc::PacedSender::SendPacket
webrtc::PacketRouter::TimeToSendPacket
webrtc::ModuleRtpRtcpImpl::TimeToSendPacket         <--- to here
webrtc::RTPSender::TimeToSendPacket
webrtc::RTPSender::PrepareAndSendPacket
webrtc::RTPSender::AddPacketToTransportFeedback
webrtc::TransportFeedbackAdapter::AddPacket
webrtc::SendTimeHistory::AddAndRemoveOld            <--- goal is to propagte it here

BUG=webrtc:6822

Review-Url: https://codereview.webrtc.org/2628563003
Cr-Commit-Position: refs/heads/master@{#16664}
2017-02-17 11:59:43 +00:00
Stefan Holmer
0e3213a18c Fix bug in BitrateProber where an old probe added at a high bitrate will stay active indefinitely if the bandwidth estimate becomes too low to probe at that bitrate.
This is solved by timing out probe clusters after 5 seconds of being initiated.

BUG=webrtc:7043
R=terelius@webrtc.org

Review-Url: https://codereview.webrtc.org/2681733004 .
Cr-Commit-Position: refs/heads/master@{#16495}
2017-02-08 14:19:05 +00:00
sergeyu
6dbbd89f18 Fix BitrateProber to match the requested bitrate more precisely
Previously BirateProber was calculating delay between probes based on
the size of the previous probe. Because of that the actual sent bitrate
can deviate greatly from the target value. With this change it uses
total number of bytes in the cluster to estimate delay before each
probe.

BUG=webrtc:6952

Review-Url: https://codereview.webrtc.org/2613543003
Cr-Original-Commit-Position: refs/heads/master@{#15971}
Committed: 599c5011e7
Review-Url: https://codereview.webrtc.org/2613543003
Cr-Commit-Position: refs/heads/master@{#16127}
2017-01-17 23:07:59 +00:00
sprang
ebfbc8ebfd Revert of Fix BitrateProber to match the requested bitrate more precisely (patchset #4 id:60001 of https://codereview.webrtc.org/2613543003/ )
Reason for revert:
Speculative revert.
Linux memcheck bot started failing a lot at the time of this cl. Doesn't look related at first glance, but we don't have another lead yet.

Original issue's description:
> Fix BitrateProber to match the requested bitrate more precisely
>
> Previously BirateProber was calculating delay between probes based on
> the size of the previous probe. Because of that the actual sent bitrate
> can deviate greatly from the target value. With this change it uses
> total number of bytes in the cluster to estimate delay before each
> probe.
>
> BUG=webrtc:6952
>
> Review-Url: https://codereview.webrtc.org/2613543003
> Cr-Commit-Position: refs/heads/master@{#15971}
> Committed: 599c5011e7

TBR=philipel@webrtc.org,stefan@webrtc.org,sergeyu@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:6952

Review-Url: https://codereview.webrtc.org/2626473004
Cr-Commit-Position: refs/heads/master@{#15979}
2017-01-10 09:27:28 +00:00
sergeyu
599c5011e7 Fix BitrateProber to match the requested bitrate more precisely
Previously BirateProber was calculating delay between probes based on
the size of the previous probe. Because of that the actual sent bitrate
can deviate greatly from the target value. With this change it uses
total number of bytes in the cluster to estimate delay before each
probe.

BUG=webrtc:6952

Review-Url: https://codereview.webrtc.org/2613543003
Cr-Commit-Position: refs/heads/master@{#15971}
2017-01-09 20:38:05 +00:00
philipel
fd58b61068 BitrateProber::CreateProbeCluster now only accept one parameter (bitrate_bps).
Instead of having to specify a bitrate and how many packets to use,
the BitrateProber will now use the bitrate to calculate how many
bytes it will use to probe that bitrate instead.

For now, |kMinProbeDurationMs| is set to 15 ms which means that probing
at 1900 kbps will result in 1900/8*0.015 = 3.5 kB used. Since we can
expect packets to be smaller at the beginning of a stream (500 to 700
bytes) this will result in 7 to 5 packets sent for that bitrate, and
should work very similar to how the current initial probing works.

A minimum of 5 packets are always sent.

BUG=webrtc:6822

Review-Url: https://codereview.webrtc.org/2609113003
Cr-Commit-Position: refs/heads/master@{#15899}
2017-01-04 15:05:25 +00:00
isheriff
cc5903e15f BitrateProber: Support higher probing bitrates
Currently, BitrateProber does not scale higher than 2 Mbps to 6 Mbps. The actual
number is dependent on the size of the last packet. If a packet of around 250
bytes is used for probing, it fails above 2 Mbps.

BitrateProber now provides a recommendation on probe size instead of a
packet size. PacedSender utilizes this to decide on the number of packets
per probe. This enables BitrateProber to scale up-to higher bitrates.

Tests with chromoting show it stalls at about 10 Mbps (perhaps due to the
limitation on the simulation pipeline to deliver packets).

BUG=webrtc:6332

Review-Url: https://codereview.webrtc.org/2347023002
Cr-Commit-Position: refs/heads/master@{#14503}
2016-10-04 15:29:45 +00:00
philipel
eb680eac5d CongestionController::SetBweBitrates may now trigger probing.
BUG=webrtc:5859
R=stefan@webrtc.org

Review URL: https://codereview.webrtc.org/2246403002 .

Cr-Commit-Position: refs/heads/master@{#13791}
2016-08-17 09:12:14 +00:00
philipel
4a1ec1e639 Added ProbeBitrate(bitrate_bps, num_probes) to BitrateProber.
Also some minor cleanup.

BUG=webrtc:5859

Review-Url: https://codereview.webrtc.org/2243823002
Cr-Commit-Position: refs/heads/master@{#13760}
2016-08-15 18:51:12 +00:00
Irfan Sheriff
6e11efa6dc Bitrate prober and paced sender improvements
- Removes unnecessary casts to compute timedelta.
- Renames ProbingState for clarity. This should help when we probe mid-call.
- Enables probing by default to avoid checking on each incoming packet.
- Removes duplicate probing state tracking in paced sender. These duplicate
  states were conflicting at times.
- Removes passing through packets for bug 5307 which seems long fixed.
- Cleanup handling of time_last_send_ms and avoid side effects of changing
  probing state at TimeUntilNextProbe().
- Clear cluster data when probing is restarted to avoid having old data after a reset.

BUG=5859
R=stefan@webrtc.org

Review URL: https://codereview.webrtc.org/2182603002 .

Cr-Commit-Position: refs/heads/master@{#13612}
2016-08-02 19:57:46 +00:00
philipel
29dca2ce95 Added cluster id to PacedSender::Callback::TimeToSendPacket.
Also added cluster id to paced_sender::Packet and set the cluster id of
the probing packet that is about to be sent.

BUG=webrtc:5859
R=danilchap@webrtc.org, stefan@webrtc.org

Review URL: https://codereview.webrtc.org/1962303002 .

Cr-Commit-Position: refs/heads/master@{#12718}
2016-05-13 09:13:16 +00:00
philipel
dd3248665d Bitrate prober now keep track of probing cluster id.
BUG=webrtc:5859
R=stefan@webrtc.org

Review URL: https://codereview.webrtc.org/1946173002 .

Cr-Commit-Position: refs/heads/master@{#12644}
2016-05-06 15:06:24 +00:00
Per
28a44564c9 Revert "Revert of Remove SendPacer from ViEEncoder (patchset #13 id:240001 of https://codereview.webrtc.org/1917793002/ )"
This reverts commit 825eb58d59940a4c3c9837595c4b3b07059c93ca.

This Relands the cl reviewed in https://codereview.webrtc.org/1917793002/

patchset #1 is a pure reland.
patchset #2 fix an overflow in BitrateProber that caused WebRtcVideoChannel2BaseTest.TwoStreamsSendAndReceive to fail.

Original cl description:
Remove SendPacer from ViEEncoder
This CL moves the logic where the ViEEncoder pause if the pacer is full to the BitrateController. If the queue is full, the controller reports a bitrate of zero to  Call (and BitrateAllocator)

R=stefan@webrtc.org
TBR=mflodman@webrtc.org

BUG=webrtc:5687

Review URL: https://codereview.webrtc.org/1947873002 .

Cr-Commit-Position: refs/heads/master@{#12630}
2016-05-04 15:13:06 +00:00
Peter Boström
0453ef857f Prevent busy-looping PacedSender on small packets.
Skip accounting for small packets and suspend the prober if no
large-enough packets have been sent for some time. This especially seems
to have triggered in audio-only calls where all packets are too small,
making TimeUntilNextProbe return 0 forever, causing the module process
thread to wake up forever.

BUG=webrtc:5506
R=stefan@webrtc.org

Review URL: https://codereview.webrtc.org/1688703002 .

Cr-Commit-Position: refs/heads/master@{#11634}
2016-02-16 15:23:16 +00:00
sprang
ebbf8a805b Make sure rtp_rtcp module doesn't directly reference anything in the pacer module, and remove build dependencies on it.
BUG=

Review URL: https://codereview.webrtc.org/1350163005

Cr-Commit-Position: refs/heads/master@{#10005}
2015-09-21 22:11:18 +00:00
stefan
fe0c90501b Improve probing by ignoring small packets which otherwise break the mechanism.
These small packets are common for H.264 where the first packet of an IDR
contains the parameter sets.

BUG=4806

Review URL: https://codereview.webrtc.org/1221943002

Cr-Commit-Position: refs/heads/master@{#9639}
2015-07-27 10:13:35 +00:00
Stefan Holmer
01b488831b Use padding to achieve bitrate probing if the initial key frame has too few packets.
BUG=4350
R=mflodman@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/44879004

Cr-Commit-Position: refs/heads/master@{#9134}
2015-05-05 08:21:32 +00:00
stefan@webrtc.org
82462aade0 Adds support for sending first set of packets at increasingly higher bitrates to probe the link and faster ramp up to a high bitrate.
Also wires up a finch experiment to control this.

R=mflodman@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/30639004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7505 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-10-23 11:57:05 +00:00