Home | History | Annotate | Download | only in media
      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
     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 InitSpeaker() OVERRIDE;
     62   virtual bool SpeakerIsInitialized() const OVERRIDE;
     63   virtual int32_t InitMicrophone() OVERRIDE;
     64   virtual bool MicrophoneIsInitialized() const OVERRIDE;
     65   virtual int32_t SpeakerVolumeIsAvailable(bool* available) OVERRIDE;
     66   virtual int32_t SetSpeakerVolume(uint32_t volume) OVERRIDE;
     67   virtual int32_t SpeakerVolume(uint32_t* volume) const OVERRIDE;
     68   virtual int32_t MaxSpeakerVolume(uint32_t* max_volume) const OVERRIDE;
     69   virtual int32_t MinSpeakerVolume(uint32_t* min_volume) const OVERRIDE;
     70   virtual int32_t SpeakerVolumeStepSize(uint16_t* step_size) const OVERRIDE;
     71   virtual int32_t MicrophoneVolumeIsAvailable(bool* available) OVERRIDE;
     72   virtual int32_t MicrophoneVolumeStepSize(
     73       uint16_t* step_size) const OVERRIDE;
     74   virtual int32_t SpeakerMuteIsAvailable(bool* available) OVERRIDE;
     75   virtual int32_t SetSpeakerMute(bool enable) OVERRIDE;
     76   virtual int32_t SpeakerMute(bool* enabled) const OVERRIDE;
     77   virtual int32_t MicrophoneMuteIsAvailable(bool* available) OVERRIDE;
     78   virtual int32_t SetMicrophoneMute(bool enable) OVERRIDE;
     79   virtual int32_t MicrophoneMute(bool* enabled) const OVERRIDE;
     80   virtual int32_t MicrophoneBoostIsAvailable(bool* available) OVERRIDE;
     81   virtual int32_t SetMicrophoneBoost(bool enable) OVERRIDE;
     82   virtual int32_t MicrophoneBoost(bool* enabled) const OVERRIDE;
     83   virtual int32_t SetStereoPlayout(bool enable) OVERRIDE;
     84   virtual int32_t StereoPlayout(bool* enabled) const OVERRIDE;
     85   virtual int32_t SetStereoRecording(bool enable) OVERRIDE;
     86   virtual int32_t StereoRecording(bool* enabled) const OVERRIDE;
     87   virtual int32_t SetRecordingChannel(const ChannelType channel) OVERRIDE;
     88   virtual int32_t RecordingChannel(ChannelType* channel) const OVERRIDE;
     89   virtual int32_t SetPlayoutBuffer(
     90       const BufferType type, uint16_t size_ms) OVERRIDE;
     91   virtual int32_t PlayoutBuffer(
     92       BufferType* type, uint16_t* size_ms) const OVERRIDE;
     93   virtual int32_t CPULoad(uint16_t* load) const OVERRIDE;
     94   virtual int32_t StartRawOutputFileRecording(
     95       const char pcm_file_name_utf8[webrtc::kAdmMaxFileNameSize]) OVERRIDE;
     96   virtual int32_t StopRawOutputFileRecording() OVERRIDE;
     97   virtual int32_t StartRawInputFileRecording(
     98       const char pcm_file_name_utf8[webrtc::kAdmMaxFileNameSize]) OVERRIDE;
     99   virtual int32_t StopRawInputFileRecording() OVERRIDE;
    100   virtual int32_t SetRecordingSampleRate(
    101       const uint32_t samples_per_sec) OVERRIDE;
    102   virtual int32_t SetPlayoutSampleRate(
    103       const uint32_t samples_per_sec) OVERRIDE;
    104   virtual int32_t ResetAudioDevice() OVERRIDE;
    105   virtual int32_t SetLoudspeakerStatus(bool enable) OVERRIDE;
    106   virtual int32_t GetLoudspeakerStatus(bool* enabled) const OVERRIDE;
    107   virtual int32_t SetAGC(bool enable) OVERRIDE;
    108   virtual bool AGC() const OVERRIDE;
    109 
    110  protected:
    111   virtual ~WebRtcAudioDeviceNotImpl() {};
    112 
    113  private:
    114   base::TimeTicks last_process_time_;
    115   DISALLOW_COPY_AND_ASSIGN(WebRtcAudioDeviceNotImpl);
    116 };
    117 
    118 }  // namespace content
    119 
    120 #endif  // CONTENT_RENDERER_MEDIA_WEBRTC_AUDIO_DEVICE_NOT_IMPL_H_
    121