MediaStreamAudioSource.h [plain text]
#ifndef MediaStreamAudioSource_h
#define MediaStreamAudioSource_h
#if ENABLE(MEDIA_STREAM)
#include "AudioDestinationConsumer.h"
#include "MediaStreamSource.h"
#include <wtf/RefCounted.h>
#include <wtf/ThreadingPrimitives.h>
#include <wtf/Vector.h>
#include <wtf/text/WTFString.h>
namespace WebCore {
class AudioBus;
class MediaStreamSourceCapabilities;
class MediaStreamAudioSource : public MediaStreamSource {
public:
static RefPtr<MediaStreamAudioSource> create();
~MediaStreamAudioSource() { }
virtual bool useIDForTrackID() const { return true; }
virtual RefPtr<MediaStreamSourceCapabilities> capabilities() const;
virtual const MediaStreamSourceStates& states();
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(PassRefPtr<AudioDestinationConsumer>);
bool removeAudioConsumer(AudioDestinationConsumer*);
const Vector<RefPtr<AudioDestinationConsumer>>& audioConsumers() const { return m_audioConsumers; }
private:
MediaStreamAudioSource();
String m_deviceId;
Mutex m_audioConsumersLock;
Vector<RefPtr<AudioDestinationConsumer>> m_audioConsumers;
MediaStreamSourceStates m_currentStates;
};
}
#endif // ENABLE(MEDIA_STREAM)
#endif // MediaStreamAudioSource_h