Commit Graph

44 Commits

Author SHA1 Message Date
Ehsan Akhgari
210ba12d7c Bug 912702 - Minimize the #includes in content/media; r=roc 2013-09-05 16:25:17 -04:00
Ehsan Akhgari
45746b149c 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
66abd6bfb5 Bug 912702 - Minimize the #includes in content/media; r=roc 2013-09-04 17:58:14 -04:00
Ehsan Akhgari
dbb3035d02 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
f96ab4782f 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
5cb0162f45 Bug 865257 - Implement MediaStreamAudioDestinationNode. r=ehsan,roc 2013-05-21 15:17:47 -04:00
Robert O'Callahan
6569fc1a08 Bug 868405. Support 'enabled' attribute on MediaStreamTrack. r=jesup
--HG--
extra : rebase_source : ec29ae2e45979baaf1b6a085549755ba86cadd40
2013-05-30 16:44:43 +12:00
Ehsan Akhgari
c7959dc839 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
d51de5e22a 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
4d8cc1f041 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
d593b66025 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
88179b9901 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
ab09f23cb3 Backed out changesets e52c6f7200b3 and 2718954757e1 (bug 874869) for intermittent Windows leaks. 2013-05-22 15:22:26 -04:00
Ehsan Akhgari
aa8f22ec3d Bug 874869 - Disallow setting AudioNode.channelCount to zero; r=roc 2013-05-22 11:30:31 -04:00
Ehsan Akhgari
5cba21896b Bug 865251 - Implement WaveShaperNode; r=roc 2013-05-14 00:12:30 -04:00
Ehsan Akhgari
03723f56bf 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
f2d6931593 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
19a6f21e0b Bug 869073 - make WebIDL enums enum classes instead of plain enums; r=bz 2013-05-06 15:28:13 -04:00
Ehsan Akhgari
2d8ce02336 Convert AudioNodeStream.cpp to unix line endings, no bug 2013-05-07 07:59:16 -04:00
Ehsan Akhgari
393265eec6 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
85820ff13a 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
78e98235e0 Bug 865234 - Part 9: Avoid variable shadowing in AudioNodeStream::ObtainInputBlock; r=roc 2013-04-30 19:37:58 -04:00
Ehsan Akhgari
d000f982db Bug 865234 - Part 7: Change the speaker up-mixing and down-mixing rules according to the Web Audio spec; r=roc 2013-04-29 20:15:26 -04:00
Ehsan Akhgari
28ad963570 Bug 865234 - Part 6: Round up the |when| argument AudioBufferSouceNode.start; r=roc
This change is made in order to increase compatibility of the implementation
with what WebKit does.  This helps us in order to be able to compare our
results more closely to WebKit's.
2013-04-29 19:22:49 -04:00
Ehsan Akhgari
b93ae3e526 Bug 865234 - Part 5: Don't mark a stream as finished when there are streams following it; r=roc
Without this patch, if we have an AudioBufferSourceNode which is finished, the
nodes following it will not see its mLastChunk.  This breaks the Web Audio
block processing logic since we rely on the assumption that the buffer for the
last output of AudioBufferSourceNode is correctly passed to the following
engines.
2013-04-29 16:58:19 -04:00
Ehsan Akhgari
3980972dbb Bug 865234 - Part 4: Implement ChannelInterpretation's effect when mixing inputs; r=roc 2013-04-27 19:52:21 -04:00
Ehsan Akhgari
bf69023731 Bug 865234 - Part 3: Implement ChannelCountMode's effect when mixing inputs; r=roc 2013-04-27 19:41:52 -04:00
Ehsan Akhgari
db6a4e8298 Bug 865234 - Part 2: Send the channel mixing information to the AudioNodeStream; r=roc 2013-04-27 19:25:23 -04:00
Ehsan Akhgari
21b6d807c6 Bug 834513 - Part 3: Implement ScriptProcessorNode; r=roc 2013-04-13 21:37:04 -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
Ehsan Akhgari
dd2894d770 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
f52ab73c5d Bug 856771 - Protect the source buffer nodes from leaking when their binding goes away without being played back; r=roc 2013-04-01 16:06:55 -04:00
Paul Adenot
e6e4a4c615 Bug 853076 - Initialized the chunk to be empty before getting audio frames. r=ehsan
--HG--
extra : rebase_source : 06845291a1d86aac4adbde1163196f5de61289e9
2013-03-21 10:56:40 +01:00
Ehsan Akhgari
35d1346376 Bug 851986 - Avoid calling a virtual function when getting the source for an AudioNodeStream; r=roc 2013-03-17 21:26:45 -04:00
Ehsan Akhgari
ddf63292e4 Bug 851966 - Only store the produced AudioChunks for AudioNodeStreams that will result in playback; r=roc 2013-03-17 20:37:47 -04:00
Ehsan Akhgari
2e3c9ba835 Bug 849916 - Part 1: Make it possible to send ThreeDPoint objects as commands to the MSG thread; r=padenot 2013-03-12 11:16:42 -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
5435366892 Bug 849916 - Part 1: Make it possible to send ThreeDPoint objects as commands to the MSG thread; r=padenot 2013-03-12 11:16:42 -04:00
Ehsan Akhgari
e91dfed6d9 Bug 836076 - Part 2: Make it possible to send AudioEventTimeline objects as commands to the MSG thread; r=roc 2013-01-28 17:42:27 -05:00
Robert O'Callahan
569f78ecf3 Bug 804387. Part 8: Create AudioNodeEngine and AudioNodeStream. r=jesup
Modifies MediaStreamGraph to always advance its time by a multiple of
WEBAUDIO_BLOCK_SIZE.

--HG--
extra : rebase_source : 99524b09edd4ac0e1bc6607f2ba14925bc2f11c2
2013-01-14 11:46:57 +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
9b629eb383 Bug 836076 - Part 2: Make it possible to send AudioEventTimeline objects as commands to the MSG thread; r=roc 2013-01-28 17:42:27 -05:00
Robert O'Callahan
b742aee0ca Bug 804387. Part 8: Create AudioNodeEngine and AudioNodeStream. r=jesup
Modifies MediaStreamGraph to always advance its time by a multiple of
WEBAUDIO_BLOCK_SIZE.
2013-01-14 11:46:57 +13:00