19 Commits

Author SHA1 Message Date
henrika
8324b525dc Adding playout volume control to WebRtcAudioTrack.java.
Also adds a framework for an AudioManager to be used by both sides (playout and recording).
This initial implementation only does very simple tasks like setting up the correct audio
mode (needed for correct volume behavior). Note that this CL is mainly about modifying
the volume. The added AudioManager is only a place holder for future work. I could have
done the same parts in the WebRtcAudioTrack class but feel that it is better to move these
parts to an AudioManager already at this stage.

The AudioManager supports Init() where actual audio changes are done (set audio mode etc.)
but it can also be used a simple "construct-and-store-audio-parameters" unit, which is the
case here. Hence, the AM now serves as the center for getting audio parameters and then inject
these into playout and recording sides. Previously, both sides acquired their own parameters
and that is more error prone.

BUG=NONE
TEST=AudioDeviceTest
R=perkj@webrtc.org, phoglund@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8875}
2015-03-27 09:56:35 +00:00
tommi@webrtc.org
38492c5b6f Re-land 8810 "- Add a SetPriority method to ThreadWr..."
> Revert 8810 "- Add a SetPriority method to ThreadWrapper"
> Seeing if this is causing roll issues.
> 
> > - Add a SetPriority method to ThreadWrapper
> > - Remove 'priority' from CreateThread and related member variables from implementations
> > - Make supplying a name for threads, non-optional
> > 
> > BUG=
> > R=magjed@webrtc.org
> > 
> > Review URL: https://webrtc-codereview.appspot.com/44729004
> 
> TBR=tommi@webrtc.org
> 
> Review URL: https://webrtc-codereview.appspot.com/48609004

TBR=tommi@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8819}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8819 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-22 14:42:46 +00:00
tommi@webrtc.org
90a1cb4630 Revert 8810 "- Add a SetPriority method to ThreadWrapper"
Seeing if this is causing roll issues.

> - Add a SetPriority method to ThreadWrapper
> - Remove 'priority' from CreateThread and related member variables from implementations
> - Make supplying a name for threads, non-optional
> 
> BUG=
> R=magjed@webrtc.org
> 
> Review URL: https://webrtc-codereview.appspot.com/44729004

TBR=tommi@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8818}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8818 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-22 14:34:46 +00:00
tommi@webrtc.org
b6817d793f - Add a SetPriority method to ThreadWrapper
- Remove 'priority' from CreateThread and related member variables from implementations
- Make supplying a name for threads, non-optional

BUG=
R=magjed@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8810}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8810 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-20 15:52:43 +00:00
tommi@webrtc.org
361981faa8 Use scoped_ptr for ThreadWrapper::CreateThread.
BUG=
R=henrika@webrtc.org, pbos@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8794}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8794 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-19 14:45:42 +00:00
pbos@webrtc.org
86639737b8 Remove thread id from ThreadWrapper::Start().
Removes ThreadPosix::InitParams and a corresponding wait for an event.
This unblocks ThreadPosix::Start which had to wait for thread scheduling
for an event to trigger on the spawned thread, giving faster Start()
calls.

BUG=4413
R=tommi@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8709}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8709 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-13 00:07:45 +00:00
henrika@webrtc.org
474d1eb223 Adds C++/JNI/Java unit test for audio device module on Android.
This CL adds support for unittests of the AudioDeviceModule on Android using both Java and C++. The new framework uses ::testing::TesWithParam to support both Java-based audio and OpenSL ES based audio. However, given existing issues in our OpenSL ES implementation, the list of test parameters only contains Java in this first version. Open SL ES will be enabled as soon as the backend has been refactored.

It also:

- Removes the redundant JNIEnv* argument in webrtc::VoiceEngine::SetAndroidObjects().
- Modifies usage of enable_android_opensl and the WEBRTC_ANDROID_OPENSLES define.
- Adds kAndroidJavaAudio and kAndroidOpenSLESAudio to AudioLayer enumerator.
- Fixes some bugs which were discovered when running the tests.

