Commit Graph

313 Commits

Author SHA1 Message Date
ff98f4b1d8 Fix stop logging errors for stereo mode when it is not used
When using WebRTC in iOS this Warning is shown for every single call even if stereo is not being used at all.

Change-Id: I0cc71620b9deb0692544101d78c0801968edbb26

Bug: webrtc:10146
Change-Id: I0cc71620b9deb0692544101d78c0801968edbb26
Reviewed-on: https://webrtc-review.googlesource.com/c/85283
Commit-Queue: Kári Helgason <kthelgason@webrtc.org>
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26133}
2019-01-04 09:36:52 +00:00
69540f4419 Use android Nullable instead of javax Nullable
This is a propagation of upstream chromium change needed to
resume DEPS autorolls into WebRTC.

Original comment from upstream change:

> This change is made in preparation for an ErrorProne
> check to catch this at compile time. See bug for details.

Bug: chromium:771683
Change-Id: I56aed15f73a633dcadae7ece6c645cd3596f9257
Reviewed-on: https://webrtc-review.googlesource.com/c/113505
Reviewed-by: Oleh Prypin <oprypin@webrtc.org>
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Artem Titarenko <artit@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25951}
2018-12-10 15:03:58 +00:00
ebad1770ab Include event_wrapper.h only where used.
It's currently used only by the VCMJitterBuffer and VCMReceiver
classes. Injection is needed by the VCMReceiverTimingTest test, which
defines a subclass(!) of EventWrapper.

Bug: webrtc:3380
Change-Id: I765be0ceac58e941928319cc426ba49f1cbdc5fa
Reviewed-on: https://webrtc-review.googlesource.com/c/113002
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25893}
2018-12-04 14:50:18 +00:00
2222a80e79 Delete unneeded includes of common_types.h and gn deps on webrtc_common.
Bug: webrtc:5876
Change-Id: Iae14e5f1679067a5a5e0584ca830aee0870c8807
Reviewed-on: https://webrtc-review.googlesource.com/c/111463
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25715}
2018-11-20 16:28:39 +00:00
7dbb7c311f Adding missing build target for audio_device_default.
The header modules/audio_device/include/audio_device_default.h was not
owned by any build target.

Bug: webrtc:8946
Change-Id: I3266a613c10963688c3bea701384e1d1bb68daac
Reviewed-on: https://webrtc-review.googlesource.com/c/111201
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25669}
2018-11-16 11:15:08 +00:00
140b1d94dc Eliminate use of EventWrapper from android audio device tests
Bug: webrtc:3380
Change-Id: I746d2245966afe89065472d4a6a7447f8c63f9f9
Reviewed-on: https://webrtc-review.googlesource.com/c/110163
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25598}
2018-11-12 13:22:46 +00:00
b0550bdf96 Eliminate use of EventWrapper from mac audio device
Bug: webrtc:3380
Change-Id: I9b34588a6a2b035f1787782421e4fc3e6650ef1a
Reviewed-on: https://webrtc-review.googlesource.com/c/110244
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25567}
2018-11-08 15:52:53 +00:00
5bb1ed6144 Eliminate use of EventWrapper from ios audio device tests
Bug: webrtc:3380
Change-Id: I2d2f8a7152212e80600449d49e7f7316dd89bfc2
Reviewed-on: https://webrtc-review.googlesource.com/c/110200
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25563}
2018-11-08 15:12:50 +00:00
c572ff3c71 Add default constructor for rtc::Event
Bug: webrtc:9962
Change-Id: Icaa91e657e6881fcb1553f354c07866109a0ea68
Reviewed-on: https://webrtc-review.googlesource.com/c/109500
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25535}
2018-11-07 08:57:50 +00:00
27f31727d0 Simplify use of events in TestAudioDevice
Create events with |manual_reset| and |initially_signalled| both false
(used to be both true). Delete calls to Set and Reset events from the
{Start,Stop}{Playout,Recording} methods. Then, for each event, there
remains a single call to Set, in the ProcessingAudio loop, and a
single call to Wait, in WaitForPlayoutEnd and WaitForRecordingEnd,
respectively.

