chromium/media/base/audio_capturer_source.h

// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef MEDIA_BASE_AUDIO_CAPTURER_SOURCE_H_
#define MEDIA_BASE_AUDIO_CAPTURER_SOURCE_H_

#include <string>
#include <vector>

#include "base/memory/ref_counted.h"
#include "media/base/audio_bus.h"
#include "media/base/audio_parameters.h"
#include "media/base/media_export.h"

namespace media {

class AudioProcessorControls;
struct AudioGlitchInfo;

// AudioCapturerSource is an interface representing the source for
// captured audio. An implementation will periodically call
// `CaptureCallback::Capture()` to pass the audio samples. All methods must be
// called on the same thread. The supplied `CaptureCallback` will be called on
// the same thread, except `Capture()`. Implementations should use a dedicated
// thread to receive the stream and call `CaptureCallback::Capture()` in order
// to ensure that the client receives the stream without delays.
class AudioCapturerSource
    : public base::RefCountedThreadSafe<media::AudioCapturerSource> {};

}  // namespace media

#endif  // MEDIA_BASE_AUDIO_CAPTURER_SOURCE_H_