| // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef MEDIA_AUDIO_SIMPLE_SOURCES_H_ |
| #define MEDIA_AUDIO_SIMPLE_SOURCES_H_ |
| |
| #include "media/audio/audio_output.h" |
| |
| // An audio source that produces a pure sinusoidal tone. Each platform needs |
| // a slightly different implementation because it needs to handle the native |
| // audio buffer format. |
| class SineWaveAudioSource : public AudioOutputStream::AudioSourceCallback { |
| public: |
| enum Format { |
| FORMAT_8BIT_LINEAR_PCM, |
| FORMAT_16BIT_LINEAR_PCM, |
| }; |
| |
| // |channels| is the number of audio channels, |freq| is the frequency in |
| // hertz and it has to be less than half of the sampling frequency |
| // |sample_freq| or else you will get aliasing. |
| SineWaveAudioSource(Format format, int channels, |
| double freq, double sample_freq); |
| virtual ~SineWaveAudioSource() {} |
| |
| // Implementation of AudioSourceCallback. |
| virtual size_t OnMoreData(AudioOutputStream* stream, |
| void* dest, size_t max_size); |
| virtual void OnClose(AudioOutputStream* stream); |
| virtual void OnError(AudioOutputStream* stream, int code); |
| |
| protected: |
| Format format_; |
| int channels_; |
| double freq_; |
| double sample_freq_; |
| }; |
| |
| #endif // MEDIA_AUDIO_SIMPLE_SOURCES_H_ |