1 module libwasm.bindings.AudioContext; 2 3 import libwasm.types; 4 5 import memutils.ct: tuple; 6 import libwasm.bindings.BaseAudioContext; 7 import libwasm.bindings.HTMLMediaElement; 8 import libwasm.bindings.MediaElementAudioSourceNode; 9 import libwasm.bindings.MediaStream; 10 import libwasm.bindings.MediaStreamAudioDestinationNode; 11 import libwasm.bindings.MediaStreamAudioSourceNode; 12 13 @safe: 14 nothrow: 15 16 struct AudioContext { 17 nothrow: 18 libwasm.bindings.BaseAudioContext.BaseAudioContext _parent; 19 alias _parent this; 20 this(Handle h) { 21 _parent = .BaseAudioContext(h); 22 } 23 auto suspend()() { 24 return JsPromise!(void)(Object_Getter__Handle(this._parent, "suspend")); 25 } 26 auto close()() { 27 return JsPromise!(void)(Object_Getter__Handle(this._parent, "close")); 28 } 29 auto createMediaElementSource()(scope ref HTMLMediaElement mediaElement) { 30 return MediaElementAudioSourceNode(Object_Call_Handle__Handle(this._parent, "createMediaElementSource", mediaElement._parent)); 31 } 32 auto createMediaStreamSource()(scope ref MediaStream mediaStream) { 33 return MediaStreamAudioSourceNode(Object_Call_Handle__Handle(this._parent, "createMediaStreamSource", mediaStream._parent)); 34 } 35 auto createMediaStreamDestination()() { 36 return MediaStreamAudioDestinationNode(Object_Getter__Handle(this._parent, "createMediaStreamDestination")); 37 } 38 } 39 struct AudioContextOptions { 40 nothrow: 41 JsHandle handle; 42 alias handle this; 43 this(Handle h) { 44 this.handle = JsHandle(h); 45 } 46 static auto create() { 47 return AudioContextOptions(libwasm_add__object()); 48 } 49 void sampleRate()(float sampleRate) { 50 Object_Call_float__void(this.handle, "sampleRate", sampleRate); 51 } 52 float sampleRate()() { 53 return Object_Getter__float(this.handle, "sampleRate"); 54 } 55 } 56 57