Karl Tomlinson
3adc2d90c5
b=986901 don't assume that DelayNode maxDelayTime is greater than 1 block r=padenot
...
Also apply DelayNode maxDelayTime before rounding to ticks.
--HG--
extra : transplant_source : %F1i%02%2A%ED%98%95%C9u%60%0B%1A%81A%C2%8E%FB%F3%FA%D5
2014-03-31 18:32:34 +13:00
Karl Tomlinson
2bb6ffd9ed
b=932400 rename ProduceAudioBlock to ProcessBlock r=padenot
...
--HG--
rename : content/media/webaudio/DelayProcessor.cpp => content/media/webaudio/DelayBuffer.cpp
extra : rebase_source : ebdc7404c8d27e3a24098f21a7752df529bb44c9
2014-03-05 10:09:49 +13:00
Karl Tomlinson
79c3c64319
b=932400 allow DelayNodeEngine to produce output before input r=padenot
...
--HG--
extra : rebase_source : 73991e2d1438862e05bb5a299a6f90935c4a51b2
2014-03-05 10:06:57 +13:00
Karl Tomlinson
0935b39ced
b=857610 handle DelayNode channel count changes and separate buffer read and write r=padenot
...
The basic idea is to write out the signal that came in with the same number of
channels as it had when it came in. Things get a bit more complicated when
one output block may be derived from more than one input block, each having
different numbers of channels. When this happens, the input blocks with fewer
channels are upmixed, so as not to lose (or distort) any signal in the block
with more channels.
HRTFPanner no longer uses exponential decay (with time constant 20ms) for
delay changes, but a smoother linear transition during cross-fade time (~45ms).
--HG--
rename : content/media/webaudio/DelayProcessor.cpp => content/media/webaudio/DelayBuffer.cpp
rename : content/media/webaudio/DelayProcessor.h => content/media/webaudio/DelayBuffer.h
extra : rebase_source : 18453d631779cd7d0672b5325e110b107ab4237d
2014-03-05 10:06:57 +13:00
Karl Tomlinson
0e1f8fec08
b=857610 optimize delay clamping a little, by clamping in only one place r=padenot
...
--HG--
rename : content/media/webaudio/DelayProcessor.cpp => content/media/webaudio/DelayBuffer.cpp
rename : content/media/webaudio/DelayProcessor.h => content/media/webaudio/DelayBuffer.h
extra : rebase_source : 48d60cb003205a550504bcd0042ef73fc8727f97
2014-03-03 12:49:46 +13:00
Karl Tomlinson
5b63b395f3
b=857610 rename DelayProcessor to DelayBuffer r=padenot
...
--HG--
rename : content/media/webaudio/DelayProcessor.cpp => content/media/webaudio/DelayBuffer.cpp
rename : content/media/webaudio/DelayProcessor.h => content/media/webaudio/DelayBuffer.h
extra : rebase_source : be71a5abbcf067f513fbaf2967745e80383d285f
2014-03-03 12:49:45 +13:00
Karl Tomlinson
e5e86b04cc
b=923301 use MediaStreamGraph to dispatch the other PlayingRefChangeHandlers too r=trivial
...
--HG--
extra : transplant_source : %A6%9F%81%40%AF%EE_EU%03%BCvZ%0B%1CE%7F%8C%80F
2013-10-25 14:05:41 +13:00
Karl Tomlinson
10fe0bff6e
b=923301 use MediaStreamGraph to dispatch PlayingRefChangeHandlers r=roc
...
This reduces the number of events dispatched to the main thread
and ensures these run in order with other pending updates.
--HG--
extra : transplant_source : %5E%235%DEz%EB%7D%C6%C7%F8%AF%A3%84%1F%F9%5B%87D%B3%13
2013-10-25 12:12:33 +13:00
Karl Tomlinson
2755fe230b
b=923301 skip delay processing when nothing is buffered and input is null r=roc
...
--HG--
extra : transplant_source : %60%1B%88Z%BD%9AoAI%92%FA%B1%E4%A1%EFg%2A%FE%05%8F
2013-10-25 12:12:13 +13:00
Karl Tomlinson
2852848da2
b=923301 send only one release message when delay buffer is drained r=roc
...
--HG--
extra : transplant_source : %C7%8Ag%B2%C52X%A2%96%D1%8E%BB%15%E4%15%CC%1D%1Er%B8
2013-10-25 12:12:13 +13:00
Karl Tomlinson
1f3810b405
b=923301 remove now-unnecessary node-type templating of PlayingRefChangeHandler r=roc
...
--HG--
extra : transplant_source : %0A%BA%C9%1D%1AX%0Dxg9%3BL%1F%98%BE%98%87%20o%3A
2013-10-25 12:12:12 +13:00
Karl Tomlinson
2f6f210f83
b=923301 remove now-unnecessary AcceptPlayingRefRelease r=roc
...
--HG--
extra : transplant_source : %7B%21%18%B17%16%7B%9E%9F%B3%23%17%FD%3DZ%FC%5C%0F%D3%8C
2013-10-25 12:11:24 +13:00
Karl Tomlinson
343e110e70
b=923301 keep a tail-time reference on DelayNode until *after* the last non-silent block has been produced r=roc
...
This gives a downstream node a chance to take a tail-time reference when it
receives the last non-silent block from the DelayNode.
--HG--
extra : transplant_source : %B5%7C%E1%F6%00%D4W%D6%A22%0C%F2%0A%2C%60%F2%18%C6%A5%B8
2013-10-25 12:11:24 +13:00
Karl Tomlinson
2900c28a02
b=910174 add DelayNode's tail-time reference as soon as the engine receives sound r=ehsan
...
This removes the dependence on AllInputsFinished() which didn't return true
for many input types.
The DelayProcessor is no longer continuously reset (bug 921457) and the
reference is now correctly added again when all inputs are finished and then
new inputs are connected.
--HG--
extra : rebase_source : b85c62305a6fcfce57bd40a11edaeaaf2a63c188
2013-10-01 09:50:04 +13:00
Karl Tomlinson
ba487756fb
b=921675 use maximum instead of current delay for tail time because delay can increase faster than time passes r=ehsan
...
--HG--
extra : rebase_source : b74864829e5fa0cdfbd555d93d2c71dd656f2258
2013-10-01 09:50:03 +13:00
Paul Adenot
14628109ab
Bug 881959 - Clamp the DelayNode.delayTime to 128/AudioContext.sampleRate when in a cycle. r=ehsan
...
--HG--
extra : rebase_source : 7cf8945371bb6ff169ad61a8ccdda0ece36b5e83
2013-09-02 15:15:24 +02:00
Paul Adenot
7c95321d67
Bug 881959 - Mute WebAudio nodes that are part of a cycle that contains no DelayNode, and make cycles work. r=ehsan
...
--HG--
extra : rebase_source : d4bc378128cf15f8d8395b45b4443ca6b06c5bd2
2013-08-26 19:19:36 +02:00
Ed Morley
6a8bde5bc5
Backed out changeset fb89f2090779 (bug 881959)
2013-09-17 17:14:55 +01:00
Ed Morley
14cbc2101a
Backed out changeset 2aa38a1a2b06 (bug 881959)
2013-09-17 17:14:42 +01:00
Paul Adenot
65b02e466e
Bug 881959 - Clamp the DelayNode.delayTime to 128/AudioContext.sampleRate when in a cycle. r=ehsan
...
--HG--
extra : rebase_source : 5282e468fbe411a455f65bc0d22b16163db4bd7a
2013-09-02 15:15:24 +02:00
Paul Adenot
f4a229fbf9
Bug 881959 - Mute WebAudio nodes that are part of a cycle that contains no DelayNode, and make cycles work. r=ehsan
...
--HG--
extra : rebase_source : a92e90a2fb08f784d3a1b7d0701a5dd20595c4ef
2013-08-26 19:19:36 +02:00
Ehsan Akhgari
f678926c6d
Bug 905409 - Minimize the Web Audio #includes; r=roc
2013-08-15 15:44:14 -04:00
Karl Tomlinson
e37987a35d
b=815643 Refactor DelayNodeEngine delay processing into a shareable class r=ehsan
...
--HG--
extra : rebase_source : e25ff3e490c2cbce5ed7cdf9419ccc2850ea16e5
2013-08-09 10:07:49 +12:00
Robert O'Callahan
56ffa35ac0
Bug 890248. Avoid situations where adding a new input to an AudioNode can race with a message telling the AudioNode to release its mPlayingRef. r=ehsan
...
--HG--
extra : rebase_source : 913683cc16a717bf73f9976292af965aba6b7758
2013-07-05 13:49:53 +12:00
Ehsan Akhgari
a6a3a001eb
Bug 890072 - Part 1: Factor out PlayingRefChanged from DelayNodeEngine; r=roc
2013-07-03 21:37:39 -04:00
Ehsan Akhgari
9810921acc
Backed out 2 changesets (bug 890072) for possible leaks
...
Backed out changeset 5e815a5ca50d (bug 890072)
Backed out changeset 7151ab8ff70c (bug 890072)
2013-07-03 22:17:25 -04:00
Ehsan Akhgari
83be9599d6
Bug 890072 - Part 1: Factor out PlayingRefChanged from DelayNodeEngine; r=roc
2013-07-03 21:37:39 -04:00
Ehsan Akhgari
2df7ddb555
Backed out 2 changesets (bug 890072) because gcc sucks
...
Backed out changeset ff011e5b3655 (bug 890072)
Backed out changeset 0ed650741dc5 (bug 890072)
2013-07-03 20:36:06 -04:00
Ehsan Akhgari
45cec38f9b
Bug 890072 - Part 1: Factor out PlayingRefChanged from DelayNodeEngine; r=roc
2013-07-03 20:20:06 -04:00
Masatoshi Kimura
af2068ecf9
Bug 859022 - Remove the MSVC exemption for FAIL_ON_WARNINGS in content/media. r=roc
2013-06-27 20:30:41 +09:00
Ehsan Akhgari
dc0358066e
Bug 878407 - Allocate a large enough delay buffer when the delay time fraction value is less than 0.5; r=roc
2013-06-02 09:25:46 -04:00
Ehsan Akhgari
1e0789da84
Bug 878014 - Use double precision when sampling the delay AudioParam; r=roc
2013-06-01 03:02:46 -04:00
Ehsan Akhgari
d822bd3533
Bug 877523 - Correctly handle small maximum delay values for DelayNode; r=roc
2013-05-30 20:52:26 -04:00
Ehsan Akhgari
57a5f849b0
Bug 873553 - Part 7: Port DelayNode to use the stream's sampling rate; r=roc
...
--HG--
extra : rebase_source : db35f08edab8a54c6c60a0ead2d7afed59d2c360
2013-05-24 13:10:44 -04:00
Ehsan Akhgari
6c146d9103
Bug 873553 - Part 4: Pass the sampling rate to the engine in SetTimelineParameter; r=roc
...
--HG--
extra : rebase_source : aa574757e9791eafd8c6825328fc4e2f65479f34
2013-05-24 13:10:08 -04:00
Ehsan Akhgari
497b7175f9
Bug 872635 - Drop the DelayNode's self-reference right on time, to make sure that DelayNodes don't leak with OfflineAudioContexts; r=roc
2013-05-15 20:51:47 -04:00
Ehsan Akhgari
bc394ffb2a
Bug 866434 - Part 3: Mix in the value generated by AudioNode inputs to AudioParams when getting their values during audio processing; r=roc
2013-05-01 23:12:59 -04:00
Ehsan Akhgari
b040e0542f
Bug 865234 - Part 1: Add DOM bindings for the channel mixing attributes; r=roc
2013-04-27 18:44:50 -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
99da564fc5
Bug 864709 - Part 2: Protect accesses to AudioNodeEngine::mNode using a lock; r=padenot
2013-04-24 12:13:45 -04:00
Ehsan Akhgari
27a0b514b9
Bug 864605 - Take the input chunk's volume into account in the nodes that buffer their input; r=padenot
...
--HG--
extra : rebase_source : 7590e20cbb1ac347f3988aaa5dbc586012747221
2013-04-22 21:59:51 -04:00
Ehsan Akhgari
f25c4a0e7e
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
ff2971de14
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
Ehsan Akhgari
7304bd7736
Bug 859602 - Remove AudioParam.minValue/maxValue; r=bzbarsky
2013-04-08 21:57:54 -04:00
Ehsan Akhgari
c7fbc3c48c
Bug 853721 - Part 2: Hook up DelayNode to the media streams graph and implement delaying of incoming audio; r=roc
2013-03-25 08:34:59 -04:00
Ehsan Akhgari
f39e83f1de
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
748ef8700c
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
ded3e498cd
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
Robert O'Callahan
fc44cd635c
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
890cc3b945
Bug 815454 - Clean up Traverse/Unlink of web audio. r=smaug
2012-11-27 15:08:22 -08:00