When compiling against an OSX 10.7+ SDK, explicitly redeclare methods only
available from an OSX 10.7+ SDK. This suppresses the clang warning
-Wpartial-availability, which will be turned on in the future.
BUG=chromium:471823
R=jiayl@webrtc.org, mark@chromium.org
Review URL: https://webrtc-codereview.appspot.com/44359004
Cr-Commit-Position: refs/heads/master@{#9163}
This adds functionality from audioproc_float. The geometry parsing code
is now shared from test_utils.h. I removed the "mic_spacing" flag from
audioproc_float because it's a redundancy that I suspect isn't very
useful.
Includes a cleanup of the audio_processing test utils. They're now
packaged in targets, with the protobuf-using ones split out to avoid
requiring users to depend on protobufs.
pcm_utils is no longer needed and removed.
The primary motivation for this CL is that AudioProcessing currently
doesn't support more than two channels and we'd like a way to pass
more channels to the beamformer.
R=aluebs@webrtc.org, mgraczyk@chromium.org
Review URL: https://webrtc-codereview.appspot.com/50899004
Cr-Commit-Position: refs/heads/master@{#9157}
CodecOwner is introduced here; AudioEncoderMutable was introduced in a
previous commit, but had no users until now. The only remaining task
for ACMGenericCodec was to construct and maintain the stack of speech,
CNG, and RED encoders. This task is now handled by the CodecOwner,
which is owned and used by the CodecManager.
COAUTHOR=henrik.lundin@webrtc.org
BUG=4228
R=jmarusic@webrtc.org, minyue@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/43189004
Cr-Commit-Position: refs/heads/master@{#9152}
The implementation of this proposal is in progress.
More unittest will be added.
Sender side is being implemented.
Some constants need to be tuned.
BUG=4550
R=stefan@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/43299004
Cr-Commit-Position: refs/heads/master@{#9146}
When running AEC in extended_filter mode there is no startup phase to evaluate the reported system delay values.
Instead we simply use the first value and scale by two to avoid over compensating when synchronizing render and capture.
We don't need to be too accurate since we have extended the filter length.
On Android we use fixed (measured) reported delay values.
There is no need to be extra conservative here, because that is already built-in in the measured value.
In fact, the difference between devices is large and with such an extra conservative approach the true delay can not be caught by the filter length.
With this change we can improve performance on some devices.
BUG=4472
TESTED=offline on recordings from various devices
R=kwiberg@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/49909004
Cr-Commit-Position: refs/heads/master@{#9144}
The delay estimator has a robust_validation mode used to deliver more stable delay etimates. The cost is increased reaction time when we have a delay jump.
This mode can be turned on and off on the fly, but statistics are not updated while disabled. This makes the estimator unreliable if it is enabled on the fly.
This CL makes sure the update is always done.
BUG=4472
R=kwiberg@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/50889004
Cr-Commit-Position: refs/heads/master@{#9143}
For quick and easy aecdump verifiation storing data as text speeds up the issue tracking process, since anyone can simply view values like mic volume.
BUG=4609
TESTED=verified unpacking an aecdump with flag --txt stores that data in text files
R=kwiberg@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/50849004
Cr-Commit-Position: refs/heads/master@{#9142}
This CL makes two changes to rtc::Buffer that have had to wait for
Chromium's use of it to be modernized:
1. Change default return type of rtc::Buffer::data() from char* to
uint8_t*. uint8_t is a more natural type for bytes, and won't
accidentally convert to a string. (Chromium previously expected
the default return type to be char, which is why
rtc::Buffer::data() initially got char as default return type in
9478437f, but that's been fixed now.)
2. Stop accepting void* inputs in constructors and methods. While
this is convenient, it's also dangerous since any pointer type
will implicitly convert to void*.
(This was previously committed (9e1a6d7c) but had to be reverted
(cbf09274) because Chromium on Android wasn't quite ready for it).
TBR=tommi@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/47109004
Cr-Commit-Position: refs/heads/master@{#9132}
This CL makes two changes to rtc::Buffer that have had to wait for
Chromium's use of it to be modernized:
1. Change default return type of rtc::Buffer::data() from char* to
uint8_t*. uint8_t is a more natural type for bytes, and won't
accidentally convert to a string. (Chromium previously expected
the default return type to be char, which is why
rtc::Buffer::data() initially got char as default return type in
9478437f, but that's been fixed now.)
2. Stop accepting void* inputs in constructors and methods. While
this is convenient, it's also dangerous since any pointer type
will implicitly convert to void*.
R=tommi@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/44269004
Cr-Commit-Position: refs/heads/master@{#9121}
Removes FixedSizeLockFreeQueue which isn't used anymore. This enabled
moving rtc::AtomicOps to webrtc/base/atomicops.h where they should be.
BUG=4330
R=tommi@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/51789004
Cr-Commit-Position: refs/heads/master@{#9120}
In AEC a fixed fft size is used, but processing can in the lower band be in either 8 or 16 kHz.
Therefore we need a multiplier/rate factor to, for example, map frequency bands in Hz to frequency bins.
The multiplier/rate factor can only be either 1 or 2, but when 48 kHz support was added it was assigned 3.
BUG=crbug.com/482424
R=aluebs@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/43329004
Cr-Commit-Position: refs/heads/master@{#9117}
Add a propagation delay to tests and make the run-time configurable for the fairness tests.
Handle losses in-between feedback messages.
BUG=4549
R=pbos@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/49819004
Cr-Commit-Position: refs/heads/master@{#9099}
The way SetExtraOptions() is used today only applies for any one configuration change. The correct way is to set it after all flags have been scanned.
The prefered way to solve this is to use gflags and scan once, followed by applying the configuration when creating audio_processing. This is what is done in the new test tool audioproc_float.cc, but there are still some things left to do before we can replace this one.
BUG=N/A
TESTED=locally
R=kwiberg@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/45279004
Cr-Commit-Position: refs/heads/master@{#9097}
Passed building isac_neon and modules_unittests on Android ARM64 and
ARMv7.
Passed modules_unittests with following filters:
--gtest_filter=FiltersTest*
--gtest_filter=LpcMaskingModelTest*
--gtest_filter=TransformTest*
--gtest_filter=FilterBanksTest*
WebRtcIsacfix_CalculateResidualEnergyNeon is not enabled due to Issue
4224.
BUG=4002
R=andrew@webrtc.org, jridges@masque.com, kjellander@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/44229004
Patch from Zhongwei Yao <zhongwei.yao@arm.com>.
Cr-Commit-Position: refs/heads/master@{#9092}
The implementation is a FIR filter bank with DCT modulation, similar to the proposed in "Multirate Signal Processing for Communication Systems" by Fredric J Harris.
The lowpass filter prototype has these characteristics:
* Passband ripple = 0.3dB
* Passband frequency = 0.147 (7kHz at 48kHz)
* Stopband attenuation = 40dB
* Stopband frequency = 0.192 (9.2kHz at 48kHz)
* Delay = 24 samples (500us at 48kHz)
* Linear phase
This filter bank does not satisfy perfect reconstruction. The SNR after analysis and synthesis (with no processing in between) is approximately 9.5dB depending on the input signal after compensating for the delay.
The performance on my workstation of AudioProcessing (with AGC and NS enabled) on a 413s recording compared to previous versions is as follows:
* Input signal has 32kHz sample rate: 3.01s
* Resampling 48kHz to 32kHz: 3.56s
* Today's temporary filter bank: 5.67s
* This filter-bank: 4.62s
BUG=webrtc:3146
R=andrew@webrtc.org, bjornv@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/48999005
Cr-Commit-Position: refs/heads/master@{#9090}
This makes the build more flexible when linking against
prebuilt external libraries.
Use existing build_* variables for libyuv and json in talk/
(already in use in webrtc/).
Also make it possible to avoid building the GTK parts of the Linux build.
BUG=4242
R=andrew@webrtc.org, tommi@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/44179005
Cr-Commit-Position: refs/heads/master@{#9087}
The Mac64 Debug builder is broken for an unknown failure (trybot is
green, no failure obvious in the commit break). Reverting this CL to see
if it goes green again, and then relanding to see if it is just some
weird flaky build issue.
This reverts commit 5ea8eff55ec21a1d81aaf7d29c0106fe13256150.
BUG=
TBR=rollback
Review URL: https://webrtc-codereview.appspot.com/47019004
Cr-Commit-Position: refs/heads/master@{#9074}
Since RTCP packets are delivered to both senders and receivers that
correspond the receivers currently log that NACKed packets are missing,
since they have no direct connection to the sending side or the RTP
packet history. Also preventing triggering on SR requests and PLI/FIR.
BUG=
R=asapersson@webrtc.org, stefan@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/45249004
Cr-Commit-Position: refs/heads/master@{#9071}
Note that the timeout should depend on the smoothed RTT, but for now is hard coded to 1000 ms.
This solves issues where a full cwnd gets lost.
R=pbos@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/51739004
Cr-Commit-Position: refs/heads/master@{#9051}
This change is needed by ChromeOS as it introduces -fno-omit-frame-pointer
flag (see code.google.com/p/chromium/issues/detail?id=477749). This causes
compile error for MIPS, as some MIPS optimization blocks use maximum possible
number of available registers.
Also, this change contains minor GN build fix for MIPS platform regarding the
pitch_filter_mips.c / pitch_filter_c.c file inclusion.
BUG=477749
R=andrew@webrtc.org, djordje.pesut@imgtec.com, tina.legrand@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/48139004
Patch from Ljubomir Papuga <lpapuga@mips.com>.
Cr-Commit-Position: refs/heads/master@{#9047}