844 Commits

Author SHA1 Message Date
andrew@webrtc.org
acb00505b6 Only declare kDelayDiffOffset when used.
And remove the redundant Windows block.

R=hans@chromium.org, niklas.enbom@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4922 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-04 16:59:17 +00:00
henrike@webrtc.org
ad2eb6f67d Unbreaks Android build after r4915.
TBR=ajm@webrtc.org

BUG=Not filed

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4921 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-04 14:21:23 +00:00
andresp@webrtc.org
be9c560aab Revert r4913 that reverts r4911. Original CL description:
"Adding temporal layer strategy that keeps base layer framerate at an acceptable value."

R=holmer@google.com, stefan@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4920 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-04 13:11:31 +00:00
fischman@webrtc.org
6c82e04cee Android standalone: remove some usages of deprecated APIs and prevent further regressions.
Also:
- Fixed WebRTCDemo UI to say "SwitchToBack" at startup since default camera is front
- Rebuild WebRTCDemo APK when resources/layout/strings change

R=henrike@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4916 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-03 18:57:48 +00:00
fischman@webrtc.org
4e65e07e41 VideoCaptureAndroid: rewrote the (standalone) implementation of video capture on Android.
Besides being ~40% the size of the previous implementation, this makes it so
that VideoCaptureAndroid can stop and restart capture, which is necessary to
support onPause/onResume reasonably on Android.

BUG=1407
R=henrike@webrtc.org, wu@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4915 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-03 18:23:13 +00:00
turaj@webrtc.org
44db9d1a57 Revert 4911 "Adding temporal layer strategy that keeps base laye..."
> Adding temporal layer strategy that keeps base layer framerate at an acceptable value.
> 
> R=stefan@webrtc.org
> 
> Review URL: https://webrtc-codereview.appspot.com/2272005

TBR=andresp@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4913 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-03 17:42:07 +00:00
mikhal@webrtc.org
b43d8078a1 Reformatting VPM: First step - No functional changes.
R=marpan@google.com, marpan@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4912 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-03 16:42:41 +00:00
andresp@webrtc.org
26f78f7ecb Adding temporal layer strategy that keeps base layer framerate at an acceptable value.
R=stefan@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4911 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-03 14:06:14 +00:00
turaj@webrtc.org
7ee3efb0d8 Disable Receiver unittests on Android.
BUG=
TBR=minyue@google.com

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4909 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-03 00:05:15 +00:00
turaj@webrtc.org
6ea3d1cc9e ACM test are modified to run with both ACM1 and ACM2.
Beside the changes in test files. acm2/acm_generic_codec.cc and acm2/audio_coding_module_impl.cc are modified to fix a bug.

Also, nack{.cc, .h, _unittest.cc} are removed form main/sourc as nack files in both ACM1 and ACM2 are essentially identical.

R=andrew@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4908 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-02 21:44:33 +00:00
kjellander@webrtc.org
2a97317953 Fix include of isolate.gypi
Recent changes in GYP seem to have broken our previous
"hack" for getting the GYP rule for .isolate files
imported from the Chromium build/isolate.gypi.

The best solution for now is to remove the hack
and check in a copy of Chromium's src/build/isolate.gypi
in WebRTC's build/ dir instead. A similar approach is
used for our build/protoc.gypi file.