Bug: webrtc:9962
Change-Id: Ia358b4a36896e2378ad6166f3786d8d71392bf1b
Reviewed-on: https://webrtc-review.googlesource.com/c/109562
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25518}
2018-11-06 12:18:05 +00:00
2c16cc61c2 Replace some usage of EventWrapper with rtc::Event.
Bug: webrtc:3380
Change-Id: Id33b19bf107273e6f838aa633784db73d02ae2c2
Reviewed-on: https://webrtc-review.googlesource.com/c/107888
Reviewed-by: Henrik Grunell <henrikg@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25407}
2018-10-29 09:37:24 +00:00
7d76a31f3d Use MediaTransportInterface, for audio streams.
Bug: webrtc:9719
Change-Id: I6d3db66b781173b207de51d84193fbd34a7f3239
Reviewed-on: https://webrtc-review.googlesource.com/c/104642
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Anton Sukhanov <sukhanov@webrtc.org>
Reviewed-by: Peter Slatala <psla@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25385}
2018-10-26 11:40:57 +00:00
988cc0870b [Cleanup] Add missing #include. Remove useless ones.
This CL is the result of running include-what-you-use tool on part
of the code base (audio target and dependencies) plus manual fixes.

bug: webrtc:8311
Change-Id: I277d281ce943c3ecc1bd45fd8d83055931743604
Reviewed-on: https://webrtc-review.googlesource.com/c/106280
Commit-Queue: Yves Gerey <yvesg@google.com>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25311}
2018-10-23 11:32:56 +00:00
6c966eaf17 Remove @SuppressLint(NewApi) and guard @TargetApi methods
Also rename runningOnLollipopOrHigher() etc in WebRtcAudioUtils
to runningOnApi21OrHigher() etc since mapping API numbers to
names is error prone.

Bug: webrtc:9818
Change-Id: I4a71de72e3891ca2b6fc2341db9131bb2db4cce7
Reviewed-on: https://webrtc-review.googlesource.com/c/103820
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Commit-Queue: Paulina Hensman <phensman@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25009}
2018-10-05 10:36:14 +00:00
433eafe1f5 Delete unused includes of assert.h
Bug: None
Change-Id: Iadc531710dca0ba34a00ac363bfe0784355bb6f9
Reviewed-on: https://webrtc-review.googlesource.com/c/103501
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24995}
2018-10-04 14:01:44 +00:00
4f340fa01e Compile audio_device without -Wno-global-constructors.
This CL removes kNumMicrosecsPerSec and kNumMillisecsPerSec from
modules/audio_device/win/core_audio_utility_win.h.

kNumMillisecsPerSec was unused, while kNumMicrosecsPerSec has been
replaced by rtc::kNumMicrosecsPerSec.

Bug: webrtc:9693
Change-Id: I560aa9dad2bfb94a9bf67d3b9941700f1948086b
Reviewed-on: https://webrtc-review.googlesource.com/102860
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24906}
2018-10-01 08:49:51 +00:00
78e0ac1b39 Improves threading model in AudioDeviceTest.
These changes are based on finding when using Tsan v2. More changes are
needed before usage of the THREAD_SANITIZER build flag can be removed.
Hence, all tests are still ignored when this flag is set. The changes
are still improvements.

See https://bugs.chromium.org/p/webrtc/issues/detail?id=9778#c10
for more details.

Bug: webrtc:9778
Change-Id: I1266cec48165046dcffc16f104ec5b88b41500b2
Reviewed-on: https://webrtc-review.googlesource.com/102440
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Henrik Andreassson <henrika@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24880}
2018-09-28 08:19:47 +00:00
17f4878419 Remove deprecated field_trial_default and metrics_default.
This CL removes some deprecated build targets (and their headers)
from system_wrappers:
- field_trial_api
- field_trial_default
- metrics_api
- metrics_default

It also refreshes all the dependencies on field_trial.h and metrics.h.

