Commit Graph

31 Commits

Author SHA1 Message Date
Ehsan Akhgari
9773a06f1b Bug 865004 - Disconnect the AudioNode from the graph before deleting it; r=bzbarsky 2013-04-24 16:57:07 -04:00
Ehsan Akhgari
3aafed5c8f Backed out changeset 089871cdaf1e (bug 865004) because of crashtest leaks on a CLOSED TREE 2013-04-24 16:29:08 -04:00
Ehsan Akhgari
bae9f2a9a4 Bug 865004 - Disconnect the AudioNode from the graph before deleting it; r=bzbarsky 2013-04-24 15:30:19 -04:00
Ehsan Akhgari
4393d3e222 Bug 864351 - Hold on to a SelfReference for ScriptProcessorNodes to make sure that they won't go away prematurely if they're used as source nodes; r=padenot 2013-04-22 21:23:54 -04:00
Ehsan Akhgari
5ddf6abea4 Bug 834513 follow-up: Mode AudioNode::DestroyMediaStream into the cpp file, and inline UnbindFromEngine 2013-04-22 22:45:37 -04:00
Ehsan Akhgari
7fffefb66d Bug 864086 - Simplify AudioNode::DestroyMediaStream callers; r=padenot 2013-04-22 08:14:10 -04:00
Ryan VanderMeulen
462cd28766 Backed out changesets 3b8fdfefcf5e and ab61f99fb584 (bug 864083) for bustage on a CLOSED TREE. 2013-04-22 08:58:32 -04:00
Ehsan Akhgari
ab040a1f23 Bug 864086 - Simplify AudioNode::DestroyMediaStream callers; r=padenot 2013-04-22 08:14:10 -04:00
Ehsan Akhgari
82a95502c9 Bug 834513 - Part 2: Add an AudioNode weak pointer to the AudioNodeEngine class; r=roc 2013-04-20 12:16:28 -04:00
Ehsan Akhgari
24a63e7a4e Bug 853298 - Part 2: Make AudioNode an EventTarget; r=smaug 2013-04-12 11:28:33 -04:00
Ehsan Akhgari
21fef81a58 Bug 853298 - Part 1: Switch the ownership model of audio nodes to be based the cycle collector with wrapper caches; r=roc
Here is what this patch does:
 * Got rid of the JSBindingFinalized stuff
 * Made all nodes wrappercached
 * Started to hold a self reference while the AudioBufferSourceNode is playing back
 * Converted the input references to weak references
 * Got rid of all of the SetProduceOwnOutput and UpdateOutputEnded logic

The nodes are now collected by the cycle collector which calls into
DisconnectFromGraph which drops the references to other nodes and destroys the
media stream.  Note that most of the cycles that are now inherent in the
ownership model are between nodes and their AudioParams (that is, the cycles
not created by content.)
2013-04-14 21:52:55 -04:00
Paul Adenot
1804f67723 Bug 853551 - Implement the doppler part of AudioPannerNode. r=ehsan 2013-04-11 14:47:57 +02:00
Ehsan Akhgari
abde8b7e8e Bug 856328 - Part 1: Refactor sending an AudioParamTimeline to the stream into an AudioNode helper; r=padenot
--HG--
extra : rebase_source : 8e2331ded7c35d1a6e9057c5be5ad31a959beed9
2013-03-29 18:46:03 -07:00
Ehsan Akhgari
91056e3470 Bug 849916 - Part 2: Add helper functions for sending different argument types to the AudioNodeStream; r=padenot 2013-03-12 11:28:14 -04:00
Ryan VanderMeulen
b3839debd3 Backed out changesets 4ee69256f8f2, 2becc603eeb8, and afad1c17015e (bug 849916) for bustage on a CLOSED TREE. 2013-03-12 16:16:30 -04:00
Ehsan Akhgari
c1c561347f Bug 849916 - Part 2: Add helper functions for sending different argument types to the AudioNodeStream; r=padenot 2013-03-12 11:28:14 -04:00
Ehsan Akhgari
618903f6dd Bug 836076 - Part 3: Make AudioParams call back into their owning node when they're modified; r=roc
We need this in order to update the MediaStreamGraph thread when an
AudioParam changes.  This enables each AudioParam to be registered with
a callback from its owner node, so that the owner node can have custom
processing code for each AudioParam's mutation.
2013-01-28 18:59:29 -05:00
Ehsan Akhgari
d612b5d8ca Bug 804387. Part 10: Add a mechanism for ensuring that we don't attempt to allocate an input port if the input node is not hooked up to MSG yet. r=roc
--HG--
extra : rebase_source : dc3a202cbb94c266f6df4b0c1b5247522fc76658
2013-01-25 16:39:51 -05:00
Robert O'Callahan
c0ece4b4f5 Bug 804387. Part 9: Update WebAudio implementation to integrate with AudioNodeStream. r=ehsan
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
2013-02-05 12:07:25 +13:00
Ehsan Akhgari
81075674d3 Backed out 14 changesets (bug 804387) because of Android M2 crashes
Backed out changeset 80e8530f06ea (bug 804387)
Backed out changeset 3de2271ad47f (bug 804387)
Backed out changeset 00f86870931c (bug 804837)
Backed out changeset 0e3f20927c50 (bug 804387)
Backed out changeset e6ef90038007 (bug 804387)
Backed out changeset 0ad6f67a95f9 (bug 804387)
Backed out changeset d0772aba503c (bug 804387)
Backed out changeset 5477b87ff03e (bug 804387)
Backed out changeset 1d7ec5adc49f (bug 804387)
Backed out changeset 11f4d740cd6c (bug 804387)
Backed out changeset e6254d8997ab (bug 804387)
Backed out changeset 372322f3264d (bug 804387)
Backed out changeset 53d5ed687612 (bug 804387)
Backed out changeset 000b88ac40a7 (bug 804387)
2013-02-05 01:29:28 -05:00
Ehsan Akhgari
3f79e8f932 Backed out 3 changesets (bug 836076) becasue bug 804387 is getting backed out
Backed out changeset d567b1bb34ad (bug 836076)
Backed out changeset 51f7c9e31f9a (bug 836076)
Backed out changeset 901c735274bc (bug 836076)

