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 "MultiChannelResampler.h"
#include <wtf/Lock.h>
#include <wtf/RefPtr.h>
namespace WebCore {
class AudioContext;
class MultiChannelResampler;
class MediaStreamAudioSourceNode : public AudioNode, public AudioSourceProviderClient {
public:
static Ref<MediaStreamAudioSourceNode> create(AudioContext&, MediaStream&, MediaStreamTrack&);
virtual ~MediaStreamAudioSourceNode();
MediaStream* mediaStream() { return &m_mediaStream.get(); }
void process(size_t framesToProcess) override;
void reset() override { }
void setFormat(size_t numberOfChannels, float sampleRate) override;
private:
MediaStreamAudioSourceNode(AudioContext&, MediaStream&, MediaStreamTrack&);
double tailTime() const override { return 0; }
double latencyTime() const override { return 0; }
bool propagatesSilence() const override { return false; }
Ref<MediaStream> m_mediaStream;
Ref<MediaStreamTrack> m_audioTrack;
std::unique_ptr<MultiChannelResampler> m_multiChannelResampler;
Lock m_processMutex;
unsigned m_sourceNumberOfChannels { 0 };
double m_sourceSampleRate { 0 };
};
}
#endif // ENABLE(WEB_AUDIO) && ENABLE(MEDIA_STREAM)
#endif // MediaStreamAudioSourceNode_h