A nice side effect is that it is finally possible to remove 'nogncheck'
from the following files (when it was used with field_trial_default
and metrics_default):
- sdk/objc/api/peerconnection/RTCMetricsSampleInfo+Private.h
- sdk/android/src/jni/pc/peerconnectionfactory.cc
- sdk/objc/api/peerconnection/RTCFieldTrials.mm

Bug: webrtc:9631
Change-Id: Ib621f41ef8ad0aba4fe1c1d7e749c044afc956c3
No-Try: True
Reviewed-on: https://webrtc-review.googlesource.com/100524
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24878}
2018-09-28 07:21:07 +00:00
e0c01b9802 Fix global_constructors, exit_time_destructors in audio device pulse.
Bug: webrtc:9693
Change-Id: I05498473be8a86756d65d0b9000d626c966d4ed3
Reviewed-on: https://webrtc-review.googlesource.com/100422
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24865}
2018-09-27 13:19:11 +00:00
a3b9b27412 Also disable AudioDeviceTest constructor for TSAN.
The flaky crash is happening in the constructor.

Bug: webrtc:9778
Change-Id: I9ac9a89e033e17de690e594ef263ff83d14fcc5a
Reviewed-on: https://webrtc-review.googlesource.com/101880
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24829}
2018-09-25 14:44:00 +00:00
f1239b5405 Fixes issue where WebRTC.Audio.RecordSampleRateOffsetInPercent can report 100% (part II)
See https://webrtc-review.googlesource.com/c/src/+/100241 for part I.

It can happen that recording fail to start but playout works. If that happens, we can
log stats like this:

9-25 15:32:02.023 13903 13948 I audio_device_buffer.cc: (line 414): [REC : 10002msec, 48kHz] callbacks: 0, samples: 0, rate: 0, rate diff: 100%, level: 0
09-25 15:32:02.024 13903 13948 I audio_device_buffer.cc: (line 432): [PLAY: 10002msec, 48kHz] callbacks: 1002, samples: 480960, rate: 48086, rate diff: 0%, level: 0
09-25 15:32:12.028 13903 13948 I audio_device_buffer.cc: (line 414): [REC : 10005msec, 48kHz] callbacks: 0, samples: 0, rate: 0, rate diff: 100%, level: 0
09-25 15:32:12.028 13903 13948 I audio_device_buffer.cc: (line 432): [PLAY: 10005msec, 48kHz] callbacks: 1000, samples: 480000, rate: 47976, rate diff: 0%, level: 0

hence, we log invalid UMA stats for a rate offset of 100%. This change fixes the problem, and in the
case above, we now instead log:

09-25 15:35:56.141 14116 14161 I audio_device_buffer.cc: (line 432): [PLAY: 10011msec, 48kHz] callbacks: 1002, samples: 480960, rate: 48043, rate diff: 0%, level: 0
09-25 15:36:06.151 14116 14161 I audio_device_buffer.cc: (line 432): [PLAY: 10010msec, 48kHz] callbacks: 1002, samples: 480960, rate: 48048, rate diff: 0%, level: 0
09-25 15:36:16.162 14116 14161 I audio_device_buffer.cc: (line 432): [PLAY: 10011msec, 48kHz] callbacks: 1001, samples: 480480, rate: 47995, rate diff: 0%, level: 0
09-25 15:36:26.173 14116 14161 I audio_device_buffer.cc: (line 432): [PLAY: 10011msec, 48kHz] callbacks: 1001, samples: 480480, rate: 47995, rate diff: 0%, level: 0

Bug: b/113648245
Change-Id: Ic8cb71ca049ef24bf68963a81f95d4e5c2282518
Reviewed-on: https://webrtc-review.googlesource.com/101881
Commit-Queue: Henrik Andreassson <henrika@webrtc.org>
Reviewed-by: Ivo Creusen <ivoc@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24828}
2018-09-25 14:28:10 +00:00
defb717811 Disable AudioDeviceTest on thread sanitizer.
These tests have become flaky on thread sanitizer.