TEST=On Linux, I successfully ran:
gclient runhooks
ninja -C out/Release
and verified a bunch of .isolated files were created in
out/Release (which didn't happen before this patch).

I also renamed the build/isolate.gypi from Chromium to
ensure that our own is used and not that one (in case any
paths would be incorrect).

I also ran build/gyp_chromium in a Chromium checkout
with WebRTC in third_party/webrtc having this patch applied
to ensure GYP processing was still working.

Finally, I verified that the same project generation and
compilation from a Chromium checkout worked the way we build
our Android native tests, using:
. build/android/envsetup.sh
GYP_DEFINES="$GYP_DEFINES include_tests=1 enable_tracing=1" gclient runhooks
ninja -C out/Release android_builder_webrtc

BUG=1916
R=andrew@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4907 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-02 19:31:16 +00:00
henrike@webrtc.org
f8f78b1316 Android OpenSL: Fixes faulty assertion in jni-code.
BUG=2452
R=fischman@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4906 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-02 18:41:06 +00:00
henrik.lundin@webrtc.org
4887114af7 Remove templatization of the AudioVector test
This CL converts the unit tests for AudioVector from typed tests to
regular tests. It is in preparation for removing templatization for
AudioVector in an upcoming CL.

BUG=1363
R=turaj@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4903 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-02 15:07:28 +00:00
henrike@webrtc.org
1fdc51ae2a APK for opensl loopback.
BUG=N/A
R=andrew@webrtc.org, fischman@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4901 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-02 14:58:19 +00:00
asapersson@webrtc.org
8469f7b328 Added support for sending and receiving RTCP XR packets:
- Receiver reference time report block
- DLRR report block (RFC3611).

BUG=1613
R=mflodman@webrtc.org, stefan@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4898 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-02 13:15:34 +00:00
turaj@webrtc.org
a6101d76f4 Update sampling rate and number of channels of NetEq4 if decoder is changed.
We encounter a sample-underrun if NetEq is initialized with a sampling rate fs =16000 and receive Opus packets with frame-size less than 5 ms. The reason is as follows.

Let say NetEq buffer has 4 packets of Opus each of size 2.5ms this means that internally timestamp of packets incremented by 80 (internally Opus treated as 32 kHz codec). Given the initial sampling rate of NetEq, at the first time that it wants to fetch packets, it targets to fetch 160 samples. Therefore, it will only extracts 2 packets. Decoding these packets give us exactly 160 samples (5 ms at 32 kHz), however, upon decoding the first packet the internal sampling rate will be updated to 32 kHz. So it is expected that sync buffer to deliver 320 samples while it does only have 160 samples (or maybe few more as it starts with some zeros). And we encounter and under-run.

Even if we ignore the under-run  "assert(sync_buffer_->FutureLength() >= expand_->overlap_length())" (neteq_impl.cc::811) is trigered. I'm not sure what happens if we remove this assert perhaps NetEq will work fine in subsequent calls. However the first under-run is blocking ACM2 test to pass.

Here I have a solution to update sample rate as soon as a packet is inserted, if required. It not a very efficient approach as we do the same reset in NetEqImpl::Decode().

It is a bit tricky to reproduce this because the TOT ACM tests do not run ACM2. In https://webrtc-codereview.appspot.com/2192005/ I have a patch to run both ACMs. To reproduce the problem, one can patch that CL and run

$ out/Debug/modules_tests --gtest_filter=AudioCodingModuleTest.TestOpus

Note that we would not encounter any problem if NetEq4 is initiated with 32000 Hz sampling rate. You can test this by setting |kNeteqInitSampleRateHz| to 32000 in webrtc/modules/audio_coding/main/acm2/acm_receiver.cc

BUG=
R=andrew@webrtc.org, henrik.lundin@webrtc.org, kjellander@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4896 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-01 22:01:09 +00:00
pbos@webrtc.org
e546f02c84 Remove include_dirs from utility.
BUG=1662
TEST=compile on trybots
R=asapersson@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4890 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-01 09:29:09 +00:00
turaj@webrtc.org
522227012d Reset audio bufer if codec changes, b/10835525.
If there is audio in a codec's audio buffer and sample-rate or number of channels change the audio buffer has to reset. Otherwise, the amount of audio in the buffer is misinterpreted any syncronization between 10ms audio blocks and their associated timestamps is lost.

For instance, assume changing from stereo to mono when there is 10ms stereo in the buffer. The "new" codec will interpret this as 20 ms audio, therefore, 2 blocks of 10 ms, but there is only one timestamp. This will results in  ACMGenericCodec::in_timestamp_ix_write_ updated to a negative number after an encode is performed.

The drawback with this solution is that if packet-size of the codec is changed then audio buffer is reset wich is not necessary. We accept this as it is a rare case in practice that clients of ACM re-register send codecs to change packet-size.

R=andrew@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4887 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-01 01:17:37 +00:00
andrew@webrtc.org
8e2f9bce71 Ensure adjusted "known delay" doesn't drop below zero.
The untrusted delay mode provides an option to reduce the "known delay"
parameter passed down to the core AEC. This is necessary to handle the
very low latencies observed with the Chromium audio backend on Mac.

Prior to this change, it was possible to pass a negative value. The AEC
produced good output in practice, but it turned out this tripped a
heretofore unnoticed assert in ProcessBlock().

This change avoids the assert, and maintains the good output across a
set of Mac recordings. Bit-exact in some cases, and in the remaining,
quickly converging to identical output.

The assert was hit on the last webrtc roll in Chromium in
content_browsertests on Mac.

Corresponds to:
https://chromereviews.googleplex.com/9960013

TBR=bjornv
TESTED=Verified locally that "content_browsertests
--gtest_filter=WebrtcBrowserTest.*"" passes.

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4886 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-01 01:12:25 +00:00
henrik.lundin@webrtc.org
fd11bbfb56 NetEq4: Removing templatization for AudioMultiVector
This saves approx 6% runtime for neteq4_speed_test.
$ time out/Release/neteq4_speed_test --runtime_ms=50000000

BUG=1363
R=minyue@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4885 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-30 20:38:44 +00:00
turaj@webrtc.org
6ad6a07fd3 Support for CELT in NetEq4.
BUG=1359
R=henrik.lundin@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4884 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-30 20:07:39 +00:00
pbos@webrtc.org
9532fa53ed Remove include_dirs from video_render.
BUG=1662
TEST=compile on trybots
R=mflodman@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4881 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-30 15:32:44 +00:00
pbos@webrtc.org
1c974ef5e3 Remove include_dirs from video_capture.
BUG=1662
TEST=compile on trybots
R=mflodman@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4880 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-30 15:32:10 +00:00
tina.legrand@webrtc.org
4cd76221dc Revert 4876 "Support for CELT in NetEq4."
> Support for CELT in NetEq4.
> 
> BUG=1359
> R=henrik.lundin@webrtc.org
> 
> Review URL: https://webrtc-codereview.appspot.com/2291004

TBR=turaj@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4879 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-30 12:25:45 +00:00
henrik.lundin@webrtc.org
572699d3eb Propagate AutoMuter interface out to VideoCodingModule
BUG=2436
R=stefan@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4878 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-30 12:16:08 +00:00
turaj@webrtc.org
a20a22a0bd Support for CELT in NetEq4.
BUG=1359
R=henrik.lundin@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4876 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-28 16:31:25 +00:00
wuchengli@chromium.org
30377c7f71 Change the parameters of calculating maximum decode time.
- Reduce the window size from 20 to 10 seconds. If there is
  any spurious high decode time, it will be faster to pass it.
- Ignore more samples at first because HW decoder has higher
  initialization latency.

BUG=crbug.com/298176
TEST=Run apprtc loopback on Chromebook Daisy.
R=stefan@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4874 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-28 06:06:18 +00:00
wu@webrtc.org
6049787252 Add protection to few more methods of AudioDeviceLinuxALSA. Those methods can be called from
a different thread.

One example is the _playWarning can be changed in AudioDeviceLinuxALSA::Init, which is called on the application's thread. At the same time it can be read via PlayoutWarning() on the VoE's process_thread.

RISK=P2
TESTED=try bots and tsan test:
tools/valgrind-webrtc/webrtc_tests.sh --tool=tsan -t out/Debug/libjingle_peerconnection_unittest --gtest_filter=PeerConnectionFactoryTestInternal.CreatePCUsingInternalModules
BUG=1205
R=xians@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4866 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-27 18:19:25 +00:00
andrew@webrtc.org
137b3793d9 Only use -lm on Linux in ISAC.
Remove unneeded WEBRTC_LINUX define.

BUG=crbug.com/298656
TESTED=Passed trybots.
R=wjia@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4865 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-27 18:16:28 +00:00
minyue@webrtc.org
663da0a8fc With ACM2 and NetEq4, VoE fuzz test very often fails.
As far as I observe, there are several reasons for this:
1. webrtc/modules/audio_coding/neteq4/neteq_impl.cc : 870
     assert(new_codec_);
   This is related to webrtc/modules/audio_coding/neteq4/decision_logic_normal.cc : 81
     kUndefined can happen without new_codec_ being set
2. webrtc/modules/audio_coding/neteq4/neteq_impl.cc : 745
   assert(sync_buffer_->FutureLength() >= expand_->overlap_length());
3. some other assert triggered.

The above happens not very often and goes away with no assertion.

3. (most common, this CL addresses this)
   webrtc/modules/rtp_rtcp/source/rtp_receiver_audio.cc : 201
     payload_data_length = payload_length - rtp_header->header.paddingLength;
   There are situations that
     payload_length < rtp_header->header.paddingLength;
   OLD ACM + NetEq3 can handle this:
     a) webrtc/modules/audio_coding/main/source/acm_neteq.cc : 477
          int16_t payload_length = static_cast<int16_t>(length_payload);
        payload_length becomes negative in this situation
     b) webrtc/modules/audio_coding/neteq/recin.c
        WebRtcNetEQ_RecInInternal() handles negative payload length

