2023-05-21 20:36:22 +01:00
|
|
|
#import <WebAudio/BaseAudioContext.idl>
|
|
|
|
|
|
2023-06-27 13:34:51 -04:00
|
|
|
// https://www.w3.org/TR/webaudio/#enumdef-audiocontextlatencycategory
|
|
|
|
|
enum AudioContextLatencyCategory { "balanced", "interactive", "playback" };
|
|
|
|
|
|
2023-05-21 20:36:22 +01:00
|
|
|
// https://webaudio.github.io/web-audio-api/#AudioContext
|
|
|
|
|
[Exposed=Window]
|
|
|
|
|
interface AudioContext : BaseAudioContext {
|
2023-06-27 13:34:51 -04:00
|
|
|
constructor(optional AudioContextOptions contextOptions = {});
|
|
|
|
|
readonly attribute double baseLatency;
|
|
|
|
|
readonly attribute double outputLatency;
|
|
|
|
|
AudioTimestamp getOutputTimestamp ();
|
|
|
|
|
Promise<undefined> resume ();
|
|
|
|
|
Promise<undefined> suspend ();
|
|
|
|
|
Promise<undefined> close ();
|
2025-01-15 23:08:23 +00:00
|
|
|
MediaElementAudioSourceNode createMediaElementSource (HTMLMediaElement mediaElement);
|
2024-05-19 22:15:54 +12:00
|
|
|
[FIXME] MediaStreamAudioSourceNode createMediaStreamSource (MediaStream mediaStream);
|
|
|
|
|
[FIXME] MediaStreamTrackAudioSourceNode createMediaStreamTrackSource (MediaStreamTrack mediaStreamTrack);
|
|
|
|
|
[FIXME] MediaStreamAudioDestinationNode createMediaStreamDestination ();
|
2023-06-27 13:34:51 -04:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
dictionary AudioContextOptions {
|
2023-10-25 17:27:19 +02:00
|
|
|
AudioContextLatencyCategory latencyHint = "interactive";
|
|
|
|
|
float sampleRate;
|
2023-06-27 13:34:51 -04:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
dictionary AudioTimestamp {
|
2025-01-14 00:08:27 +13:00
|
|
|
[GenerateAsRequired] double contextTime;
|
2023-10-25 17:27:19 +02:00
|
|
|
// FIXME: Should be DOMHighResTimeStamp, but DOMHighResTimeStamp doesn't get parsed as a double during codegen
|
2025-01-14 00:08:27 +13:00
|
|
|
[GenerateAsRequired] double performanceTime;
|
2023-05-21 20:36:22 +01:00
|
|
|
};
|