Bug: webrtc:9778
Change-Id: Ife7004acf11ef1b3cb9d5720da25d4efb2395faf
Reviewed-on: https://webrtc-review.googlesource.com/101841
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Reviewed-by: Artem Titarenko <artit@webrtc.org>
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24824}
2018-09-25 11:45:39 +00:00
5773ad3bc8 Ensures that ADM unittest uses default audio devices for all platforms.
TBR=ossu

Bug: webrtc:9265
Change-Id: Ifc6d3f9c5c4a4e31dcedfd72ed96a2bde5d074e7
Reviewed-on: https://webrtc-review.googlesource.com/101262
Commit-Queue: Henrik Andreassson <henrika@webrtc.org>
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24786}
2018-09-24 08:00:59 +00:00
c7d935899a Adds multi-channel support to new ADM2 on Windows.
Now checks the preferred channel configuration and requests implicit channel
upmixing (audio engine extends from 2 to N channels internally) if the
preferred number of channels is larger than two; i.e., initialize the
stream in stereo even if the preferred configuration is multi-channel.

To summarize: with this CL, it is now possible to use e.g. a 7.1 headset
with a native WebRTC client. All internal processing in WebRTC will be in
stereo, and the audio device will be opened up in stereo as well to match
WebRTC. Before this change, we would open up the audio device using 8
channels but that was not supported by WebRTC.

Bug: webrtc:9265
Change-Id: I1530fee28c4b8b5cda29ab6baf8d65fd391d935d
Reviewed-on: https://webrtc-review.googlesource.com/98421
Commit-Queue: Henrik Andreassson <henrika@webrtc.org>
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24743}
2018-09-14 14:16:27 +00:00
c5fe166dbc Fixes issue where WebRTC.Audio.RecordSampleRateOffsetInPercent can report 100%
Bug: b/113648245
Change-Id: I5fe22b553177cf7f53095b691077b3efd7c6bb59
Reviewed-on: https://webrtc-review.googlesource.com/100241
Commit-Queue: Henrik Andreassson <henrika@webrtc.org>
Reviewed-by: Ivo Creusen <ivoc@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24733}
2018-09-13 16:04:31 +00:00
bfb72ad4f4 Fix no_{global_constructors,exit_time_destructors} in audio device alsa.
Bug: webrtc:9693
Change-Id: Id37ef7e8c33830b494165202323ea65286052aae
Reviewed-on: https://webrtc-review.googlesource.com/100103
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24725}
2018-09-13 13:47:06 +00:00
36b3179312 Removes flaky thread checker in AudioDeviceBuffer.
This CL removes a set of DCHECKs in AudioDeviceBuffer (ADB) where the goal has been
to ensure that some methods are called on one and the same native I/O thread.
The implementation of the ADB is platform independent but the underlying (driving)
audio components differ between platforms. This combination has shown to generate complex
corner cases such as:

- OS dependent I/O-thread(s) changes while audio is active
- OS dependent audio device changes and it leads to restart of native I/O threads
- Start/Stop of audio has different timing depending on platform and possibly also usage of
JNI and/or emulators.

To summarize: the gain of maintaining the current strict thread checking (in Debug mode)
is not worth all the efforts trying to resolve complex dynamic cases where the native
I/O threads changes ID.

TBR=glaznev

Bug: b/115385789
Change-Id: I681c89adec497a18b97d2a40421c04ea218fd919
Reviewed-on: https://webrtc-review.googlesource.com/100200
Commit-Queue: Henrik Andreassson <henrika@webrtc.org>
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24723}
2018-09-13 11:41:52 +00:00
3d50a31aad Remove redundant initializers from WebRTC Java code.
Removes redundant field initializers such as null, 0 and false.

Bug: webrtc:9742
Change-Id: I1e54f6c6000885cf95f7af8e2701875a78445497
Reviewed-on: https://webrtc-review.googlesource.com/99481
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24676}
2018-09-11 09:58:10 +00:00
96ede16a4e Enable -Wexit-time-destructors and -Wglobal-constructors.
This CL enables -Wexit-time-destructors and -Wglobal-constructors on
rtc_static_library and rtc_source_set build targets.

