Android audio code: Replace C++ template with input/output interface
Bug: webrtc:7452 Change-Id: Id816500051e065918bba5c2235d38ad8eb50a8eb Reviewed-on: https://webrtc-review.googlesource.com/64442 Commit-Queue: Magnus Jedvert <magjed@webrtc.org> Reviewed-by: Paulina Hensman <phensman@webrtc.org> Cr-Commit-Position: refs/heads/master@{#22660}
This commit is contained in:
committed by
Commit Bot
parent
85eef49fa2
commit
1a18e0ac46
@ -11,31 +11,76 @@
|
||||
#include "sdk/android/native_api/audio_device_module/audio_device_android.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <utility>
|
||||
|
||||
#include "rtc_base/logging.h"
|
||||
#include "rtc_base/ptr_util.h"
|
||||
#include "rtc_base/refcount.h"
|
||||
#include "rtc_base/refcountedobject.h"
|
||||
#include "system_wrappers/include/metrics.h"
|
||||
#include "sdk/android/src/jni/audio_device/aaudio_player.h"
|
||||
#include "sdk/android/src/jni/audio_device/aaudio_recorder.h"
|
||||
#include "sdk/android/src/jni/audio_device/audio_manager.h"
|
||||
#include "sdk/android/src/jni/audio_device/audio_record_jni.h"
|
||||
#include "sdk/android/src/jni/audio_device/audio_track_jni.h"
|
||||
#include "sdk/android/src/jni/audio_device/opensles_player.h"
|
||||
#include "sdk/android/src/jni/audio_device/opensles_recorder.h"
|
||||
#include "system_wrappers/include/metrics.h"
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
namespace {
|
||||
|
||||
// This template function takes care of some boiler plate.
|
||||
template <typename AudioInputT, typename AudioOutputT>
|
||||
rtc::scoped_refptr<AudioDeviceModule> CreateAudioDeviceModuleTemplate(
|
||||
AudioDeviceModule::AudioLayer audio_layer,
|
||||
JNIEnv* env,
|
||||
jobject application_context) {
|
||||
auto audio_manager = rtc::MakeUnique<android_adm::AudioManager>(
|
||||
env, audio_layer, JavaParamRef<jobject>(application_context));
|
||||
auto audio_input = rtc::MakeUnique<AudioInputT>(audio_manager.get());
|
||||
auto audio_output = rtc::MakeUnique<AudioOutputT>(audio_manager.get());
|
||||
return CreateAudioDeviceModuleFromInputAndOutput(
|
||||
audio_layer, std::move(audio_manager), std::move(audio_input),
|
||||
std::move(audio_output));
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
#if defined(AUDIO_DEVICE_INCLUDE_ANDROID_AAUDIO)
|
||||
rtc::scoped_refptr<AudioDeviceModule> CreateAAudioAudioDeviceModule(
|
||||
JNIEnv* env,
|
||||
jobject application_context) {
|
||||
return android_adm::AudioManager::CreateAAudioAudioDeviceModule(
|
||||
env, JavaParamRef<jobject>(application_context));
|
||||
RTC_LOG(INFO) << __FUNCTION__;
|
||||
return CreateAudioDeviceModuleTemplate<android_adm::AAudioRecorder,
|
||||
android_adm::AAudioPlayer>(
|
||||
AudioDeviceModule::kAndroidAAudioAudio, env, application_context);
|
||||
}
|
||||
#endif
|
||||
|
||||
rtc::scoped_refptr<AudioDeviceModule> CreateAudioDeviceModule(
|
||||
rtc::scoped_refptr<AudioDeviceModule> CreateJavaAudioDeviceModule(
|
||||
JNIEnv* env,
|
||||
jobject application_context,
|
||||
bool use_opensles_input,
|
||||
bool use_opensles_output) {
|
||||
return android_adm::AudioManager::CreateAudioDeviceModule(
|
||||
env, JavaParamRef<jobject>(application_context), use_opensles_input,
|
||||
use_opensles_output);
|
||||
jobject application_context) {
|
||||
return CreateAudioDeviceModuleTemplate<android_adm::AudioRecordJni,
|
||||
android_adm::AudioTrackJni>(
|
||||
AudioDeviceModule::kAndroidJavaAudio, env, application_context);
|
||||
}
|
||||
|
||||
rtc::scoped_refptr<AudioDeviceModule> CreateOpenSLESAudioDeviceModule(
|
||||
JNIEnv* env,
|
||||
jobject application_context) {
|
||||
return CreateAudioDeviceModuleTemplate<android_adm::OpenSLESRecorder,
|
||||
android_adm::OpenSLESPlayer>(
|
||||
AudioDeviceModule::kAndroidJavaAudio, env, application_context);
|
||||
}
|
||||
|
||||
rtc::scoped_refptr<AudioDeviceModule>
|
||||
CreateJavaInputAndOpenSLESOutputAudioDeviceModule(JNIEnv* env,
|
||||
jobject application_context) {
|
||||
return CreateAudioDeviceModuleTemplate<android_adm::AudioRecordJni,
|
||||
android_adm::OpenSLESPlayer>(
|
||||
AudioDeviceModule::kAndroidJavaInputAndOpenSLESOutputAudio, env,
|
||||
application_context);
|
||||
}
|
||||
|
||||
} // namespace webrtc
|
||||
|
||||
@ -23,11 +23,17 @@ rtc::scoped_refptr<AudioDeviceModule> CreateAAudioAudioDeviceModule(
|
||||
jobject application_context);
|
||||
#endif
|
||||
|
||||
rtc::scoped_refptr<AudioDeviceModule> CreateAudioDeviceModule(
|
||||
rtc::scoped_refptr<AudioDeviceModule> CreateJavaAudioDeviceModule(
|
||||
JNIEnv* env,
|
||||
jobject application_context,
|
||||
bool use_opensles_input,
|
||||
bool use_opensles_output);
|
||||
jobject application_context);
|
||||
|
||||
rtc::scoped_refptr<AudioDeviceModule> CreateOpenSLESAudioDeviceModule(
|
||||
JNIEnv* env,
|
||||
jobject application_context);
|
||||
|
||||
rtc::scoped_refptr<AudioDeviceModule>
|
||||
CreateJavaInputAndOpenSLESOutputAudioDeviceModule(JNIEnv* env,
|
||||
jobject application_context);
|
||||
|
||||
} // namespace webrtc
|
||||
|
||||
|
||||
Reference in New Issue
Block a user