I do not want to touch VoE, so I tried to let ACM2 and NetEq4 handle negative payload length.

This CL does not follow the exact way of OLD ACM + NetEq3. I stopped negative payload length at ACM and did not allow it go to NetEq4.

To try this, apply my uploaded patch : https://webrtc-codereview.appspot.com/2281004/

Let me know if you see better solutions.

R=henrik.lundin@webrtc.org, stefan@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4860 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-26 15:21:26 +00:00
henrik.lundin@webrtc.org
544b17c6a9 Implemented AutoMuter in MediaOptimization
Also added a unittest. This is the first step towards creating an
AutoMuter function in WebRTC.

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4857 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-26 12:05:15 +00:00
pbos@webrtc.org
04b61790d1 Remove include_dirs from pacing.
BUG=1662
TEST=compile on trybots
R=stefan@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4856 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-26 09:23:31 +00:00
pbos@webrtc.org
97eefb77e0 Remove include_dirs from remote_bitrate_estimator.
BUG=1662
TEST=compile on trybots
R=stefan@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4855 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-26 09:22:54 +00:00
pbos@webrtc.org
339fe12f67 Remove include_dirs from bitrate_controller.
BUG=1662
TEST=compile on trybots
R=stefan@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4854 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-26 09:22:34 +00:00
pbos@webrtc.org
054ccd2e35 Remove include_dirs from video_coding.
BUG=1662
TEST=compile on trybots
R=stefan@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4853 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-26 09:22:09 +00:00
pbos@webrtc.org
73f207611c Remove include_dirs from video_processing.
BUG=1662
TEST=compile on trybots
R=stefan@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4852 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-26 09:17:56 +00:00
pbos@webrtc.org
dc3fa08331 Remove include_dirs from rtp_rtcp.
BUG=1662
TEST=compile on trybots
R=stefan@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4851 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-26 09:17:13 +00:00
turaj@webrtc.org
7b75ac6756 Sync-packet insertion into NetEq4. This is related to r3883 & r4052 for NetEq 3.
BUG=
R=henrik.lundin@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4850 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-26 00:27:56 +00:00
andrew@webrtc.org
6b1e21924a Move the Config DelayCorrection struct to audio_processing.h.
TBR=bjornv

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4849 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-25 23:46:20 +00:00
andrew@webrtc.org
1760a17b8e Add an extended filter mode to AEC.
Re-land: http://review.webrtc.org/2151007/
TBR=bjornv@webrtc.org

