Commit Graph

24 Commits

Author SHA1 Message Date
Jon Coppeard
586c7b4514 Bug 877762 - GC: Post-barrier cycle collector participants - 7 Convert most JSObect to use Heap<T> (ex. XBL) r=bz 2013-06-18 11:00:38 +01:00
Ehsan Akhgari
91cf92d40d Bug 868485 - Part 1: Implement the mixToMono behavior for createBuffer; r=roc 2013-05-05 11:15:58 -04:00
Ehsan Akhgari
bf10328ba6 Bug 868776 - Fix rooting hazards in Web Audio code; r=till 2013-05-04 17:40:20 -04:00
Boris Zbarsky
9c1973b5d2 Bug 864727 part 5. Make all the WrapObject methods take a handle for the scope object. r=ms2ger 2013-04-25 12:29:54 -04:00
Ehsan Akhgari
5594609a69 Bug 864083 - Cleanup AudioBuffer::GetThreadSharedChannelsForRate; r=padenot 2013-04-22 08:12:45 -04:00
Ryan VanderMeulen
c3f7907f13 Backed out changesets 3b8fdfefcf5e and ab61f99fb584 (bug 864083) for bustage on a CLOSED TREE. 2013-04-22 08:58:32 -04:00
Ehsan Akhgari
7440e00896 Bug 864083 - Cleanup AudioBuffer::GetThreadSharedChannelsForRate; r=padenot 2013-04-22 08:12:45 -04:00
Ehsan Akhgari
e6ef206ecb Bug 834513 - Part 3: Implement ScriptProcessorNode; r=roc 2013-04-13 21:37:04 -04:00
Paul Adenot
65213ab746 Bug 852366 - Don't resample on the main thread. r=ehsan,roc 2013-03-18 20:54:32 -04:00
Ehsan Akhgari
ee411aafe9 Backed out changeset 3ae03ecf8b5e (bug 852366) because of mochitest-1 crashes
Landed on a CLOSED TREE
2013-04-09 11:29:15 -04:00
Paul Adenot
13434b9bf9 Bug 852366 - Don't resample on the main thread. r=ehsan,roc 2013-03-18 20:54:32 -04:00
Ehsan Akhgari
f2a48dfa7e Bug 852838 - Make sure that trying to allocate an AudioBuffer with a very large number of channels does not cause an OOM crash; r=roc 2013-03-20 21:49:13 -04:00
Masatoshi Kimura
e5e5a90814 Bug 848339 - Remove the vestigial boolean outparam from nsWrapperCache::WrapObject. r=bz 2013-03-12 08:03:47 +09:00
Robert O'Callahan
088271f880 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
631b308649 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
Robert O'Callahan
45c5e4a1ad 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
Ehsan Akhgari
1090ae9f96 Bug 792263 - Implement decodeAudioData; r=bzbarsky,cpearce,padenot 2013-02-01 17:13:23 -05:00
Ehsan Akhgari
19fa75a45d Bug 834869 - AudioBuffer's Unlink method should drop js objects; r=mccr8
--HG--
extra : rebase_source : 3ee8bc593cdffff135a7094eacee7c5d34c70848
2013-01-25 16:21:22 -05:00
Steve Fink
57a2c2471b Bug 828753 - jsid rooting, mostly in jsinfer.*. Also switch JSObject from struct to class. r=terrence 2012-12-31 12:40:21 -08:00
Steve Fink
380ecf9335 Backed out changeset fce4e0f8a553 (bug 828753) for breaking windows warnings-as-errors (stop adding JSObject forward decls, please!) 2013-01-18 13:20:21 -08:00
Steve Fink
01f8a5b4d8 Bug 828753 - jsid rooting, mostly in jsinfer.*. Also switch JSObject from struct to class. r=terrence
--HG--
extra : rebase_source : c8806b27677594925ad0e6b54c47af5cf17e1153
2012-12-31 12:40:21 -08:00
Ehsan Akhgari
d1434706e8 Bug 813269 - Use double to represent time in Web Audio; r=bzbarsky 2012-11-19 15:52:29 -05:00
Ehsan Akhgari
a60888e51d Use #include guards in the web audio code, no bug 2012-10-30 17:39:38 -04:00
Ehsan Akhgari
697bec41a5 Bug 793294 - Implement AudioBuffer; r=bzbarsky,smaug
This is the full implementation of the AudioBuffer object.  There are
two ways to create these objects from an audio context and this patch
implements only one of them.

The construction of the AudioBuffer object is a two step process: the
object should be created with operator new first, and then
InitializeBuffers should be called on it.  InitializeBuffers is
fallible, because it uses the JS API to create the underlying typed
arrays, but that's fine, since the length of the buffers comes from web
content, and we don't want to use infallible allocations for those
anyways.

We hold on to the JS objects from the C++ implementation, and trace
through all of those objects, so that a GC does not kill those object
without us knowing.

The buffer should be possible to manipulate from both C++ and JS, and
the C++ object probably needs to support a set of methods for the C++
callers at some point.
2012-09-25 17:58:50 -04:00