Commit Graph

72 Commits

Author SHA1 Message Date
Eric Rahm
0c4d54b70f Bug 967817 - Finish memory reporters for Web Audio. r=roc, njn 2014-04-13 11:08:10 -07:00
Karl Tomlinson
b33bfca306 b=987976 rename ComputeFinalOuputChannelCount ComputedNumberOfChannels to match spec r=padenot
to remove any implication that the function might be for calculating
the number of output channels for an AudioNode.

--HG--
extra : transplant_source : %D9%12%BB%23n%92%EB%F7%1Df%11%3F%04%B4z%606%ADT%3A
2014-04-01 10:26:02 +13:00
Kyle Huey
84360900b0 Bug 967364: Pass already_AddRefed by reference instead of by value. r=bsmedberg 2014-03-15 12:00:17 -07:00
Karl Tomlinson
7f18d462d4 b=932400 rename ProduceOutput to ProcessInput r=roc
--HG--
extra : transplant_source : m0%91%3D%99%EB.%20%28%BD%B4%F4%A5%3F%0C%13%22%BA%FD%06
2014-03-05 10:53:55 +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
59a9465d27 b=913854 pass start time as double parameter and subsample align r=padenot
The subsample alignment of resampled buffers provides seamless playback even
when buffer durations are not an integer number of track ticks.

--HG--
extra : rebase_source : 0fcd52e8a9560de881aa73931cf22a02f984d748
2014-02-27 11:45:04 +13:00
Karl Tomlinson
07b1c1b640 b=972678 round double times to ticks consistently and round to nearest r=padenot
--HG--
extra : transplant_source : Q%B5%155%81%7C%8BQ4%EB%BD%E9h%A7%8E%94%C9%EC%A2q
2014-02-17 09:47:19 +13:00
Karl Tomlinson
9635368701 b=972678 move stream time methods from WebAudioUtils to AudioNodeStream r=padenot
Trying to clear up which stream parameter is which.

--HG--
extra : transplant_source : D%94%23%60M%82%7E%D8%FF%8A%D3%C8%9F%25%D6%7E%EA%19%80%E9
2014-02-17 09:46:56 +13:00
Robert O'Callahan
f281621615 Bug 941873. Blocked AudioNodeStreams should not run processing. r=karl
--HG--
extra : rebase_source : 122b7c48df42f78e9f7d2b8176ff6bc1ca14ad28
2014-01-15 23:07:30 +13:00
Robert O'Callahan
b026956759 Bug 952893. Part 1: Block the AudioDestinationNode when it's the only node in the AudioContext. r=padenot,karlt 2014-01-16 00:08:20 +13:00
Ryan VanderMeulen
a5b81a765d Backed out changesets ac4e6f145b9a, 91c572ac5ee1, f501606dc1d3, and 15fc5d1cb10e (bug 952893) for test failures on a CLOSED TREE. 2014-01-29 14:34:08 -05:00
Robert O'Callahan
5e98538b88 Bug 952893. Part 1: Block the AudioDestinationNode when it's the only node in the AudioContext. r=padenot 2014-01-16 00:08:20 +13:00
Paul Adenot
8ae42d79f9 Bug 952893 - Backout changesets 780cba0f9f59, 887fe3a09c3d and fb04a4252ea3 for bad commit message, DONTBUILD. 2014-01-29 17:36:56 +01:00
Robert O'Callahan
eb9730310f Bug 952389. Part 1: Block the AudioDestinationNode when it's the only node in the AudioContext. r=padenot 2014-01-16 00:08:20 +13:00
Karl Tomlinson
1fb6e2d508 b=964376 don't SetNull() mLastChunks in debug builds r=roc
Some code was depending on this for correct operation, but then failed in
non-debug builds.

Instead, distort only mDuration to check that ProduceAudioBlock sets chunks.

