mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
45c5e4a1ad
This is a mega-patch that was too hard to disentangle. Here's what it does: -- Create infrastructure around AudioNode::UpdateOutputEnded to detect when a node can no longer produce any output. When that becomes true, disconnect it from the AudioNode graph. -- Have AudioNode implement JSBindingFinalized to use as input in UpdateOutputEnded. -- Give every AudioNode a MediaStream, and give every connection a MediaInputPort. -- Actually play the audio that reaches the AudioContext's destination node. -- Force AudioContext to use the audio sample rate defined by MediaStreamGraph. -- Fix AudioBufferSourceNode's start and stop methods to possibly throw and take default 'when' parameters. -- Create an AudioNodeStream for AudioBufferSourceNode and give it a AudioBufferSourceNodeEngine that does what's needed. Set parameters for this engine in the start() and stop() methods. -- Create AudioBuffer::GetThreadSharedChannelsForRate, which is responsible for stealing the contents of any JS array buffers, and bundling them up into a thread-shared read-only buffer object which can be used as part of an AudioChunk. This method will also be responsible for resampling and caching as necessary.
36 lines
1.2 KiB
Plaintext
36 lines
1.2 KiB
Plaintext
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
* You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*
|
|
* The origin of this IDL file is
|
|
* https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html
|
|
*
|
|
* Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C
|
|
* liability, trademark and document use rules apply.
|
|
*/
|
|
|
|
[PrefControlled]
|
|
interface AudioBufferSourceNode : AudioSourceNode {
|
|
|
|
//const unsigned short UNSCHEDULED_STATE = 0;
|
|
//const unsigned short SCHEDULED_STATE = 1;
|
|
//const unsigned short PLAYING_STATE = 2;
|
|
//const unsigned short FINISHED_STATE = 3;
|
|
|
|
//readonly attribute unsigned short playbackState;
|
|
|
|
// Playback this in-memory audio asset
|
|
// Many sources can share the same buffer
|
|
attribute AudioBuffer? buffer;
|
|
|
|
//attribute AudioParam playbackRate;
|
|
//attribute boolean loop;
|
|
|
|
[Throws]
|
|
void start(optional double when = 0, optional double grainOffset = 0,
|
|
optional double grainDuration);
|
|
[Throws]
|
|
void stop(optional double when = 0);
|
|
};
|