WebKitAudioContext.h [plain text]
#pragma once
#include "AudioContext.h"
#include "WebKitAudioListener.h"
namespace WebCore {
class AudioBuffer;
class Document;
class HTMLMediaElement;
class MediaElementAudioSourceNode;
class MediaStream;
class MediaStreamAudioDestinationNode;
class MediaStreamAudioSourceNode;
class PeriodicWave;
class WebKitAudioBufferSourceNode;
class WebKitAudioPannerNode;
class WebKitDynamicsCompressorNode;
class WebKitOscillatorNode;
class WebKitAudioContext : public AudioContext
{
WTF_MAKE_ISO_ALLOCATED(WebKitAudioContext);
public:
static ExceptionOr<Ref<WebKitAudioContext>> create(Document&);
void close(DOMPromiseDeferred<void>&&);
WebKitAudioListener& listener() { return downcast<WebKitAudioListener>(AudioContext::listener()); }
#if ENABLE(VIDEO)
ExceptionOr<Ref<MediaElementAudioSourceNode>> createMediaElementSource(HTMLMediaElement&);
#endif
#if ENABLE(MEDIA_STREAM)
ExceptionOr<Ref<MediaStreamAudioSourceNode>> createMediaStreamSource(MediaStream&);
ExceptionOr<Ref<MediaStreamAudioDestinationNode>> createMediaStreamDestination();
#endif
ExceptionOr<Ref<WebKitAudioPannerNode>> createWebKitPanner();
ExceptionOr<Ref<WebKitOscillatorNode>> createWebKitOscillator();
ExceptionOr<Ref<PeriodicWave>> createPeriodicWave(Float32Array& real, Float32Array& imaginary);
ExceptionOr<Ref<WebKitAudioBufferSourceNode>> createWebKitBufferSource();
ExceptionOr<Ref<WebKitDynamicsCompressorNode>> createWebKitDynamicsCompressor();
ExceptionOr<Ref<AudioBuffer>> createLegacyBuffer(ArrayBuffer&, bool mixToMono);
protected:
explicit WebKitAudioContext(Document&);
WebKitAudioContext(Document&, float sampleRate, Ref<AudioBuffer>&& renderTarget);
private:
const char* activeDOMObjectName() const override;
bool isWebKitAudioContext() const final { return true; }
};
}
SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::WebKitAudioContext)
static bool isType(const WebCore::BaseAudioContext& context) { return context.isWebKitAudioContext(); }
SPECIALIZE_TYPE_TRAITS_END()