127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org/* 227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org * 427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org * Use of this source code is governed by a BSD-style license 527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org * that can be found in the LICENSE file in the root of the source 627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org * tree. An additional intellectual property rights grant can be found 727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org * in the file PATENTS. All contributing project authors may 827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org * be found in the AUTHORS file in the root of the source tree. 927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org */ 1027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 1127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org#ifndef WEBRTC_MODULES_AUDIO_DEVICE_ANDROID_AUDIO_DEVICE_TEMPLATE_H_ 1227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org#define WEBRTC_MODULES_AUDIO_DEVICE_ANDROID_AUDIO_DEVICE_TEMPLATE_H_ 1327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 1427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org#include "webrtc/modules/audio_device/audio_device_generic.h" 1527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 1627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org#include "webrtc/system_wrappers/interface/trace.h" 1727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 1827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.orgnamespace webrtc { 1927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 2027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org// InputType/OutputType can be any class that implements the capturing/rendering 2127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org// part of the AudioDeviceGeneric API. 2227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.orgtemplate <class InputType, class OutputType> 2327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.orgclass AudioDeviceTemplate : public AudioDeviceGeneric { 2427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org public: 2527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org static int32_t SetAndroidAudioDeviceObjects(void* javaVM, 2627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org void* env, 2727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org void* context) { 2827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org if (OutputType::SetAndroidAudioDeviceObjects(javaVM, env, context) == -1) { 2927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return -1; 3027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 3127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return InputType::SetAndroidAudioDeviceObjects(javaVM, env, context); 3227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 33f3a2ef39a9ba3d382916bcfb67c952781ab91df3henrike@webrtc.org 34f3a2ef39a9ba3d382916bcfb67c952781ab91df3henrike@webrtc.org static void ClearAndroidAudioDeviceObjects() { 35f3a2ef39a9ba3d382916bcfb67c952781ab91df3henrike@webrtc.org OutputType::ClearAndroidAudioDeviceObjects(); 36f3a2ef39a9ba3d382916bcfb67c952781ab91df3henrike@webrtc.org InputType::ClearAndroidAudioDeviceObjects(); 37f3a2ef39a9ba3d382916bcfb67c952781ab91df3henrike@webrtc.org } 38f3a2ef39a9ba3d382916bcfb67c952781ab91df3henrike@webrtc.org 3927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org explicit AudioDeviceTemplate(const int32_t id) 4027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org : output_(id), 4127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org input_(id, &output_) { 4227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 4327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 4427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org virtual ~AudioDeviceTemplate() { 4527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 4627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 4727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t ActiveAudioLayer( 4827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org AudioDeviceModule::AudioLayer& audioLayer) const { // NOLINT 4927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org audioLayer = AudioDeviceModule::kPlatformDefaultAudio; 5027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return 0; 5127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 5227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 5327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t Init() { 5427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.Init() | input_.Init(); 5527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 5627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 5727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t Terminate() { 5827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.Terminate() | input_.Terminate(); 5927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 6027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 6127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org bool Initialized() const { 6227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.Initialized() && input_.Initialized(); 6327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 6427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 6527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int16_t PlayoutDevices() { 6627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.PlayoutDevices(); 6727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 6827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 6927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int16_t RecordingDevices() { 7027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.RecordingDevices(); 7127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 7227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 7327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t PlayoutDeviceName( 7427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org uint16_t index, 7527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org char name[kAdmMaxDeviceNameSize], 7627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org char guid[kAdmMaxGuidSize]) { 7727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.PlayoutDeviceName(index, name, guid); 7827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 7927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 8027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t RecordingDeviceName( 8127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org uint16_t index, 8227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org char name[kAdmMaxDeviceNameSize], 8327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org char guid[kAdmMaxGuidSize]) { 8427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.RecordingDeviceName(index, name, guid); 8527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 8627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 8727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t SetPlayoutDevice(uint16_t index) { 8827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.SetPlayoutDevice(index); 8927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 9027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 9127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t SetPlayoutDevice( 9227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org AudioDeviceModule::WindowsDeviceType device) { 9327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.SetPlayoutDevice(device); 9427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 9527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 9627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t SetRecordingDevice(uint16_t index) { 9727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.SetRecordingDevice(index); 9827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 9927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 10027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t SetRecordingDevice( 10127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org AudioDeviceModule::WindowsDeviceType device) { 10227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.SetRecordingDevice(device); 10327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 10427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 10527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t PlayoutIsAvailable( 10627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org bool& available) { // NOLINT 10727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.PlayoutIsAvailable(available); 10827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 10927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 11027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t InitPlayout() { 11127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.InitPlayout(); 11227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 11327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 11427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org bool PlayoutIsInitialized() const { 11527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.PlayoutIsInitialized(); 11627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 11727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 11827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t RecordingIsAvailable( 11927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org bool& available) { // NOLINT 12027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.RecordingIsAvailable(available); 12127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 12227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 12327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t InitRecording() { 12427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.InitRecording(); 12527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 12627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 12727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org bool RecordingIsInitialized() const { 12827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.RecordingIsInitialized(); 12927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 13027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 13127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t StartPlayout() { 13227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.StartPlayout(); 13327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 13427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 13527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t StopPlayout() { 13627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.StopPlayout(); 13727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 13827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 13927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org bool Playing() const { 14027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.Playing(); 14127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 14227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 14327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t StartRecording() { 14427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.StartRecording(); 14527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 14627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 14727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t StopRecording() { 14827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.StopRecording(); 14927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 15027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 15127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org bool Recording() const { 15227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.Recording() ; 15327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 15427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 15527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t SetAGC(bool enable) { 15627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.SetAGC(enable); 15727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 15827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 15927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org bool AGC() const { 16027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.AGC(); 16127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 16227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 16327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t SetWaveOutVolume(uint16_t volumeLeft, 16427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org uint16_t volumeRight) { 16527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, 0, 16627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org " API call not supported on this platform"); 16727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return -1; 16827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 16927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 17027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t WaveOutVolume( 17127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org uint16_t& volumeLeft, // NOLINT 17227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org uint16_t& volumeRight) const { // NOLINT 17327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, 0, 17427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org " API call not supported on this platform"); 17527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return -1; 17627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 17727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 17827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t InitSpeaker() { 17927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.InitSpeaker(); 18027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 18127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 18227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org bool SpeakerIsInitialized() const { 18327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.SpeakerIsInitialized(); 18427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 18527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 18627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t InitMicrophone() { 18727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.InitMicrophone(); 18827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 18927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 19027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org bool MicrophoneIsInitialized() const { 19127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.MicrophoneIsInitialized(); 19227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 19327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 19427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t SpeakerVolumeIsAvailable( 19527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org bool& available) { // NOLINT 19627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.SpeakerVolumeIsAvailable(available); 19727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 19827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 19927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t SetSpeakerVolume(uint32_t volume) { 20027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.SetSpeakerVolume(volume); 20127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 20227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 20327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t SpeakerVolume( 20427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org uint32_t& volume) const { // NOLINT 20527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.SpeakerVolume(volume); 20627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 20727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 20827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t MaxSpeakerVolume( 20927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org uint32_t& maxVolume) const { // NOLINT 21027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.MaxSpeakerVolume(maxVolume); 21127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 21227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 21327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t MinSpeakerVolume( 21427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org uint32_t& minVolume) const { // NOLINT 21527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.MinSpeakerVolume(minVolume); 21627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 21727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 21827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t SpeakerVolumeStepSize( 21927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org uint16_t& stepSize) const { // NOLINT 22027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.SpeakerVolumeStepSize(stepSize); 22127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 22227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 22327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t MicrophoneVolumeIsAvailable( 22427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org bool& available) { // NOLINT 22527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.MicrophoneVolumeIsAvailable(available); 22627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 22727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 22827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t SetMicrophoneVolume(uint32_t volume) { 22927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.SetMicrophoneVolume(volume); 23027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 23127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 23227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t MicrophoneVolume( 23327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org uint32_t& volume) const { // NOLINT 23427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.MicrophoneVolume(volume); 23527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 23627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 23727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t MaxMicrophoneVolume( 23827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org uint32_t& maxVolume) const { // NOLINT 23927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.MaxMicrophoneVolume(maxVolume); 24027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 24127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 24227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t MinMicrophoneVolume( 24327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org uint32_t& minVolume) const { // NOLINT 24427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.MinMicrophoneVolume(minVolume); 24527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 24627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 24727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t MicrophoneVolumeStepSize( 24827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org uint16_t& stepSize) const { // NOLINT 24927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.MicrophoneVolumeStepSize(stepSize); 25027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 25127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 25227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t SpeakerMuteIsAvailable( 25327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org bool& available) { // NOLINT 25427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.SpeakerMuteIsAvailable(available); 25527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 25627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 25727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t SetSpeakerMute(bool enable) { 25827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.SetSpeakerMute(enable); 25927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 26027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 26127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t SpeakerMute( 26227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org bool& enabled) const { // NOLINT 26327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.SpeakerMute(enabled); 26427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 26527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 26627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t MicrophoneMuteIsAvailable( 26727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org bool& available) { // NOLINT 26827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.MicrophoneMuteIsAvailable(available); 26927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 27027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 27127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t SetMicrophoneMute(bool enable) { 27227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.SetMicrophoneMute(enable); 27327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 27427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 27527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t MicrophoneMute( 27627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org bool& enabled) const { // NOLINT 27727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.MicrophoneMute(enabled); 27827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 27927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 28027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t MicrophoneBoostIsAvailable( 28127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org bool& available) { // NOLINT 28227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.MicrophoneBoostIsAvailable(available); 28327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 28427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 28527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t SetMicrophoneBoost(bool enable) { 28627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.SetMicrophoneBoost(enable); 28727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 28827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 28927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t MicrophoneBoost( 29027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org bool& enabled) const { // NOLINT 29127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.MicrophoneBoost(enabled); 29227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 29327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 29427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t StereoPlayoutIsAvailable( 29527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org bool& available) { // NOLINT 29627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.StereoPlayoutIsAvailable(available); 29727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 29827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 29927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t SetStereoPlayout(bool enable) { 30027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.SetStereoPlayout(enable); 30127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 30227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 30327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t StereoPlayout( 30427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org bool& enabled) const { // NOLINT 30527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.StereoPlayout(enabled); 30627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 30727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 30827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t StereoRecordingIsAvailable( 30927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org bool& available) { // NOLINT 31027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.StereoRecordingIsAvailable(available); 31127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 31227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 31327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t SetStereoRecording(bool enable) { 31427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.SetStereoRecording(enable); 31527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 31627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 31727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t StereoRecording( 31827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org bool& enabled) const { // NOLINT 31927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.StereoRecording(enabled); 32027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 32127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 32227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t SetPlayoutBuffer( 32327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org const AudioDeviceModule::BufferType type, 32427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org uint16_t sizeMS) { 32527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.SetPlayoutBuffer(type, sizeMS); 32627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 32727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 32827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t PlayoutBuffer( 32927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org AudioDeviceModule::BufferType& type, 33027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org uint16_t& sizeMS) const { // NOLINT 33127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.PlayoutBuffer(type, sizeMS); 33227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 33327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 33427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t PlayoutDelay( 33527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org uint16_t& delayMS) const { // NOLINT 33627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.PlayoutDelay(delayMS); 33727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 33827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 33927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t RecordingDelay( 34027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org uint16_t& delayMS) const { // NOLINT 34127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.RecordingDelay(delayMS); 34227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 34327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 34427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t CPULoad( 34527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org uint16_t& load) const { // NOLINT 34627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, 0, 34727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org " API call not supported on this platform"); 34827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return -1; 34927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 35027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 35127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org bool PlayoutWarning() const { 35227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.PlayoutWarning(); 35327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 35427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 35527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org bool PlayoutError() const { 35627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.PlayoutError(); 35727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 35827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 35927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org bool RecordingWarning() const { 36027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.RecordingWarning(); 36127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 36227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 36327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org bool RecordingError() const { 36427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.RecordingError(); 36527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 36627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 36727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org void ClearPlayoutWarning() { 36827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.ClearPlayoutWarning(); 36927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 37027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 37127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org void ClearPlayoutError() { 37227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.ClearPlayoutError(); 37327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 37427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 37527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org void ClearRecordingWarning() { 37627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.ClearRecordingWarning(); 37727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 37827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 37927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org void ClearRecordingError() { 38027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.ClearRecordingError(); 38127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 38227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 38327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org void AttachAudioBuffer( 38427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org AudioDeviceBuffer* audioBuffer) { 38527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org output_.AttachAudioBuffer(audioBuffer); 38627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org input_.AttachAudioBuffer(audioBuffer); 38727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 38827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 38927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t SetRecordingSampleRate( 39027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org const uint32_t samplesPerSec) { 39127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return input_.SetRecordingSampleRate(samplesPerSec); 39227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 39327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 39427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t SetPlayoutSampleRate( 39527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org const uint32_t samplesPerSec) { 39627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.SetPlayoutSampleRate(samplesPerSec); 39727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 39827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 39927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t SetLoudspeakerStatus(bool enable) { 40027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.SetLoudspeakerStatus(enable); 40127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 40227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 40327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org int32_t GetLoudspeakerStatus( 40427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org bool& enable) const { // NOLINT 40527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org return output_.GetLoudspeakerStatus(enable); 40627f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org } 40727f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 40827f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org private: 40927f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org OutputType output_; 41027f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org InputType input_; 41127f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org}; 41227f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 41327f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org} // namespace webrtc 41427f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org 41527f08414780932bbd4bd0fa2bbf759787b9c2e03henrike@webrtc.org#endif // WEBRTC_MODULES_AUDIO_DEVICE_ANDROID_AUDIO_DEVICE_TEMPLATE_H_ 416