Struct script::dom::baseaudiocontext::BaseAudioContext
source · #[repr(C)]pub struct BaseAudioContext {
eventtarget: EventTarget,
audio_context_impl: Arc<Mutex<AudioContext>>,
destination: MutNullableDom<AudioDestinationNode>,
listener: MutNullableDom<AudioListener>,
in_flight_resume_promises_queue: DomRefCell<VecDeque<(Box<[Rc<Promise>]>, Result<(), Error>)>>,
pending_resume_promises: DomRefCell<Vec<Rc<Promise>>>,
decode_resolvers: DomRefCell<HashMap<String, DecodeResolver>>,
sample_rate: f32,
state: Cell<AudioContextState>,
channel_count: u32,
}
Fields§
§eventtarget: EventTarget
§audio_context_impl: Arc<Mutex<AudioContext>>
§destination: MutNullableDom<AudioDestinationNode>
https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-destination
listener: MutNullableDom<AudioListener>
§in_flight_resume_promises_queue: DomRefCell<VecDeque<(Box<[Rc<Promise>]>, Result<(), Error>)>>
Resume promises which are soon to be fulfilled by a queued task.
pending_resume_promises: DomRefCell<Vec<Rc<Promise>>>
https://webaudio.github.io/web-audio-api/#pendingresumepromises
decode_resolvers: DomRefCell<HashMap<String, DecodeResolver>>
§sample_rate: f32
https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-samplerate
state: Cell<AudioContextState>
https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-state Although servo-media already keeps track of the control thread state, we keep a state flag here as well. This is so that we can synchronously throw when trying to do things on the context when the context has just been “closed()”.
channel_count: u32
Implementations§
source§impl BaseAudioContext
impl BaseAudioContext
pub fn new_inherited(
options: BaseAudioContextOptions,
pipeline_id: PipelineId
) -> BaseAudioContext
sourcepub fn is_offline(&self) -> bool
pub fn is_offline(&self) -> bool
Tells whether this is an OfflineAudioContext or not.
pub fn audio_context_impl(&self) -> Arc<Mutex<AudioContext>>
pub fn destination_node(&self) -> NodeId
pub fn listener(&self) -> NodeId
pub fn is_allowed_to_start(&self) -> bool
fn push_pending_resume_promise(&self, promise: &Rc<Promise>)
sourcefn take_pending_resume_promises(&self, result: Result<(), Error>)
fn take_pending_resume_promises(&self, result: Result<(), Error>)
Takes the pending resume promises.
The result with which these promises will be fulfilled is passed here
and this method returns nothing because we actually just move the
current list of pending resume promises to the
in_flight_resume_promises_queue
field.
Each call to this method must be followed by a call to
fulfill_in_flight_resume_promises
, to actually fulfill the promises
which were taken and moved to the in-flight queue.
sourcefn fulfill_in_flight_resume_promises<F>(&self, f: F)where
F: FnOnce(),
fn fulfill_in_flight_resume_promises<F>(&self, f: F)where
F: FnOnce(),
Fulfills the next in-flight resume promises queue after running a closure.
See the comment on take_pending_resume_promises
for why this method
does not take a list of promises to fulfill. Callers cannot just pop
the front list off of in_flight_resume_promises_queue
and later fulfill
the promises because that would mean putting
#[allow(unrooted_must_root)]
on even more functions, potentially
hiding actual safety bugs.
sourcepub fn control_thread_state(&self) -> ProcessingState
pub fn control_thread_state(&self) -> ProcessingState
Control thread processing state
sourcepub fn set_state_attribute(&self, state: AudioContextState)
pub fn set_state_attribute(&self, state: AudioContextState)
Set audio context state
pub fn resume(&self)
source§impl BaseAudioContext
impl BaseAudioContext
fn __assert_parent_type(&self)
Trait Implementations§
source§impl BaseAudioContextMethods for BaseAudioContext
impl BaseAudioContextMethods for BaseAudioContext
source§fn SampleRate(&self) -> Finite<f32>
fn SampleRate(&self) -> Finite<f32>
https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-samplerate
source§fn CurrentTime(&self) -> Finite<f64>
fn CurrentTime(&self) -> Finite<f64>
https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-currenttime
source§fn State(&self) -> AudioContextState
fn State(&self) -> AudioContextState
https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-state
source§fn Resume(&self, comp: InRealm<'_>) -> Rc<Promise>
fn Resume(&self, comp: InRealm<'_>) -> Rc<Promise>
https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-resume
source§fn Destination(&self) -> Root<Dom<AudioDestinationNode>>
fn Destination(&self) -> Root<Dom<AudioDestinationNode>>
https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-destination
source§fn Listener(&self) -> Root<Dom<AudioListener>>
fn Listener(&self) -> Root<Dom<AudioListener>>
https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-listener
source§fn CreateOscillator(&self) -> Result<Root<Dom<OscillatorNode>>, Error>
fn CreateOscillator(&self) -> Result<Root<Dom<OscillatorNode>>, Error>
https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createoscillator
source§fn CreateGain(&self) -> Result<Root<Dom<GainNode>>, Error>
fn CreateGain(&self) -> Result<Root<Dom<GainNode>>, Error>
https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-creategain
source§fn CreatePanner(&self) -> Result<Root<Dom<PannerNode>>, Error>
fn CreatePanner(&self) -> Result<Root<Dom<PannerNode>>, Error>
https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createpanner
source§fn CreateAnalyser(&self) -> Result<Root<Dom<AnalyserNode>>, Error>
fn CreateAnalyser(&self) -> Result<Root<Dom<AnalyserNode>>, Error>
https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createanalyser
source§fn CreateBiquadFilter(&self) -> Result<Root<Dom<BiquadFilterNode>>, Error>
fn CreateBiquadFilter(&self) -> Result<Root<Dom<BiquadFilterNode>>, Error>
https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createbiquadfilter
source§fn CreateStereoPanner(&self) -> Result<Root<Dom<StereoPannerNode>>, Error>
fn CreateStereoPanner(&self) -> Result<Root<Dom<StereoPannerNode>>, Error>
https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createstereopanner
source§fn CreateConstantSource(&self) -> Result<Root<Dom<ConstantSourceNode>>, Error>
fn CreateConstantSource(&self) -> Result<Root<Dom<ConstantSourceNode>>, Error>
https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createconstantsource
source§fn CreateChannelMerger(
&self,
count: u32
) -> Result<Root<Dom<ChannelMergerNode>>, Error>
fn CreateChannelMerger(
&self,
count: u32
) -> Result<Root<Dom<ChannelMergerNode>>, Error>
https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createchannelmerger
source§fn CreateChannelSplitter(
&self,
count: u32
) -> Result<Root<Dom<ChannelSplitterNode>>, Error>
fn CreateChannelSplitter(
&self,
count: u32
) -> Result<Root<Dom<ChannelSplitterNode>>, Error>
https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createchannelsplitter
source§fn CreateBuffer(
&self,
number_of_channels: u32,
length: u32,
sample_rate: Finite<f32>
) -> Result<Root<Dom<AudioBuffer>>, Error>
fn CreateBuffer(
&self,
number_of_channels: u32,
length: u32,
sample_rate: Finite<f32>
) -> Result<Root<Dom<AudioBuffer>>, Error>
https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createbuffer
fn GetOnstatechange(&self) -> Option<Rc<EventHandlerNonNull>>
fn SetOnstatechange(&self, listener: Option<Rc<EventHandlerNonNull>>)
fn CreateBufferSource(&self) -> Result<Root<Dom<AudioBufferSourceNode>>, Error>
fn DecodeAudioData(
&self,
audio_data: CustomAutoRooterGuard<'_, ArrayBuffer>,
decode_success_callback: Option<Rc<DecodeSuccessCallback>>,
decode_error_callback: Option<Rc<DecodeErrorCallback>>,
comp: InRealm<'_>
) -> Rc<Promise>
source§impl Castable for BaseAudioContext
impl Castable for BaseAudioContext
source§impl DomObject for BaseAudioContext
impl DomObject for BaseAudioContext
source§impl DomObjectWrap for BaseAudioContext
impl DomObjectWrap for BaseAudioContext
source§const WRAP: unsafe fn(_: SafeJSContext, _: &GlobalScope, _: Box<Self>) -> Root<Dom<Self>> = {dom::bindings::codegen::Bindings::BaseAudioContextBinding::BaseAudioContextBinding::Wrap as for<'a> unsafe fn(script_runtime::JSContext, &'a dom::globalscope::GlobalScope, std::boxed::Box<dom::baseaudiocontext::BaseAudioContext>) -> dom::bindings::root::Root<dom::bindings::root::Dom<dom::baseaudiocontext::BaseAudioContext>>}
const WRAP: unsafe fn(_: SafeJSContext, _: &GlobalScope, _: Box<Self>) -> Root<Dom<Self>> = {dom::bindings::codegen::Bindings::BaseAudioContextBinding::BaseAudioContextBinding::Wrap as for<'a> unsafe fn(script_runtime::JSContext, &'a dom::globalscope::GlobalScope, std::boxed::Box<dom::baseaudiocontext::BaseAudioContext>) -> dom::bindings::root::Root<dom::bindings::root::Dom<dom::baseaudiocontext::BaseAudioContext>>}
source§impl HasParent for BaseAudioContext
impl HasParent for BaseAudioContext
source§fn as_parent(&self) -> &EventTarget
fn as_parent(&self) -> &EventTarget
This is used in a type assertion to ensure that the source and webidls agree as to what the parent type is
type Parent = EventTarget
source§impl IDLInterface for BaseAudioContext
impl IDLInterface for BaseAudioContext
source§impl JSTraceable for BaseAudioContext
impl JSTraceable for BaseAudioContext
source§impl MallocSizeOf for BaseAudioContext
impl MallocSizeOf for BaseAudioContext
source§fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize
fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize
source§impl MutDomObject for BaseAudioContext
impl MutDomObject for BaseAudioContext
source§unsafe fn init_reflector(&self, obj: *mut JSObject)
unsafe fn init_reflector(&self, obj: *mut JSObject)
source§impl PartialEq<BaseAudioContext> for BaseAudioContext
impl PartialEq<BaseAudioContext> for BaseAudioContext
source§fn eq(&self, other: &BaseAudioContext) -> bool
fn eq(&self, other: &BaseAudioContext) -> bool
self
and other
values to be equal, and is used
by ==
.