We must remove dependency on Chromium, i.e. we can't use Chromium's base/logging.h. That means we need to define these macros in WebRTC also when doing Chromium builds. And this causes redefinition.
Alternative solutions:
* Check if we already have defined e.g. CHECK, and don't define them in that case. This makes us depend on include order in Chromium, which is not acceptable.
* Don't allow using the macros in WebRTC headers. Error prone since if someone adds it there by mistake it may compile fine, but later break if a header in added or order is changed in Chromium. That will be confusing and hard to enforce.
* Ensure that headers that are included by an embedder don't include our macros. This would require some heavy refactoring to be maintainable and enforcable.
* Changes in Chromium for this is obviously not an option.
BUG=chromium:468375
NOTRY=true
Review URL: https://codereview.webrtc.org/1335923002
Cr-Commit-Position: refs/heads/master@{#9964}
As part of the review, refactored AudioConverter into internal derived
classes, each focused on one type of conversion. A factory method
returns the correct converter (or chain of converters, via
CompositionConverter).
BUG=b/18938079
R=rojer@google.com
Review URL: https://webrtc-codereview.appspot.com/35699004
Cr-Commit-Position: refs/heads/master@{#8322}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8322 4adac7df-926f-26a2-2b94-8c16560cd09d
Analogous to the recent libjingle change: http://cl/54929753-p10.
This supports scoped_ptr<T[]> and scoped_ptr<C, FreeDeleter> rather
than scoped_array and scoped_ptr_malloc respectively.
- Add Chromium's template-based COMPILE_ASSERT. We didn't have this
previously in order to support the macro in C. Instead, move the
existing macro to compile_assert_c.h.
- Additionally copy the move.h and template_util.h depedencies and add
the WARN_UNUSED_RESULT macro.
- Leave scoped_array and scoped_ptr_malloc for now, but mark as
deprecated.
- Remove scoped_ptr foo(NULL) use. The default constructor handles it.
- Remove the now redundant COMPILE_ASSERT from peerconnection_jni.cc.
- Add a CHECK_ARRAY_SIZE macro to rtp_format_vp8_unittest.cc to remove
some repeated code.
TESTED=trybots
R=pbos@webrtc.org, tommi@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/2449005
git-svn-id: http://webrtc.googlecode.com/svn/trunk@5015 4adac7df-926f-26a2-2b94-8c16560cd09d
This may fix a Dr. Memory error: "allocated with operator new, freed
with operator delete[]". I suspect this is a false positive; in the
existing implementation the reset causes a delete[] on NULL. This is
a no-op of course, but Dr. Memory might be flagging it. We shall see.
In any case, this change is an improvement.
BUG=2321
TBR=bjornv
Review URL: https://webrtc-codereview.appspot.com/2215004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@4748 4adac7df-926f-26a2-2b94-8c16560cd09d
Ideally, PushSincResampler would have very little overhead on
SincResampler. This gets closer to that ideal.
Replace std::min/max and floor with inline functions. Add a benchmark
test to verify the improvement.
On a MacBook Retina, this results in PushSincResampler::Resample()
accounting for ~1% of CPU usage on voe_cmd_test vs the earlier ~2%
(with ISAC16 and 48 kHz audio devices).
Using the new benchmark, this results in a performance improvement of:
16 -> 44.1 : 1.7x
16 -> 48 : 1.9x
32 -> 44.1 : 1.6x
32 -> 48 : 1.7x
44.1 -> 16 : 1.5x
44.1 -> 32 : 1.7x
44.1 -> 48 : 1.7x
48 -> 16 : 1.5x
48 -> 32 : 1.5x
48 -> 44.1 : 1.8x
R=turaj@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/2157005
git-svn-id: http://webrtc.googlecode.com/svn/trunk@4695 4adac7df-926f-26a2-2b94-8c16560cd09d
Replace the BlockSize() workaround we were using previously to support
the push wrapper with the upstream request_frames interface. This
requires a bit of a trick to ensure we don't add more delay than
necessary. On the first pass we use a dummy Resample() call in order to
prime the buffer such that all later calls only require a single input
request through Run().
Notably, this brings in an optimized loop condition, improving
performance by ~2% - 3% on tested platforms and avoids a 20% performance
hit with clang. This addresses issue2041.
Only negligible changes to the PushSincResamplerTest SNR thresholds, due
to a fractional sample adjustment in output delay.
This still retains the per-instance CPU detection, as webrtc lacks a
LazyInstance helper for static initialization.
Ideally, we would adopt SetRatio() in PushSincResampler's
InitializeIfNeeded() for on-the-fly changes, but this will require a way
to update request_frames.
The diff against Chromium upstream is available here:
https://codereview.chromium.org/19470003
BUG=2041
TESTED=unit tests, voe_cmd_test in loopback running through all codecs
with 44.1 kHz and 48 kHz device formats using a stereo mic.
R=dalecurtis@chromium.org
Review URL: https://webrtc-codereview.appspot.com/1838004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@4406 4adac7df-926f-26a2-2b94-8c16560cd09d