mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
088271f880
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. --HG-- rename : content/media/MediaStreamGraph.cpp => content/media/MediaStreamGraphImpl.h extra : rebase_source : 9fa0ec0efa304acd6513e427103d6339c78efa53
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);
|
|
};
|