This improves self-fairness and competing for resources with TCP flows.
BUG=4711
Review URL: https://codereview.webrtc.org/1151603008
Cr-Commit-Position: refs/heads/master@{#9545}
We have two histograms today that trigger on large jumps in either platform reported stream delays (WebRTC.Audio.PlatformReportedStreamDelayJump) or the system delay in the AEC (WebRTC.Audio.AecSystemDelayJump). The latter is the internal buffer size in the AEC.
The sizes of such jumps are of relevance since it can harm the AEC and even put it in a complete failure state. It is hard, not to say impossible, to tell how frequent it is.
Therefore, two complementary histograms are added; number of jumps in each metric.
This way we get a quick way to determine how often a jump occurs in general and also how frequent it is within a call.
This is solved by adding a counter for each metric.
The counter is activated either upon an event trigger or if we know for sure when the AEC is running.
Unfortunately, we can't rely on the destructor at the end of a call so we add a public API for the user to take on the action of calling it at the end of a call.
Tested locally by building ToT chromium including changes and three triggered jumps (200, 50 and 60 ms).
The stats picked up the 60 and 200 ms jumps as expected.
BUG=488124
R=asapersson@webrtc.org, pbos@webrtc.org
Review URL: https://codereview.webrtc.org/1229443003.
Cr-Commit-Position: refs/heads/master@{#9544}
Bugs found by manual inspection of code, not by fuzzing or packet
replays. At least one of them confirmed by local fuzzing.
BUG=chromium:496094, webrtc:4771
R=stefan@webrtc.org
Review URL: https://codereview.webrtc.org/1182793002
Cr-Commit-Position: refs/heads/master@{#9542}
The UMA histograms WebRTC.Audio.AecSystemDelayJump and WebRTC.Audio.PlatformReportedStreamDelayJump triggers if the jump is larger than kMinDiffDelayMs.
Especially WebRTC.Audio.AecSystemDelayJump is sensitive around 50 ms differences, since the granularity is 4 ms and we can get a significant amount of hits at 52 ms.
Therefore, a change to 60 ms can make the logging more robust. The effect of not logging jumps in the interval 50-60 ms is of minor importance since they are not likely to affect the AEC performance. It's when we get values from ~100 ms and above that we should be worried.
Tested with a local ToT Chromium build where 52, 64 and 200 ms jumps were forced.
BUG=488124
TBR=henrik.lundin@webrtc.org
Review URL: https://codereview.webrtc.org/1208313003.
Cr-Commit-Position: refs/heads/master@{#9540}
This fixes compilation errors as the following:
error: constructor must explicitly initialize the const member
BUG=506663
R=aluebs@webrtc.org, tommi@webrtc.org
Signed-off-by: Eduardo Lima (Etrunko) <eduardo.lima@intel.com>
Review URL: https://codereview.webrtc.org/1222233002
Cr-Commit-Position: refs/heads/master@{#9538}
This CL adds an API to the metrics observer interface to report negotiated
ciphers for WebRTC sessions. This can be used from Chromium for UMA metrics
later to get an idea which cipher suites are used by clients (e.g. compare
the use of DTLS 1.0 / 1.2).
BUG=428343
Review URL: https://codereview.webrtc.org/1156143005
Cr-Commit-Position: refs/heads/master@{#9537}
They make it possible to send bandwidth estimation info from decoder
to encoder even if they are separate objects (which we want them to be
because multithreading).
R=henrik.lundin@webrtc.org
Review URL: https://codereview.webrtc.org/1208923002.
Cr-Commit-Position: refs/heads/master@{#9535}
Reduces number of running (high-priority) threads, even though the
thread was practically blocked all the time.
Also adding DCHECKs to make sure we're not trying to use certain
sender-only methods on receivers and vice versa.
BUG=webrtc:1675, webrtc:1695
R=stefan@webrtc.org
Review URL: https://codereview.webrtc.org/1222193003
Cr-Commit-Position: refs/heads/master@{#9534}
Regression test for enforcing that frames with repeated or old NTP
timestamps are dropped.
BUG=chromium:480953, webrtc:4615
R=stefan@webrtc.org
Review URL: https://codereview.webrtc.org/1220193002
Cr-Commit-Position: refs/heads/master@{#9533}
Using random "garbage" bytes makes testing harder for no good reason.
Any deterministic sequence would do, but we choose all zeros because
it's simple.
Review URL: https://codereview.webrtc.org/1211243014
Cr-Commit-Position: refs/heads/master@{#9532}
We use this Config struct for enabling/disabling the delay agnostic
AEC. This change renames it to DelayAgnostic for readability reasons.
NOTE: The logic is reversed in this CL. The old ReportedDelay config
turned DA-AEC off, while the new DelayAgnostic turns it on.
The old Config is kept in parallel with the new during a transition
period. This is to avoid problems with API breakages. During this
period, ReportedDelay is disabled or DelayAgnostic is enabled, DA-AEC
is engaged in APM.
BUG=webrtc:4651
R=bjornv@webrtc.org, tommi@webrtc.org
Review URL: https://codereview.webrtc.org/1211053006
Cr-Commit-Position: refs/heads/master@{#9531}
Clang warns if there are missing braces around a subobject
initializer. The most common idiom that triggers this is:
STRUCT s = {0};
if the first field of STRUCT is itself a struct. This can
be more simply written as:
STRUCT s = {};
which also prevents the warning from firing.
Other instances of the warning have been fixed by adding
braces where appropriate.
BUG=505297
TBR=jiayl@webrtc.org
Review URL: https://codereview.webrtc.org/1216353002
Cr-Commit-Position: refs/heads/master@{#9529}
Prevents OOB reads on truncated FU-A NAL units, StapA headers and past
truncation just after StapA headers.
BUG=webrtc:4771
R=stefan@webrtc.org
Review URL: https://codereview.webrtc.org/1218023003
Cr-Commit-Position: refs/heads/master@{#9522}
in the ACMDump. The ACMDump interface itself is not updated, so there
is no way (yet) to actually write the configuration fields.
BUG=
Review URL: https://codereview.webrtc.org/1202833003
Cr-Commit-Position: refs/heads/master@{#9519}
This will hurt Linux x64 perf, but we think that's a compiler bug and we're
willing to take the hit for the better clarity of the code sans cast as well as
the better Windows perf. Hopefully eventually the compiler will improve.
BUG=504813
TEST=none
TBR=andrew
Review URL: https://codereview.webrtc.org/1215053002
Cr-Commit-Position: refs/heads/master@{#9516}
Sudden platform system delay jumps can hurt AEC and we have no stats that monitor these jumps. How often do they occur, and when they are reported are they accurate?
This CL logs all jumps in both the reported and actual delay.
The histogram has been tested with a chromium build where a fake jump of 200 ms was applied after 5 seconds and it was registered correctly in chrome://histograms
BUG=488124
R=henrik.lundin@webrtc.org, peah@webrtc.org
Review URL: https://codereview.webrtc.org/1213733004.
Cr-Commit-Position: refs/heads/master@{#9513}
All ownership is now handled by the top-level OWNERS file in
modules/audio_coding.
NOTRY=True
Review URL: https://codereview.webrtc.org/1212133005
Cr-Commit-Position: refs/heads/master@{#9512}
This change introduces the sub-class ChangeLogger in AudioCodingModuleImpl. The class writes values to the named UMA histogram, but only if the value has changed since the last time (and always for the first call). This is to avoid the problem with audio codecs being registered but never used. Before this change, these codecs' bitrate was also logged, even though they were never used.
BUG=chromium:488124
R=kwiberg@webrtc.org
Review URL: https://codereview.webrtc.org/1203803004
Cr-Commit-Position: refs/heads/master@{#9506}
Normally the RTP data channel is capped at 30kbps, but by mangling the
SDP string, one could get around this limitation. With this fix,
SdpDeserialize will return an error if it detects this condition.
BUG=280726
R=pthatcher@webrtc.org
Review URL: https://codereview.webrtc.org/1196403004.
Cr-Commit-Position: refs/heads/master@{#9499}
This CL should not change any visible behaviour. It does the following:
* Extract GLES rendering into separate class GlRectDrawer. This class is also needed for future video encode with OES texture input.
* Clean up current ScalingType -> display size calculation and introduce new SCALE_ASPECT_BALANCED (b/21735609) and remove unused SCALE_FILL.
* Replace current mirror/rotation index juggling with android.opengl.Matrix operations instead.
Review URL: https://codereview.webrtc.org/1191243005
Cr-Commit-Position: refs/heads/master@{#9496}