--HG--
extra : transplant_source : %05%F7%F3C%09%2B%1D%13%1D%2B%0CsuA%9Dr%84%17%FC%8B
2014-01-29 12:55:10 +13:00
Robert O'Callahan
c93171360b Bug 943461. Part 18: Ensure AudioBufferSourceNode's engine always produces an audio block when ProduceAudioBlock is called, and add an assertion to catch this kind of error directly. r=karl
--HG--
extra : rebase_source : e6ae51dc34f5567998af3b299acd48dd10e8394e
2013-12-13 01:33:01 +13:00
Robert O'Callahan
bf4755a6bc Bug 943461. Part 13: Keep producing silence in AudioNodeStreams' mLastChunks even after they've finished r=padenot
Without this the last before-finished audio block gets picked up by downstream
ObtainInputBlock calls.

--HG--
extra : rebase_source : d7f804cea59454bdb0aa5931d19bcc123e0d16cb
2013-12-10 13:49:03 +13:00
Robert O'Callahan
731720a05d Bug 943461. Part 5: Don't allow a stream to finish before it has produced output up to mStateComputedTime. r=padenot
--HG--
extra : rebase_source : 9bf003c246b63b1dd64665024533fda74a8e1fa4
2013-12-06 09:23:57 +13:00
Andrea Marchesini
5b731001cd Bug 874508 - Web Audio is connected to AudioChannelService, r=ehsan 2013-10-08 20:20:33 +02:00
Carsten "Tomcat" Book
f5d6799f05 Backed out changeset b607cc162c2c (bug 874508) for causing perma orange b2g-crashtest failures 2013-10-04 16:31:02 +02:00
Andrea Marchesini
b8d1c01e56 Bug 874508 - Web Audio is connected to AudioChannelService, r=ehsan 2013-10-04 06:27:49 -04:00
Phil Ringnalda
8459f2486d Backed out changeset 643354059afb (bug 874508) for b2g build bustage
CLOSED TREE
2013-10-03 20:11:58 -07:00
Andrea Marchesini
5635de1215 Bug 874508 - Web Audio is connected to AudioChannelService, r=ehsan 2013-10-03 18:42:04 -04: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
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
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
143454cc1a Bug 912702 - Minimize the #includes in content/media; r=roc 2013-09-05 16:25:17 -04:00
Ehsan Akhgari
92ad73ef93 Backed out changeset 2f15518f566e (bug 912702) because of B2G JB Emulator build bustage
--HG--
extra : rebase_source : 6c01ad3bc2f91b0e7e3edab84aedbfe064310a8b
2013-09-05 13:29:38 -04:00
Ehsan Akhgari
be1e68caf3 Bug 912702 - Minimize the #includes in content/media; r=roc 2013-09-04 17:58:14 -04:00
Ehsan Akhgari
e69e625575 Bug 905444 - Do not attempt that we can handle empty channels when mixing; r=roc 2013-08-16 10:42:50 -04:00
Robert O'Callahan
107806bd3b Bug 856361. Part 3: Refactor AudioNodeStream to create ComputeFinalOuputChannelCount, AccumulateInputChunk and AdvanceOutputSegment, and make AudioNodeStreams be treated as always consumed by the MediaStreamGraph. r=ehsan
--HG--
extra : rebase_source : ef176c629f16a00042d2a281bfffbe75c31d6002
2013-07-24 22:11:35 +12:00
Josh Matthews
9ea183ce8d Bug 865257 - Implement MediaStreamAudioDestinationNode. r=ehsan,roc 2013-05-21 15:17:47 -04:00
Robert O'Callahan
cc51ef48ef Bug 868405. Support 'enabled' attribute on MediaStreamTrack. r=jesup
--HG--
extra : rebase_source : ec29ae2e45979baaf1b6a085549755ba86cadd40
2013-05-30 16:44:43 +12:00
Ehsan Akhgari
28c082afaf Bug 876215 - Correctly deal with nodes that require 0 input channels by feeding them a null AudioChunk; r=roc
The assertion here is really not correct, since as this testcase shows,
it's now easy for web content to control the value of outputChannelCount.