--HG--
rename : content/media/AudioEventTimeline.h => content/media/webaudio/AudioEventTimeline.h
2013-02-05 01:28:38 -05:00
Ehsan Akhgari
e37353007a Bug 836076 - Part 3: Make AudioParams call back into their owning node when they're modified; r=roc
We need this in order to update the MediaStreamGraph thread when an
AudioParam changes.  This enables each AudioParam to be registered with
a callback from its owner node, so that the owner node can have custom
processing code for each AudioParam's mutation.
2013-01-28 18:59:29 -05:00
Ehsan Akhgari
4eea296830 Bug 804387. Part 10: Add a mechanism for ensuring that we don't attempt to allocate an input port if the input node is not hooked up to MSG yet. r=roc 2013-01-25 16:39:51 -05:00
Robert O'Callahan
dd57723337 Bug 804837. Part 9: Update WebAudio implementation to integrate with AudioNodeStream. r=ehsan
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.
2013-02-05 12:07:25 +13:00
Robert O'Callahan
459522e248 Bug 804837. Part 0: Rework the connection and input/output port logic for Web Audio nodes; r=ehsan
Here's what this patch does:
-- Makes AudioNodes mostly not use nsWrapperCache. AudioDestinationNode
still does.
-- Rename MaxNumberOfInputs/Outputs to NumberOfInputs/Outputs, and have them
default to 1 in AudioNode.
-- Allow any number of nodes to be connected to any given input/output port.
2013-01-23 19:50:18 -05:00
Andrew McCreight
6998222f29 Bug 815454 - Clean up Traverse/Unlink of web audio. r=smaug 2012-11-27 15:08:22 -08:00
Ehsan Akhgari
a55072e646 Use #include guards in the web audio code, no bug 2012-10-30 17:39:38 -04:00
Ehsan Akhgari
a7ce3ce7ca Bug 792649 - Make the simplest of Web Audio tests work without audio playback for now; r=bzbarsky 2012-09-24 23:31:58 -04:00
Ehsan Akhgari
c461ff018e Bug 792646 - Implement the skeleton of Web Audio source and destination nodes; r=bzbarsky
This is the bare minimum that one needs in order to get those interfaces
implemented.  The work to make the simplest of Web Audio test cases
actually pass will be done in bug 792649.
2012-09-21 11:33:03 -04:00
Ehsan Akhgari
e98eaf856f Backout changeset 7d0776416955 (bug 792646) because of leaks 2012-09-20 19:47:07 -04:00
Ehsan Akhgari
58f854c7d4 Bug 792646 - Implement the skeleton of Web Audio source and destination nodes; r=bzbarsky
This is the bare minimum that one needs in order to get those interfaces
implemented.  The work to make the simplest of Web Audio test cases
actually pass will be done in bug 792649.
2012-09-20 18:05:38 -04:00