Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(428)

Unified Diff: media/audio/simple_sources.h

Issue 922663002: Moved the fake input stream's processing onto the audio worker thread. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Updating GN files Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/audio/simple_sources.h
diff --git a/media/audio/simple_sources.h b/media/audio/simple_sources.h
index 7a2176f6bc28788fca658cfd158f1b737d17ac27..fc0d0ff04bce1f346e62f7edc344a8b995336a39 100644
--- a/media/audio/simple_sources.h
+++ b/media/audio/simple_sources.h
@@ -5,15 +5,25 @@
#ifndef MEDIA_AUDIO_SIMPLE_SOURCES_H_
#define MEDIA_AUDIO_SIMPLE_SOURCES_H_
+#include "base/files/file_path.h"
#include "base/synchronization/lock.h"
#include "media/audio/audio_io.h"
+#include "media/base/audio_converter.h"
#include "media/base/seekable_buffer.h"
namespace media {
+class WavAudioHandler;
+
+class SimpleSource : public AudioOutputStream::AudioSourceCallback {
DaleCurtis 2015/02/19 19:54:54 Why is this necessary? Open() is only used in the
phoglund_chromium 2015/02/20 14:22:00 All right.
+ public:
+ ~SimpleSource() override {};
+
+ virtual void Open() {}
+};
+
// An audio source that produces a pure sinusoidal tone.
-class MEDIA_EXPORT SineWaveAudioSource
- : public AudioOutputStream::AudioSourceCallback {
+class MEDIA_EXPORT SineWaveAudioSource : public SimpleSource {
public:
// |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
@@ -44,6 +54,54 @@ class MEDIA_EXPORT SineWaveAudioSource
base::Lock time_lock_;
};
+class FileSource : public SimpleSource,
+ public AudioConverter::InputCallback{
DaleCurtis 2015/02/19 19:54:54 Space after InputCallback
phoglund_chromium 2015/02/20 14:22:00 Done.
+ public:
+ FileSource(const AudioParameters& params,
+ const base::FilePath& path_to_wav_file);
+ ~FileSource() override;
+
+ void Open() override;
+
+ // Implementation of AudioSourceCallback.
+ int OnMoreData(AudioBus* audio_bus, uint32 total_bytes_delay) override;
+ void OnError(AudioOutputStream* stream) override {}
+
+ private:
+ AudioParameters params_;
+ base::FilePath path_to_wav_file_;
+ scoped_ptr<uint8[]> wav_file_data_;
+ scoped_ptr<media::WavAudioHandler> wav_audio_handler_;
DaleCurtis 2015/02/19 19:54:54 No need for media:: prefix on anything in this .h
phoglund_chromium 2015/02/20 14:22:00 Done.
+ scoped_ptr<media::AudioConverter> file_audio_converter_;
+ int wav_file_read_pos_;
+ int buffer_size_;
+
+ // Provides audio data from wav_audio_handler_ into the file audio converter.
+ double ProvideInput(AudioBus* audio_bus,
+ base::TimeDelta buffer_delay) override;
+};
+
+class BeepingSource : public SimpleSource {
+ public:
+ BeepingSource(const AudioParameters& params);
+ ~BeepingSource() override;
+
+ // Implementation of AudioSourceCallback.
+ int OnMoreData(AudioBus* audio_bus, uint32 total_bytes_delay) override;
+ void OnError(AudioOutputStream* stream) override {}
DaleCurtis 2015/02/19 19:54:54 Inline methods aren't allowed for virtual function
phoglund_chromium 2015/02/20 14:22:00 Done.
phoglund_chromium 2015/02/20 14:22:00 Done.
+
+ static void BeepOnce();
+ private:
+ scoped_ptr<uint8[]> buffer_;
+ int buffer_size_;
+ AudioParameters params_;
+ base::TimeTicks last_callback_time_;
+ base::TimeDelta interval_from_last_beep_;
+ int beep_duration_in_buffers_;
+ int beep_generated_in_buffers_;
+ int beep_period_in_frames_;
+};
+
} // namespace media
#endif // MEDIA_AUDIO_SIMPLE_SOURCES_H_

Powered by Google App Engine
This is Rietveld 408576698