It also adds the possibility to suppress these warnings because
they trigger in a few places.

The long term goal is to avoid regressions on this and remove all the
suppressions.

Bug: webrtc:9693
Change-Id: I4c1ecc137ef9e87ec5e66981ce95d96fb082727c
Reviewed-on: https://webrtc-review.googlesource.com/98380
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24604}
2018-09-06 12:43:20 +00:00
1c9d7bbeaf Reland "Refactor TestAudioDeviceModule to not depend on EventTimerWrapper."
This is a reland of 9ea5765f78ed3d0d7b0d483e81f08fb8a2e1110a

Original change's description:
> Refactor TestAudioDeviceModule to not depend on EventTimerWrapper.
> 
> In addition, let the processing thread loop explicitly, and not use
> the deprecated builtin looping in PlatformThread.
> 
> Bug: webrtc:3380
> Change-Id: I5171ce3457b80f922c8284259882da63c8f146f1
> Reviewed-on: https://webrtc-review.googlesource.com/96544
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
> Reviewed-by: Artem Titov <titovartem@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#24492}

Bug: webrtc:3380
Change-Id: I39c6b35d24182475b33a7a321cdf3b3ac9b8979a
Reviewed-on: https://webrtc-review.googlesource.com/97861
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24602}
2018-09-06 11:31:57 +00:00
8909a63aca Reland "Explicitly wrap main thread in test_main.cc."
This is a reland of 711a31aead9007e42dd73c302c8ec40f9e931619

Changes since original landing:

Rename methods only used by tests, mainly via FakeClock,

  MessageQueueManager::ProcessAllMessageQueues
     --> ProcessAllMessageQueuesForTesting

  MessageQueue::IsProcessingMessages
     --> IsProcessingMessagesForTesting

Fix the handling of null rtc::Thread::Current() in
ProcessAllMessageQueuesInternal().

Add override Thread::IsProcessingMessagesForTesting() to return false
for the wrapped main thread, unless it's also the current thread. In
tests, the main thread is typically not processing any messages,
but blocked in an Event::Wait().

Original change's description:
> Explicitly wrap main thread in test_main.cc.
>
> Bug: webrtc:9714
> Change-Id: I6ee234f9a0b88b3656a683f2455c3e4b2acf0d54
> Reviewed-on: https://webrtc-review.googlesource.com/97683
> Reviewed-by: Tommi <tommi@webrtc.org>
> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#24560}

Bug: webrtc:9714
Change-Id: I6f022d46aaf1e28f86f09f2d68c1803b69770126
Reviewed-on: https://webrtc-review.googlesource.com/98060
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Tommi <tommi@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24596}
2018-09-06 08:38:18 +00:00
5b6afc0ce6 Adds stream-switch support in new Windows ADM.
Second round of the new Windows ADM is now ready for review. Main
changes are:

Supports internal (automatic) restart of audio streams when an active
audio stream disconnects (happens when a device is removed).

Adds support for IAudioClient3 and IAudioClient2 for platforms which
supports it (>Win8 and >Win10).

Modifies the threading model to support restart "from the inside" on
the native audio thread.

Adds two new test methods for the ADM to emulate restart events or
stream-switch events.

Adds two new test methods to support rate conversion to ensure that
audio can be tested in loopback even if devices runs at different
sample rates.

Added initial components for low-latency support. Verified that it works
but disabled it with a flag for now.

Bug: webrtc:9265
Change-Id: Ia8e577daabea6b433f2c2eabab4e46ce8added6a
Reviewed-on: https://webrtc-review.googlesource.com/86020
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Commit-Queue: Henrik Andreassson <henrika@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24578}
2018-09-05 13:04:01 +00:00
cfbd26df1e Relands Adds WebRTC.Audio.Record/PlayoutSampleRateOffsetInPercent UMA stats to native WebRTC
First version was reverted in https://webrtc-review.googlesource.com/c/src/+/97941.
The issue is now fixed.

TBR=ivoc

