MediaStreamAudioSourceNode.h [plain text]
#ifndef MediaStreamAudioSourceNode_h
#define MediaStreamAudioSourceNode_h
#if ENABLE(WEB_AUDIO) && ENABLE(MEDIA_STREAM)
#include "AudioNode.h"
#include "AudioSourceProvider.h"
#include "AudioSourceProviderClient.h"
#include "MediaStream.h"
#include <mutex>
#include <wtf/PassRefPtr.h>
namespace WebCore {
class AudioContext;
class MediaStreamAudioSourceNode : public AudioNode, public AudioSourceProviderClient {
public:
static PassRefPtr<MediaStreamAudioSourceNode> create(AudioContext*, MediaStream*, MediaStreamTrack*, AudioSourceProvider*);
virtual ~MediaStreamAudioSourceNode();
MediaStream* mediaStream() { return m_mediaStream.get(); }
virtual void process(size_t framesToProcess);
virtual void reset();
virtual void setFormat(size_t numberOfChannels, float sampleRate);
AudioSourceProvider* audioSourceProvider() const { return m_audioSourceProvider; }
private:
MediaStreamAudioSourceNode(AudioContext*, MediaStream*, MediaStreamTrack*, AudioSourceProvider*);
virtual double tailTime() const override { return 0; }
virtual double latencyTime() const override { return 0; }
virtual bool propagatesSilence() const override { return false; }
RefPtr<MediaStream> m_mediaStream;
RefPtr<MediaStreamTrack> m_audioTrack;
AudioSourceProvider* m_audioSourceProvider;
std::mutex m_processMutex;
unsigned m_sourceNumberOfChannels;
};
}
#endif // ENABLE(WEB_AUDIO) && ENABLE(MEDIA_STREAM)
#endif // MediaStreamAudioSourceNode_h