Original change description:
This mode extends the filter length from the current 48 ms to 128 ms.
It is runtime selectable which allows it to be enabled through
experiment. We reuse the DelayCorrection infrastructure to avoid having
to replumb everything up to libjingle.

Increases AEC complexity by ~50% on modern x86 CPUs.
Measurements (in percent of usage on one core):

Machine/CPU                                     Normal Extended
MacBook Retina (Early 2013),
Core i7 Ivy Bridge (2.7 GHz, hyperthreaded)     0.6%   0.9%

MacBook Air (Late 2010), Core 2 Duo (2.13 GHz)  1.4%   2.7%

Chromebook Pixel, Core i5 Ivy Bridge (1.8 GHz)  0.6%   1.0%

Samsung ARM Chromebook,
Samsung Exynos 5 Dual (1.7 GHz)                 3.2%   5.6%

The relative value is large of course but the absolute should be
acceptable in order to have a working AEC on some platforms.

Detailed changes to the algorithm:
- The filter length is changed from 48 to 128 ms. This comes with tuning
of several parameters: i) filter adaptation stepsize and error
threshold; ii) non-linear processing smoothing and overdrive.
- Option to ignore the reported delays on platforms which we deem
sufficiently unreliable. Currently this will be enabled in Chromium for
Mac.
- Faster startup times by removing the excessive "startup phase"
processing of reported delays.
- Much more conservative adjustments to the far-end read pointer. We
smooth the delay difference more heavily, and back off from the
difference more. Adjustments force a readaptation of the filter, so they
should be avoided except when really necessary.

