To make the distinction for stats, add a |recovered| flag to
RtpPacketReceived.
BUG=webrtc:7135
Review-Url: https://codereview.webrtc.org/2693123002
Cr-Commit-Position: refs/heads/master@{#18103}
The audio mixer has a subcomponent called FrameCombiner, which uses an
AudioProcessing instance as a limiter. The limiter smoothly increases
the volume to avoid causing clipping.
The limiter was created in a default configuration causing the
ResidualEchoDetector submodule of AudioProcessing to be
activated. That submodule operates in the band-split domain (see
AudioProcessingImpl::ApmSubmoduleStates::RenderMultiBandSubModulesActive()).
There is a goal to remove the (expensive and unnecessary)
band-splitting from AudioMixer. This change helps accomplish that. (It
can't be done yet, because the actual limiter sub-component of APM
also operates in the band-split domain).
BUG=webrtc:6185
Review-Url: https://codereview.webrtc.org/2875623002
Cr-Commit-Position: refs/heads/master@{#18090}
In the windows audio device implementation, play block size should be
number of samples per 10ms times the number of channels. Meanwhile
RequestPlayoutData is expecting number of samples per channel in a
block, and we should pass in the per channel number here to avoid debug
check.
BUG=7627
Review-Url: https://codereview.webrtc.org/2876593003
Cr-Commit-Position: refs/heads/master@{#18088}
RTP packets can be padded with extra data at the end of the payload. The usable
payload length of the packet should then be reduced with the padding length,
since the padding must be discarded. This was not the case; instead, the entire
payload, including padding data, was forwarded to the audio channel and in the
end to the decoder.
A special case of padding is packets which are empty except for the padding.
That is, they carry no usable payload. These packets are sometimes used for
probing the network and were discarded in
RTPReceiverAudio::ParseAudioCodecSpecific. The result is that NetEq never sees
those empty packets, just the holes in the sequence number series; this can
throw off the target buffer calculations.
With this change, the empty (after removing the padding) packets are let through,
all the way down to NetEq, to a new method called NetEq::InsertEmptyPacket. This
method notifies the DelayManager that an empty packet was received.
BUG=webrtc:7610, webrtc:7625
Review-Url: https://codereview.webrtc.org/2870043003
Cr-Commit-Position: refs/heads/master@{#18083}
FakeRtpTransportController moves to a common header and its constructor is changed to take a SendSideCongestionController to enable injecting the mock.
BUG=webrtc:7395
Review-Url: https://codereview.webrtc.org/2834663003
Cr-Commit-Position: refs/heads/master@{#18055}
This allows it to be reused with Android AudioRecords created outside
WebRtcAudioRecord. WebRtcAudioEffects provides useful methods for enabling
hardware effects (such as echo cancellation) only on appropriate devices. It
also allows some control of these effects through WebRtcAudioUtils.
BUG=webrtc:7448
Review-Url: https://codereview.webrtc.org/2786603004
Cr-Commit-Position: refs/heads/master@{#18053}
The residual echo likelihood should report a likelihood between 0.0 and 1.0. Currently it can happen that echo likelihoods > 1.0 are reported. As a temporary mitigation to stop this, this CL enforces a hard maximum of 1.0 for the echo likelihood while we investigate the issue further.
BUG=b/38014838
Review-Url: https://codereview.webrtc.org/2861123002
Cr-Commit-Position: refs/heads/master@{#18030}
After a Merge operation, the statistics for number of samples
generated using Expand must be corrected, and the correction can in
fact be negative. However, a bug was introduced in
https://codereview.webrtc.org/1230503003 which uses a size_t to
represent the correction, which leads to wrap-around of the negative
value. This is not a problem in itself, since this value is added to
another size_t, with the effect that the desired subtraction happens
anyway.
The actual problem arises if the statistics are polled/reset before a
subtraction happens -- that is, between an Expand and a Merge
operation. This will lead to an actual wrap-around of the stats value,
and large expand_rate (16384) is reported.
BUG=webrtc:7554
Review-Url: https://codereview.webrtc.org/2859483005
Cr-Commit-Position: refs/heads/master@{#18029}
This is instead derived from pattern_idx inside the frame config.
This also removes active_layer_ use from
ScreenshareLayers::PopulateCodecSpecific and instead ties the layer to
TemporalLayers::FrameConfig.
BUG=chromium:702017, webrtc:7349
R=sprang@webrtc.org
Review-Url: https://codereview.webrtc.org/2860063002
Cr-Commit-Position: refs/heads/master@{#18017}
This change allows more callbacks to be registered to the test object.
The callbacks are used to give the user of the test object the ability
to instrument the test object. This CL specifically adds
instrumentation points just after a packet is inserted into NetEq, and
just after audio is pulled out of NetEq.
BUG=webrtc:7467
Review-Url: https://codereview.webrtc.org/2851383004
Cr-Commit-Position: refs/heads/master@{#18014}
Partially removes "current frame" state from TemporalLayers, aiming to
tie more state to the frame config being encoded. This is necessary for
having several outstanding frames being encoded.
Also renames several structs, since TemporalReferences contains more
than references it's renamed TemporalLayers::FrameConfig.
BUG=chromium:702017, webrtc:7349
R=sprang@webrtc.org
Review-Url: https://codereview.webrtc.org/2853073004
Cr-Commit-Position: refs/heads/master@{#18012}
Reason for revert:
The original patch set was correct, but the Chromium bug number needed to be corrected.
Original issue's description:
> Revert of Added ARM Neon SIMD optimizations for AEC3 (patchset #2 id:970001 of https://codereview.webrtc.org/2834073005/ )
>
> Reason for revert:
> The bug number for the chromium bug was wrong.
>
> Original issue's description:
> > Added ARM Neon optimizations for AEC3
> >
> > This CL adds Neon SIMD optimizations for AEC3 on ARM, resulting
> > in an 8 times complexity reduction. The optimizations are basically
> > identical to what was already in place for SSE2.
> >
> > BUG=chromium:14993, webrtc:6018
> >
> > Review-Url: https://codereview.webrtc.org/2834073005
> > Cr-Commit-Position: refs/heads/master@{#17993}
> > Committed: f246b91eba
>
> TBR=ivoc@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=chromium:14993, webrtc:6018
>
> Review-Url: https://codereview.webrtc.org/2856113003
> Cr-Commit-Position: refs/heads/master@{#17994}
> Committed: b70f8cfd4dTBR=ivoc@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=chromium:714993, webrtc:6018
Review-Url: https://codereview.webrtc.org/2862573002
Cr-Commit-Position: refs/heads/master@{#17997}
Reason for revert:
The bug number for the chromium bug was wrong.
Original issue's description:
> Added ARM Neon optimizations for AEC3
>
> This CL adds Neon SIMD optimizations for AEC3 on ARM, resulting
> in an 8 times complexity reduction. The optimizations are basically
> identical to what was already in place for SSE2.
>
> BUG=chromium:14993, webrtc:6018
>
> Review-Url: https://codereview.webrtc.org/2834073005
> Cr-Commit-Position: refs/heads/master@{#17993}
> Committed: f246b91ebaTBR=ivoc@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=chromium:14993, webrtc:6018
Review-Url: https://codereview.webrtc.org/2856113003
Cr-Commit-Position: refs/heads/master@{#17994}
This CL adds Neon SIMD optimizations for AEC3 on ARM, resulting
in an 8 times complexity reduction. The optimizations are basically
identical to what was already in place for SSE2.
BUG=chromium:14993, webrtc:6018
Review-Url: https://codereview.webrtc.org/2834073005
Cr-Commit-Position: refs/heads/master@{#17993}
This CL corrects the behavior in AEC3 during buffer overruns
and underruns in three ways.
1) When there is no render signal available (due to a buffering
issues, a zero block is inserted instead of the previous render
block. This avoids the same block being repeatedly inserted when
there are many back-to-back calls.
2) The internal counters in the main adaptive filter gain are also
reset when the filter is reset.
3) The internal counters in the shadow adaptive filter gain are
reset when the filter is reset.
BUG=chromium:717920,webrtc:7559
Review-Url: https://codereview.webrtc.org/2862533002
Cr-Commit-Position: refs/heads/master@{#17991}
TESTED=video_loopback and AppRTCMobile with forced encoder reinits every 30 frames.
BUG=webrtc:7475
Review-Url: https://codereview.webrtc.org/2833493003
Cr-Commit-Position: refs/heads/master@{#17984}
Reason for revert:
https://chromium.googlesource.com/external/webrtc/+/3c1e558449309be965815e1bf...
I suspect this breaks Chrome ios.
https://build.chromium.org/p/tryserver.chromium.mac/builders/ios-simulator/bu...
https://luci-logdog.appspot.com/v/?s=chromium%2Fbb%2Ftryserver.chromium.mac%2...
Undefined symbols for architecture x86_64:
"base::allocator::g_replaced_default_zone", referenced from:
base::allocator::IsAllocatorInitialized() in libbase.a(allocator_check.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Traceback (most recent call last):
File "../../build/toolchain/mac/linker_driver.py", line 229, in <module>
Main(sys.argv)
File "../../build/toolchain/mac/linker_driver.py", line 79, in Main
subprocess.check_call(compiler_driver_args)
File
"/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py",
line 540, in check_call
raise CalledProcessError(retcode, cmd)
Original issue's description:
> Extract iOS SDK helpers to separate target.
>
> This will reduce the redundant objects built
> in Chromium when opening up test_support for the fuzzer
> tests.
>
> BUG=webrtc:6828
> NOTRY=True
>
> Review-Url: https://codereview.webrtc.org/2849823002
> Cr-Commit-Position: refs/heads/master@{#17972}
> Committed: 3c1e558449TBR=mbonadei@webrtc.org,kjellander@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:6828
Review-Url: https://codereview.webrtc.org/2853273002
Cr-Commit-Position: refs/heads/master@{#17979}
Plumbed AudioEncoderFactory up into CreatePeerConnectionFactory.
BUG=webrtc:5806
Review-Url: https://codereview.webrtc.org/2799033006
Cr-Commit-Position: refs/heads/master@{#17977}
This will reduce the redundant objects built
in Chromium when opening up test_support for the fuzzer
tests.
BUG=webrtc:6828
NOTRY=True
Review-Url: https://codereview.webrtc.org/2849823002
Cr-Commit-Position: refs/heads/master@{#17972}
libvpx flags aren't applicable to hardware encoders or non-libvpx
software encoders. This moves libvpx flag conversion into the
VP8EncoderImpl integration.
BUG=chromium:702017,webrtc:7349
R=brandt@webrtc.org
Review-Url: https://codereview.webrtc.org/2849723002
Cr-Commit-Position: refs/heads/master@{#17970}
we currently check for bandwidth overuse once for every RTP packet.
This CL creates an experiment to test processing all packets in the RTCP
feedback before checking for overuse. This can be thought of as checking
for overuse per RTCP packet instead of per RTP packet.
The change is not expected to have a large impact, but enabling the
experiment will make the delay-based BWE slightly less sensitive. This means
that we'll be less likely to back down incorrectly after a brief network
transient, at the cost of sometimes missing real overuse (especially when
the network queues are short). In the latter case, the loss-based estimator
is expected to detect the overuse.
The experiment is off by default.
BUG=webrtc:7508
Review-Url: https://codereview.webrtc.org/2835573003
Cr-Commit-Position: refs/heads/master@{#17968}
Windows may return a DesktopCoordinate out of the first quadrant
(x >= 0 && y >= 0), this typically happens when the primary and secondary
monitors are swapped. i.e. The secondary monitor is on the left but the primary
one is on the right.
This change "moves" the entire screen from any quadrant to the (0, 0), so we can
capture the monitors in other quadrants.
BUG=chromium:715689
Review-Url: https://codereview.webrtc.org/2848443004
Cr-Original-Commit-Position: refs/heads/master@{#17935}
Committed: 049ec71e65
Review-Url: https://codereview.webrtc.org/2848443004
Cr-Commit-Position: refs/heads/master@{#17938}
Reason for revert:
TranslateRect() is placed in a wrong position.
Original issue's description:
> Allow Windows to return a monitor out of the first quadrant
>
> Windows may return a DesktopCoordinate out of the first quadrant
> (x >= 0 && y >= 0), this typically happens when the primary and secondary
> monitors are swapped. i.e. The secondary monitor is on the left but the primary
> one is on the right.
> This change "moves" the entire screen from any quadrant to the (0, 0), so we can
> capture the monitors in other quadrants.
>
> BUG=chromium:715689
>
> Review-Url: https://codereview.webrtc.org/2848443004
> Cr-Commit-Position: refs/heads/master@{#17935}
> Committed: 049ec71e65TBR=sergeyu@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=chromium:715689
Review-Url: https://codereview.webrtc.org/2852783002
Cr-Commit-Position: refs/heads/master@{#17936}
Windows may return a DesktopCoordinate out of the first quadrant
(x >= 0 && y >= 0), this typically happens when the primary and secondary
monitors are swapped. i.e. The secondary monitor is on the left but the primary
one is on the right.
This change "moves" the entire screen from any quadrant to the (0, 0), so we can
capture the monitors in other quadrants.
BUG=chromium:715689
Review-Url: https://codereview.webrtc.org/2848443004
Cr-Commit-Position: refs/heads/master@{#17935}