This CL performs some simplifications and cleanups of the moved audio code. * All JNI interaction now goes from the C++ audio manager calling into the Java audio manager. The calls back from the Java code to the C++ audio manager are removed (this was related to caching audio parameters). It's simpler this way because the Java code is now unaware of the C++ layer and it will be easier to make this into a Java interface. * A bunch of state was removed that was related to caching the audio parameters. * Some unused functions from audio manager was removed. * The Java audio manager no longer depends on ContextUtils, and the context has to be passed in externally instead. This is done because we want to get rid of ContextUtils eventually. * The selection of what AudioDeviceModule to create (AAudio, OpenSLES input/output is now exposed in the interface. The reason is that client should decide and create what they need explicitly instead of setting blacklists in static global WebRTC classes. This will be more modular long term. * Selection of what audio device module to create (OpenSLES combinations) no longer requires instantiating a C++ AudioManager and is done with static enumeration methods instead. Bug: webrtc:7452 Change-Id: Iba29cf7447a1f6063abd9544d7315e10095167c8 Reviewed-on: https://webrtc-review.googlesource.com/63760 Reviewed-by: Magnus Jedvert <magjed@webrtc.org> Reviewed-by: Paulina Hensman <phensman@webrtc.org> Commit-Queue: Magnus Jedvert <magjed@webrtc.org> Cr-Commit-Position: refs/heads/master@{#22542}
This directory holds a Java implementation of the webrtc::PeerConnection API, as
well as the JNI glue C++ code that lets the Java implementation reuse the C++
implementation of the same API.
To build the Java API and related tests, make sure you have a WebRTC checkout
with Android specific parts. This can be used for linux development as well by
configuring gn appropriately, as it is a superset of the webrtc checkout:
fetch --nohooks webrtc_android
gclient sync
You also must generate GN projects with:
--args='target_os="android" target_cpu="arm"'
More information on getting the code, compiling and running the AppRTCMobile
app can be found at:
https://webrtc.org/native-code/android/
To use the Java API, start by looking at the public interface of
org.webrtc.PeerConnection{,Factory} and the org.webrtc.PeerConnectionTest.
To understand the implementation of the API, see the native code in src/jni/pc/.