Bug: b/113648245
Change-Id: If631fdea95aa963952f15e48e9d2d678797dc225
Reviewed-on: https://webrtc-review.googlesource.com/97942
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Reviewed-by: Ivo Creusen <ivoc@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24573}
2018-09-05 10:24:35 +00:00
e2924d555d Revert "Adds WebRTC.Audio.Record/PlayoutSampleRateOffsetInPercent UMA stats to native WebRTC."
This reverts commit f217903a67995496a1d67674d77d5f237772b01b.

Reason for revert: Breaks downstream tests

Original change's description:
> Adds WebRTC.Audio.Record/PlayoutSampleRateOffsetInPercent UMA stats to native WebRTC.
> 
> Also ensures that audio parameters are accessed atomically.
> 
> Bug: b/113648245
> Change-Id: Ic812bfe2b2c4cfb3b00d9d411bb4986dfeda1028
> Reviewed-on: https://webrtc-review.googlesource.com/97331
> Reviewed-by: Minyue Li <minyue@webrtc.org>
> Reviewed-by: Ivo Creusen <ivoc@webrtc.org>
> Commit-Queue: Henrik Andreassson <henrika@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#24550}

TBR=henrika@webrtc.org,ivoc@webrtc.org,minyue@webrtc.org

Change-Id: I620406f25762cf76db0470b3b29b50bc146935c7
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: b/113648245
Reviewed-on: https://webrtc-review.googlesource.com/97941
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24569}
2018-09-05 08:52:51 +00:00
4c6747c9db Revert "Reland "Refactor TestAudioDeviceModule to not depend on EventTimerWrapper.""
This reverts commit cd87e014f34069fd5a73c1ed5b74ddf251a95c2d.

Reason for revert: Somehow introduces a race where rtc::Thread auto-wrapping may be applied to the TestAudioDevice thread rather than the main thread. This causes failures when running video_engine_tests without any test filter.

Original change's description:
> Reland "Refactor TestAudioDeviceModule to not depend on EventTimerWrapper."
>
> This is a reland of 9ea5765f78ed3d0d7b0d483e81f08fb8a2e1110a
>
> Original change's description:
> > Refactor TestAudioDeviceModule to not depend on EventTimerWrapper.
> >
> > In addition, let the processing thread loop explicitly, and not use
> > the deprecated builtin looping in PlatformThread.
> >
> > Bug: webrtc:3380
> > Change-Id: I5171ce3457b80f922c8284259882da63c8f146f1
> > Reviewed-on: https://webrtc-review.googlesource.com/96544
> > Commit-Queue: Niels Moller <nisse@webrtc.org>
> > Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
> > Reviewed-by: Artem Titov <titovartem@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#24492}
>
> Bug: webrtc:3380
> Change-Id: I671e3a60ace6ade765a8537b7e20e36f1782a60d
> Reviewed-on: https://webrtc-review.googlesource.com/97320
> Reviewed-by: Artem Titov <titovartem@webrtc.org>
> Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#24528}

TBR=henrika@webrtc.org,nisse@webrtc.org,titovartem@webrtc.org

# Not skipping CQ checks because original CL landed > 1 day ago.
# Skip anyway, needed for a two-step revert.

No-try: True
Bug: webrtc:3380
Change-Id: Ia7c8cfab36b8259f150b5ccd0c28defd0e7237f6
Reviewed-on: https://webrtc-review.googlesource.com/97682
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24552}
2018-09-04 13:04:11 +00:00
f217903a67 Adds WebRTC.Audio.Record/PlayoutSampleRateOffsetInPercent UMA stats to native WebRTC.
Also ensures that audio parameters are accessed atomically.