--HG--
extra : rebase_source : a6282517673b7c9e73c2114ee0b944fc1022e4ae
2013-05-29 07:40:14 -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
22b9d20d59 Bug 873553 - Part 2: Teach each AudioNodeStream about its sampling rate, and store the value inside AudioContext; r=roc
--HG--
extra : rebase_source : beed6a6f965acdff307b7d4861d5f336c224d498
2013-05-24 13:09:29 -04:00
Ehsan Akhgari
03aface63f Bug 874952 - Always create enough last chunks for an engine, even if we don't end up calling into its ProduceAudioBlock function; r=roc 2013-05-23 22:36:20 -04:00
Ehsan Akhgari
1bfc965bdc Bug 874869 - Disallow setting AudioNode.channelCount to zero; r=roc
--HG--
extra : rebase_source : 8015dda70e2191820c9482b529a22bdaa67dd79e
2013-05-23 07:46:20 -04:00
Ryan VanderMeulen
4a2c1820e6 Backed out changesets e52c6f7200b3 and 2718954757e1 (bug 874869) for intermittent Windows leaks. 2013-05-22 15:22:26 -04:00
Ehsan Akhgari
34a9786e5f Bug 874869 - Disallow setting AudioNode.channelCount to zero; r=roc 2013-05-22 11:30:31 -04:00
Ehsan Akhgari
bee3aa1c74 Bug 865251 - Implement WaveShaperNode; r=roc 2013-05-14 00:12:30 -04:00
Ehsan Akhgari
7d46bec13c Bug 869684 - Don't crash if the last output chunk for a given stream doesn't contain any channels; r=roc
X-Git-Commit-ID: 4c3b39a6049471e6b731369653eafb83efebcf1b
X-Mailer: git-send-email
2013-05-07 23:31:55 -04:00
Ehsan Akhgari
14175761c2 Bug 869224 - Use the same algorithm to compute the buffer start/end time and to convert AudioParam time values to ticks; r=roc 2013-05-07 23:31:15 -04:00
Nathan Froyd
dc3bfcbc39 Bug 869073 - make WebIDL enums enum classes instead of plain enums; r=bz 2013-05-06 15:28:13 -04:00
Ehsan Akhgari
17d692ecaf Convert AudioNodeStream.cpp to unix line endings, no bug 2013-05-07 07:59:16 -04:00
Ehsan Akhgari
07fbb18a70 Bug 865247 - Part 3: Add a ProduceAudioBlock overload to handle simultaneous processing of multiple input and output ports; r=roc
The ObtainInputBlock API is also changed to create an input block for one input
block at a time.  An array of these input blocks is then sent to
ProduceAudioBlock for processing, which generates an array of AudioChunks as
output.

Backwards compatibilty with existing engines is achieved by keeping the
existing ProduceAudioBlock API for use with engines with only a maximum of one
input and output port.
2013-05-05 11:48:45 -04:00
Ehsan Akhgari
1cff2c39cc Bug 866434 - Part 2: Give each AudioParam that is connected to an AudioNode an AudioNodeStream; r=roc
These MediaStreams are used as a way to down-mix the input AudioChunks, and
also as a way to get proper stream processing ordering.  The MediaStream for
the source AudioNode is an input to these streams, and these streams in turn
are inputs to the MediaStream that the AudioNode that owns the AudioParam owns.
This way, the Media Streams Graph processing code will order the streams so
that by the time that the MediaStream for a given node is processed, all of the
MediaStreams belonging to the AudioNode(s) feeding into the AudioParam have
been processed.

This has a tricky side-effect that those streams also being considered when
determining the input block for the AudioNodeStream belonging to the
AudioParam's owner AudioNode.  In order to fix that, we simply special case
those streams and make AudioNodeStream::ObtainInputBlock ignore them.
2013-05-01 21:02:31 -04:00
Ehsan Akhgari
b2b952942b Bug 865234 - Part 9: Avoid variable shadowing in AudioNodeStream::ObtainInputBlock; r=roc 2013-04-30 19:37:58 -04:00