1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CONTENT_RENDERER_MEDIA_WEBRTC_AUDIO_DEVICE_NOT_IMPL_H_ 6 #define CONTENT_RENDERER_MEDIA_WEBRTC_AUDIO_DEVICE_NOT_IMPL_H_ 7 8 #include "base/basictypes.h" 9 #include "base/compiler_specific.h" 10 #include "base/time/time.h" 11 #include "content/common/content_export.h" 12 #include "third_party/webrtc/modules/audio_device/include/audio_device.h" 13 14 namespace content { 15 16 // WebRtcAudioDeviceNotImpl contains default implementations of all methods 17 // in the webrtc::AudioDeviceModule which are currently not supported in Chrome. 18 // The real implementation is in WebRtcAudioDeviceImpl and it derives from 19 // this class. The main purpose of breaking out non-implemented methods into 20 // a separate unit is to make WebRtcAudioDeviceImpl more readable and easier 21 // to maintain. 22 class CONTENT_EXPORT WebRtcAudioDeviceNotImpl NON_EXPORTED_BASE(public webrtc::AudioDeviceModule)23 : NON_EXPORTED_BASE(public webrtc::AudioDeviceModule) { 24 public: 25 WebRtcAudioDeviceNotImpl(); 26 27 // webrtc::Module implementation. 28 // TODO(henrika): it is possible to add functionality in these methods. 29 // Only adding very basic support for now without triggering any callback 30 // in the webrtc::AudioDeviceObserver interface. 31 virtual int32_t ChangeUniqueId(const int32_t id) OVERRIDE; 32 virtual int32_t TimeUntilNextProcess() OVERRIDE; 33 virtual int32_t Process() OVERRIDE; 34 35 // Methods in webrtc::AudioDeviceModule which are not yet implemented. 36 // The idea is that we can move methods from this class to the real 37 // implementation in WebRtcAudioDeviceImpl when needed. 38 39 virtual int32_t RegisterEventObserver( 40 webrtc::AudioDeviceObserver* event_callback) OVERRIDE; 41 virtual int32_t ActiveAudioLayer(AudioLayer* audio_layer) const OVERRIDE; 42 virtual webrtc::AudioDeviceModule::ErrorCode LastError() const OVERRIDE; 43 virtual int16_t PlayoutDevices() OVERRIDE; 44 virtual int16_t RecordingDevices() OVERRIDE; 45 virtual int32_t PlayoutDeviceName( 46 uint16_t index, char name[webrtc::kAdmMaxDeviceNameSize], 47 char guid[webrtc::kAdmMaxGuidSize]) OVERRIDE; 48 virtual int32_t RecordingDeviceName( 49 uint16_t index, char name[webrtc::kAdmMaxDeviceNameSize], 50 char guid[webrtc::kAdmMaxGuidSize]) OVERRIDE; 51 virtual int32_t SetPlayoutDevice(uint16_t index) OVERRIDE; 52 virtual int32_t SetPlayoutDevice(WindowsDeviceType device) OVERRIDE; 53 virtual int32_t SetRecordingDevice(uint16_t index) OVERRIDE; 54 virtual int32_t SetRecordingDevice(WindowsDeviceType device) OVERRIDE; 55 virtual int32_t InitPlayout() OVERRIDE; 56 virtual int32_t InitRecording() OVERRIDE; 57 virtual int32_t SetWaveOutVolume(uint16_t volume_left, 58 uint16_t volume_right) OVERRIDE; 59 virtual int32_t WaveOutVolume(uint16_t* volume_left, 60 uint16_t* volume_right) const OVERRIDE; 61 virtual int32_t SpeakerIsAvailable(bool* available) OVERRIDE; 62 virtual int32_t InitSpeaker() OVERRIDE; 63 virtual bool SpeakerIsInitialized() const OVERRIDE; 64 virtual int32_t MicrophoneIsAvailable(bool* available) OVERRIDE; 65 virtual int32_t InitMicrophone() OVERRIDE; 66 virtual bool MicrophoneIsInitialized() const OVERRIDE; 67 virtual int32_t SpeakerVolumeIsAvailable(bool* available) OVERRIDE; 68 virtual int32_t SetSpeakerVolume(uint32_t volume) OVERRIDE; 69 virtual int32_t SpeakerVolume(uint32_t* volume) const OVERRIDE; 70 virtual int32_t MaxSpeakerVolume(uint32_t* max_volume) const OVERRIDE; 71 virtual int32_t MinSpeakerVolume(uint32_t* min_volume) const OVERRIDE; 72 virtual int32_t SpeakerVolumeStepSize(uint16_t* step_size) const OVERRIDE; 73 virtual int32_t MicrophoneVolumeIsAvailable(bool* available) OVERRIDE; 74 virtual int32_t MicrophoneVolumeStepSize( 75 uint16_t* step_size) const OVERRIDE; 76 virtual int32_t SpeakerMuteIsAvailable(bool* available) OVERRIDE; 77 virtual int32_t SetSpeakerMute(bool enable) OVERRIDE; 78 virtual int32_t SpeakerMute(bool* enabled) const OVERRIDE; 79 virtual int32_t MicrophoneMuteIsAvailable(bool* available) OVERRIDE; 80 virtual int32_t SetMicrophoneMute(bool enable) OVERRIDE; 81 virtual int32_t MicrophoneMute(bool* enabled) const OVERRIDE; 82 virtual int32_t MicrophoneBoostIsAvailable(bool* available) OVERRIDE; 83 virtual int32_t SetMicrophoneBoost(bool enable) OVERRIDE; 84 virtual int32_t MicrophoneBoost(bool* enabled) const OVERRIDE; 85 virtual int32_t SetStereoPlayout(bool enable) OVERRIDE; 86 virtual int32_t StereoPlayout(bool* enabled) const OVERRIDE; 87 virtual int32_t SetStereoRecording(bool enable) OVERRIDE; 88 virtual int32_t StereoRecording(bool* enabled) const OVERRIDE; 89 virtual int32_t SetRecordingChannel(const ChannelType channel) OVERRIDE; 90 virtual int32_t RecordingChannel(ChannelType* channel) const OVERRIDE; 91 virtual int32_t SetPlayoutBuffer( 92 const BufferType type, uint16_t size_ms) OVERRIDE; 93 virtual int32_t PlayoutBuffer( 94 BufferType* type, uint16_t* size_ms) const OVERRIDE; 95 virtual int32_t CPULoad(uint16_t* load) const OVERRIDE; 96 virtual int32_t StartRawOutputFileRecording( 97 const char pcm_file_name_utf8[webrtc::kAdmMaxFileNameSize]) OVERRIDE; 98 virtual int32_t StopRawOutputFileRecording() OVERRIDE; 99 virtual int32_t StartRawInputFileRecording( 100 const char pcm_file_name_utf8[webrtc::kAdmMaxFileNameSize]) OVERRIDE; 101 virtual int32_t StopRawInputFileRecording() OVERRIDE; 102 virtual int32_t SetRecordingSampleRate( 103 const uint32_t samples_per_sec) OVERRIDE; 104 virtual int32_t SetPlayoutSampleRate( 105 const uint32_t samples_per_sec) OVERRIDE; 106 virtual int32_t ResetAudioDevice() OVERRIDE; 107 virtual int32_t SetLoudspeakerStatus(bool enable) OVERRIDE; 108 virtual int32_t GetLoudspeakerStatus(bool* enabled) const OVERRIDE; 109 virtual int32_t SetAGC(bool enable) OVERRIDE; 110 virtual bool AGC() const OVERRIDE; 111 112 protected: 113 virtual ~WebRtcAudioDeviceNotImpl() {}; 114 115 private: 116 base::TimeTicks last_process_time_; 117 DISALLOW_COPY_AND_ASSIGN(WebRtcAudioDeviceNotImpl); 118 }; 119 120 } // namespace content 121 122 #endif // CONTENT_RENDERER_MEDIA_WEBRTC_AUDIO_DEVICE_NOT_IMPL_H_ 123