Bug: b/113648245
Change-Id: Ic812bfe2b2c4cfb3b00d9d411bb4986dfeda1028
Reviewed-on: https://webrtc-review.googlesource.com/97331
Reviewed-by: Minyue Li <minyue@webrtc.org>
Reviewed-by: Ivo Creusen <ivoc@webrtc.org>
Commit-Queue: Henrik Andreassson <henrika@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24550}
2018-09-04 11:22:53 +00:00
944ba82905 Remove check_includes=false from audio_device_impl.
Bug: webrtc:8850, 824831
Change-Id: I89f089e09214ef189fca97c3f1062a0cd8476687
Reviewed-on: https://webrtc-review.googlesource.com/97622
Reviewed-by: Oleh Prypin <oprypin@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24548}
2018-09-04 10:09:42 +00:00
cd87e014f3 Reland "Refactor TestAudioDeviceModule to not depend on EventTimerWrapper."
This is a reland of 9ea5765f78ed3d0d7b0d483e81f08fb8a2e1110a

Original change's description:
> Refactor TestAudioDeviceModule to not depend on EventTimerWrapper.
> 
> In addition, let the processing thread loop explicitly, and not use
> the deprecated builtin looping in PlatformThread.
> 
> Bug: webrtc:3380
> Change-Id: I5171ce3457b80f922c8284259882da63c8f146f1
> Reviewed-on: https://webrtc-review.googlesource.com/96544
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
> Reviewed-by: Artem Titov <titovartem@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#24492}

Bug: webrtc:3380
Change-Id: I671e3a60ace6ade765a8537b7e20e36f1782a60d
Reviewed-on: https://webrtc-review.googlesource.com/97320
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24528}
2018-09-03 08:58:11 +00:00
6be91eb2f8 Revert "Refactor TestAudioDeviceModule to not depend on EventTimerWrapper."
This reverts commit 9ea5765f78ed3d0d7b0d483e81f08fb8a2e1110a.

Reason for revert: Makes the perf test RampUpTest.AudioTransportSequenceNumber fail on windows, almost every time.

Original change's description:
> Refactor TestAudioDeviceModule to not depend on EventTimerWrapper.
> 
> In addition, let the processing thread loop explicitly, and not use
> the deprecated builtin looping in PlatformThread.
> 
> Bug: webrtc:3380
> Change-Id: I5171ce3457b80f922c8284259882da63c8f146f1
> Reviewed-on: https://webrtc-review.googlesource.com/96544
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
> Reviewed-by: Artem Titov <titovartem@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#24492}

TBR=henrika@webrtc.org,nisse@webrtc.org,titovartem@webrtc.org

Change-Id: I8867a22d695494bd5abfda6a97f0719cb3ff3d66
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:3380
Reviewed-on: https://webrtc-review.googlesource.com/96840
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24496}
2018-08-30 12:59:13 +00:00
7bca8ca4e2 Obj-C SDK Cleanup
This CL separates the files under sdk/objc into logical directories, replacing
the previous file layout under Framework/.

A long term goal is to have some system set up to generate the files under
sdk/objc/api (the PeerConnection API wrappers) from the C++ code. In the shorter
term the goal is to abstract out shared concepts from these classes in order to
make them as uniform as possible.

The separation into base/, components/, and helpers/ are to differentiate between
the base layer's common protocols, various utilities and the actual platform
specific components.

The old directory layout that resembled a framework's internal layout is not
necessary, since it is generated by the framework target when building it.

Bug: webrtc:9627
Change-Id: Ib084fd83f050ae980649ca99e841f4fb0580bd8f
Reviewed-on: https://webrtc-review.googlesource.com/94142
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Commit-Queue: Anders Carlsson <andersc@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24493}
2018-08-30 10:42:41 +00:00
9ea5765f78 Refactor TestAudioDeviceModule to not depend on EventTimerWrapper.
In addition, let the processing thread loop explicitly, and not use
the deprecated builtin looping in PlatformThread.

Bug: webrtc:3380
Change-Id: I5171ce3457b80f922c8284259882da63c8f146f1
Reviewed-on: https://webrtc-review.googlesource.com/96544
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24492}
2018-08-30 10:40:01 +00:00
255750bfb0 Adds support for real audio devices in video_quality_test.
The old test supported audio but only in combination with a fake ADM.
The new version allows the user to run real video and audio.

Now possible to do:

