MediaStreamAudioSource.h [plain text]
#ifndef MediaStreamAudioSource_h
#define MediaStreamAudioSource_h
#if ENABLE(MEDIA_STREAM)
#include "AudioDestinationConsumer.h"
#include "RealtimeMediaSource.h"
#include <wtf/Lock.h>
#include <wtf/RefCounted.h>
#include <wtf/ThreadingPrimitives.h>
#include <wtf/Vector.h>
#include <wtf/text/WTFString.h>
namespace WebCore {
class AudioBus;
class RealtimeMediaSourceCapabilities;
class MediaStreamAudioSource : public RealtimeMediaSource {
public:
static Ref<MediaStreamAudioSource> create();
~MediaStreamAudioSource() { }
RefPtr<RealtimeMediaSourceCapabilities> capabilities() override;
const RealtimeMediaSourceSettings& settings() override;
const String& deviceId() const { return m_deviceId; }
void setDeviceId(const String& deviceId) { m_deviceId = deviceId; }
void setAudioFormat(size_t numberOfChannels, float sampleRate);
void consumeAudio(AudioBus*, size_t numberOfFrames);
void addAudioConsumer(AudioDestinationConsumer*);
bool removeAudioConsumer(AudioDestinationConsumer*);
const Vector<RefPtr<AudioDestinationConsumer>>& audioConsumers() const { return m_audioConsumers; }
private:
MediaStreamAudioSource();
AudioSourceProvider* audioSourceProvider() override;
String m_deviceId;
Lock m_audioConsumersLock;
Vector<RefPtr<AudioDestinationConsumer>> m_audioConsumers;
RealtimeMediaSourceSettings m_currentSettings;
};
}
#endif // ENABLE(MEDIA_STREAM)
#endif // MediaStreamAudioSource_h