BUG=NONE
R=phoglund@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8651}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8651 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-09 12:40:43 +00:00
kwiberg@webrtc.org
00b8f6b364 Use base/scoped_ptr.h; system_wrappers/interface/scoped_ptr.h is going away
BUG=
R=andrew@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8517}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8517 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-26 14:43:50 +00:00
henrika@webrtc.org
962c62475e Refactoring WebRTC Java/JNI audio track in C++ and Java.
This CL is part II in a major refactoring effort. See https://webrtc-codereview.appspot.com/33969004 for part I.

- Removes unused code and old WEBRTC logging macros
- Now uses optimal sample rate and buffer size in Java AudioTrack (used hard-coded sample rate before)
- Makes code more inline with the implementation in Chrome
- Adds helper methods for JNI handling to improve readability
- Changes the threading model (high-prio audio thread now lives in Java-land and C++ only works as proxy)
- Simplified the delay estimate
- Adds basic thread checks
- Removes all locks in C++ land
- Removes all locks in Java
- Improves construction/destruction
- Additional cleanup

Tested using AppRTCDemo and WebRTCDemo APKs on N6, N5, N7, Samsung Galaxy S4 and
Samsung Galaxy S4 mini (which uses 44.1kHz as native sample rate).

BUG=NONE
R=magjed@webrtc.org, perkj@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8460}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8460 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-23 11:54:41 +00:00
henrika@webrtc.org
58f6f01acc WebRTC now compiles for enable_android_opensl=1.
Default is enable_android_opensl=0 but we should build for OpenSL as well.

BUG=4293
R=perkj@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8360}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8360 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-13 11:36:12 +00:00
henrika@webrtc.org
dd43bbed8f Volume buttons in AppRTCDemo should affect output audio volume (part II).
See https://webrtc-codereview.appspot.com/32399004/ for part I.

BUG=3279
TEST=AppRTC demo
R=perkj@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7654 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-11-06 15:48:05 +00:00
andrew@webrtc.org
8f69330310 Replace scoped_array<T> with scoped_ptr<T[]>.
scoped_array is deprecated. This was done using a Chromium clang tool:
http://src.chromium.org/viewvc/chrome/trunk/src/tools/clang/rewrite_scoped_ar...

except for the few not-built-on-Linux files which were updated manually.

TESTED=trybots
BUG=2515
R=niklas.enbom@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5985 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-04-25 23:10:28 +00:00
andrew@webrtc.org
c7c432aa9b Remove AudioDevice::{Microphone,Speaker}IsAvailable.
This was only used for logging, except on Mac, where the methods are
now private.

BUG=3132
R=henrika@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5831 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-04-02 16:49:26 +00:00
henrike@webrtc.org
573a1b45b5 Android: Fixes crash when exiting WebRTCDemo.
BUG=2738
R=fischman@webrtc.org, niklas.enbom@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5365 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-01-10 22:58:06 +00:00
henrike@webrtc.org
9ee75e9c77 Enables mixing and matching Java and native audio. It is used for getting best of both worlds capabilities (AEC and low latency).
BUG=N/A
R=fischman@webrtc.org, niklas.enbom@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5270 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-12-11 21:42:44 +00:00
henrike@webrtc.org
a750044396 Fixes a crash in VoE when unregistering JNI hooks.
BUG=11695087
R=andrew@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5144 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-11-20 22:32:12 +00:00
henrike@webrtc.org
c8dea6a00f Use the native sample rate for OpenSL recording.
BUG=N/A
R=fischman@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4771 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-17 18:44:51 +00:00
henrike@webrtc.org
6138c5cfa4 OpenSl: fixes crashes externally reported in issue 2361 and 2362.
BUG=2361,2362
R=fischman@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4726 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-11 18:50:06 +00:00
henrike@webrtc.org
82f014aa0b OpenSL (not default): Enables low latency audio on Android.
BUG=1669
R=andrew@webrtc.org, fischman@webrtc.org, niklas.enbom@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4719 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-10 18:24:07 +00:00