./out/Debug/video_loopback.exe --audio --use_real_adm

To run the test in loopback using real default audio devices.

By default:

./out/Debug/video_loopback.exe --audio

runs with fake audio devices as before.

Bug: webrtc:9265
Change-Id: Id89924ec0276f929487c71fc6321dcd9cb92693d
Reviewed-on: https://webrtc-review.googlesource.com/96161
Reviewed-by: Minyue Li <minyue@webrtc.org>
Commit-Queue: Henrik Andreassson <henrika@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24463}
2018-08-28 09:00:45 +00:00
1c0cf3101d Stop using typeof() GNU extension
6009a54aab
switches away from -std=gnu++...

Bug: chromium:427584
Change-Id: Ib9cb76ce6fb901727f696ded3944af0e510c030a
Reviewed-on: https://webrtc-review.googlesource.com/94779
Commit-Queue: Oleh Prypin <oprypin@google.com>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24337}
2018-08-20 08:15:13 +00:00
ee562d874c Don't depend on X11 when rtc_use_x11=false.
This CL makes X11 optional for audio_device_pulse_linux.
Apply the same guards than for audio_device_alsa_linux.
Cf commit 75f18fca8eef7c27073923c46ff73be5ba0e0491.

Bug: webrtc:9569
Change-Id: Iaddbfb62112c504531376bad0db8f04caa4350c7
Reviewed-on: https://webrtc-review.googlesource.com/93030
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Commit-Queue: Yves Gerey <yvesg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24274}
2018-08-13 14:14:27 +00:00
5f7d00eb3d Release audio unit when ios audio device failed to initialize playout and recording.
TBR=henrika@webrtc.org

Bug: webrtc:9552
Change-Id: I7c3e0c1c2126603e7b1cc412cb37cac57eb3cdbf
Reviewed-on: https://webrtc-review.googlesource.com/90085
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24209}
2018-08-07 14:34:12 +00:00
a12c42a6b2 Delete root header file typedef.h.
Usage replaced with stdint.h, rtc_base/system/arch.h and
rtc_base/system/unused.h, as appropriate.

Bug: webrtc:6854
Change-Id: I97225465d14b969903d92979e2df3c3c05d35f18
Reviewed-on: https://webrtc-review.googlesource.com/90249
Reviewed-by: Niklas Enbom <niklas.enbom@webrtc.org>
Reviewed-by: Fredrik Solenberg <solenberg@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24100}
2018-07-25 14:59:26 +00:00
8ff433a133 Move portaudio to proper third_party directory
Bug: webrtc:8366
Change-Id: I2a6464c5097840219825fe08dde9630f2231451a
Reviewed-on: https://webrtc-review.googlesource.com/84581
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Niklas Enbom <niklas.enbom@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24081}
2018-07-24 12:13:25 +00:00
da04e06e04 Fix paths that were trying to go above the root by using too many "../.."
This doesn't cause problems because seems like GN just ignores these attempts and confines everything to the root.

Bug: None
Change-Id: Ief50b6e10f3950b319d0bde547f91dcc7f237cda
Reviewed-on: https://webrtc-review.googlesource.com/90041
Commit-Queue: Oleh Prypin <oprypin@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24063}
2018-07-23 10:25:03 +00:00
b80d710a12 Clean up unneeded includes in audio_device/BUILD.gn.
WebRTC internal headers are always included starting from the root
(e.g. #include "modules/audio_device/..."), so there is no need to
specify the include_dirs removed by this CL.

Bug: webrtc:9538
Change-Id: If26edecc004c6e8c3bbef3c8185c7e272110c951
Reviewed-on: https://webrtc-review.googlesource.com/89391
Reviewed-by: Oleh Prypin <oprypin@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24034}
2018-07-19 06:18:02 +00:00
574e69ace1 Removing -Wno-reorder from audio_device.
Bug: webrtc:9251
Change-Id: I5717af1056d432413d448cea0fb562856b364d46
Reviewed-on: https://webrtc-review.googlesource.com/88360
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23948}
2018-07-12 08:37:45 +00:00