Corresponds to these changes:
https://chromereviews.googleplex.com/9412014
https://chromereviews.googleplex.com/9514013
https://chromereviews.googleplex.com/9960013

BUG=454,827,1261

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4848 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-25 23:17:38 +00:00
sergeyu@chromium.org
becbefaee6 Fix WindowCapturerWin to capture window decorations after window size changes.
DWM doesn't update window decorations in bitmap captured
from GetWindowDC(). Work it around by calling PrintWindow()
after each resize (which somehow affects what's later
captured from GetWindowDC()). That solution avoids the
downsides of PrintWindow() (namely flickering) while still
allowing to capture window decorations correctly.

BUG=crbug.com/289759
R=alexeypa@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4847 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-25 22:56:59 +00:00
turaj@webrtc.org
3fdeddb59a Disable a NetEq unittest on Android. The test tries to register iSAC-swb as send codec and fails.
R=andrew@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4845 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-25 22:19:22 +00:00
niklas.enbom@webrtc.org
3e7703640f Remove unused constants, so chrome can enable a warning for that. Patch from thakis@
R=andrew@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4844 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-25 22:05:05 +00:00
turaj@webrtc.org
0c0fae8a5e Re-enable verbose logging in NetEq4.
Using neteq4_speed_test there no complexity penalty is observed when verbose
logging is enabled.

BUG=2317
R=henrik.lundin@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4841 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-25 17:42:17 +00:00
fischman@webrtc.org
69fc315fd9 Convert DeviceInfoImpl::_captureCapabilities from a map to a vector.
The map was just mapping an index to a pointer of a POD, so the code is easily
simplified by using a vector (with implicit index key) and the POD as a value.
(also fixes a leak in the windows code, which lacked a virtual dtor for
VideoCaptureCapabilityWindows but was deleting through a base pointer).

