| Index: media/audio/fake_audio_provider.h
|
| diff --git a/media/audio/fake_audio_provider.h b/media/audio/fake_audio_provider.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..96dc879cac6428bca0770b7be2814d1fc819a373
|
| --- /dev/null
|
| +++ b/media/audio/fake_audio_provider.h
|
| @@ -0,0 +1,63 @@
|
| +// Copyright (c) 2015 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_FAKE_AUDIO_PROVIDER_H_
|
| +#define MEDIA_AUDIO_FAKE_AUDIO_PROVIDER_H_
|
| +
|
| +#include "base/callback_forward.h"
|
| +#include "base/memory/ref_counted.h"
|
| +#include "media/base/media_export.h"
|
| +
|
| +namespace base {
|
| +class SingleThreadTaskRunner;
|
| +class FilePath;
|
| +}
|
| +
|
| +namespace media {
|
| +class AudioBus;
|
| +class AudioParameters;
|
| +
|
| +// A fake audio provider. Using a provided message loop, the FakeAudioProvider
|
| +// will generate real-time audio data.
|
| +class MEDIA_EXPORT FakeAudioProvider {
|
| + public:
|
| + // |worker_task_runner| is the task runner on which the InputCB provided to
|
| + // Start() will be executed on. This may or may not be the be for the same
|
| + // thread that invokes the Start/Stop methods.
|
| + // |params| is used to determine the frequency of callbacks.
|
| + FakeAudioProvider(
|
| + const scoped_refptr<base::SingleThreadTaskRunner>& worker_task_runner,
|
| + const AudioParameters& params);
|
| + ~FakeAudioProvider();
|
| +
|
| + void OpenInBeepMode();
|
| + void OpenInFileMode(const base::FilePath& path_to_wav_file);
|
| +
|
| + // Start executing |input_cb| at a regular intervals. Stop() must be called
|
| + // by the same thread before destroying FakeAudioProvider. The callback will
|
| + // be called with an audio bus filled with input data.
|
| + typedef base::Callback<void(AudioBus* audio_bus, int buffer_size)> InputCB;
|
| + void Start(const InputCB& input_cb);
|
| +
|
| + // Stop executing the InputCB provided to Start(). Blocks until the worker
|
| + // loop is not inside a InputCB invocation. Safe to call multiple times.
|
| + // Must be called on the same thread that called Start().
|
| + void Stop();
|
| +
|
| + // TODO(phoglund): See TODO on FakeAudioInputStream::BeepOnce.
|
| + static void BeepOnce();
|
| +
|
| + private:
|
| + // All state and implementation is kept within this ref-counted class because
|
| + // cancellation of posted tasks must happen on the worker thread some time
|
| + // after the call to Stop() (on the main thread) returns.
|
| + class Worker;
|
| + const scoped_refptr<Worker> worker_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(FakeAudioProvider);
|
| +};
|
| +
|
| +} // namespace media
|
| +
|
| +#endif // MEDIA_AUDIO_FAKE_AUDIO_PROVIDER_H_
|
|
|