R=perkj@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4840 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-25 17:01:42 +00:00
asapersson@webrtc.org
ce014d97cd Revert 4837 "Add an extended filter mode to AEC."
> Add an extended filter mode to AEC.
> 
> This mode extends the filter length from the current 48 ms to 128 ms.
> It is runtime selectable which allows it to be enabled through
> experiment. We reuse the DelayCorrection infrastructure to avoid having
> to replumb everything up to libjingle.
> 
> Increases AEC complexity by ~50% on modern x86 CPUs.
> Measurements (in percent of usage on one core):
> 
> Machine/CPU                                     Normal Extended
> MacBook Retina (Early 2013),
> Core i7 Ivy Bridge (2.7 GHz, hyperthreaded)     0.6%   0.9%
> 
> MacBook Air (Late 2010), Core 2 Duo (2.13 GHz)  1.4%   2.7%
> 
> Chromebook Pixel, Core i5 Ivy Bridge (1.8 GHz)  0.6%   1.0%
> 
> Samsung ARM Chromebook,
> Samsung Exynos 5 Dual (1.7 GHz)                 3.2%   5.6%
> 
> The relative value is large of course but the absolute should be
> acceptable in order to have a working AEC on some platforms.
> 
> Detailed changes to the algorithm:
> - The filter length is changed from 48 to 128 ms. This comes with tuning
> of several parameters: i) filter adaptation stepsize and error
> threshold; ii) non-linear processing smoothing and overdrive.
> - Option to ignore the reported delays on platforms which we deem
> sufficiently unreliable. Currently this will be enabled in Chromium for
> Mac.
> - Faster startup times by removing the excessive "startup phase"
> processing of reported delays.
> - Much more conservative adjustments to the far-end read pointer. We
> smooth the delay difference more heavily, and back off from the
> difference more. Adjustments force a readaptation of the filter, so they
> should be avoided except when really necessary.
> 
> Corresponds to these changes:
> https://chromereviews.googleplex.com/9412014
> https://chromereviews.googleplex.com/9514013
> https://chromereviews.googleplex.com/9960013
> 
> BUG=454,827,1261
> R=bjornv@webrtc.org
> 
> Review URL: https://webrtc-codereview.appspot.com/2151007

TBR=andrew@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4839 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-25 12:27:27 +00:00
andrew@webrtc.org
26e02f0ee4 Add an extended filter mode to AEC.
This mode extends the filter length from the current 48 ms to 128 ms.
It is runtime selectable which allows it to be enabled through
experiment. We reuse the DelayCorrection infrastructure to avoid having
to replumb everything up to libjingle.

Increases AEC complexity by ~50% on modern x86 CPUs.
Measurements (in percent of usage on one core):

Machine/CPU                                     Normal Extended
MacBook Retina (Early 2013),
Core i7 Ivy Bridge (2.7 GHz, hyperthreaded)     0.6%   0.9%

MacBook Air (Late 2010), Core 2 Duo (2.13 GHz)  1.4%   2.7%

Chromebook Pixel, Core i5 Ivy Bridge (1.8 GHz)  0.6%   1.0%

Samsung ARM Chromebook,
Samsung Exynos 5 Dual (1.7 GHz)                 3.2%   5.6%

The relative value is large of course but the absolute should be
acceptable in order to have a working AEC on some platforms.

Detailed changes to the algorithm:
- The filter length is changed from 48 to 128 ms. This comes with tuning
of several parameters: i) filter adaptation stepsize and error
threshold; ii) non-linear processing smoothing and overdrive.
- Option to ignore the reported delays on platforms which we deem
sufficiently unreliable. Currently this will be enabled in Chromium for
Mac.
- Faster startup times by removing the excessive "startup phase"
processing of reported delays.
- Much more conservative adjustments to the far-end read pointer. We
smooth the delay difference more heavily, and back off from the
difference more. Adjustments force a readaptation of the filter, so they
should be avoided except when really necessary.

Corresponds to these changes:
https://chromereviews.googleplex.com/9412014
https://chromereviews.googleplex.com/9514013
https://chromereviews.googleplex.com/9960013

BUG=454,827,1261
R=bjornv@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4837 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-25 02:17:47 +00:00
turaj@webrtc.org
d6a7a5f385 Small fixes to run ACM2 tests.
BUG=
R=minyue@google.com

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4836 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-25 01:09:23 +00:00
turaj@webrtc.org
ff43c85ef1 API add to set background noise mode.
Background noise mode.

BUG=
R=henrik.lundin@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4835 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-25 00:07:27 +00:00
sergeyu@chromium.org
8d757ac0a2 Fix window capturer not to leak HDC.
Previously Windows window capturer kept DC handles between captures. As
result it was leaking DC handles in SelectWindow(). Fixed it so that it
calls GetWindowDC() for each capture.

R=alexeypa@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4834 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-24 23:13:51 +00:00