Commit Graph

62 Commits

Author SHA1 Message Date
Ehsan Akhgari
fefedbf170 Bug 867174 - Part 2: Protect against invalid sample rates a bit harder; r=padenot 2013-05-06 11:34:03 -04:00
Ehsan Akhgari
e6e5e83119 Bug 867174 - Part 1: Deliver the correct channel count the to the resampler the first time that we see a buffer; r=padenot 2013-04-30 16:36:19 -04:00
Paul Adenot
6e76c43d3d Bug 867203 - Part 2: Remove useless mPannerNode member in AudioBufferSourceNode. r=ehsan
--HG--
extra : rebase_source : dc94f66dbb4291226ab3f2c6c1ad8dc7aa4081e7
2013-05-02 17:04:49 +02:00
Ehsan Akhgari
96b8756891 Bug 867203 - Part 1: Unregister AudioBufferSourceNodes from PannerNodes when they die; r=padenot
--HG--
extra : rebase_source : 3c580a0feba39d01779a91e6bd10a10d98cb7114
2013-04-30 19:20:55 -04:00
Ehsan Akhgari
e0262ff6ca 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
Ed Morley
bbd462e94e Backed out changeset 2938c2e1f7e7 (bug 867203) since part 1 had to be backed out for conflicts 2013-05-03 10:10:18 +01:00
Ed Morley
e1d81087be Backed out changeset ad407adf94f2 (bug 867174) and friends for causing permaorange mochitest-2 on Android, disabling tests without using android.json and/or conflicting with the backouts on three CLOSED TREEs 2013-05-03 09:24:04 +01:00
Ed Morley
d320d9c131 Backed out changeset 9351bfd9d8c5 (bug 867174) 2013-05-03 09:20:05 +01:00
Ed Morley
a98a3b019c Backed out changeset b66017604bdd (bug 867203) 2013-05-03 09:19:43 +01:00
Paul Adenot
5bc11a52c7 Bug 867203 - Part 2: Remove useless mPannerNode member in AudioBufferSourceNode. r=ehsan
--HG--
extra : rebase_source : 1b4bb979fd34dabc470ed8e59a40deaff0fa61a5
2013-05-02 17:04:49 +02:00
Ehsan Akhgari
1e87638631 Bug 867203 - Part 1: Unregister AudioBufferSourceNodes from PannerNodes when they die; r=padenot
--HG--
extra : rebase_source : e4aca1ebb975e04e8821df0377ee652e18755ed7
2013-04-30 19:20:55 -04:00
Ehsan Akhgari
36e2c4b257 Bug 867174 - Part 2: Protect against invalid sample rates a bit harder; r=padenot 2013-04-30 16:37:23 -04:00
Ehsan Akhgari
bff2300eea Bug 867174 - Part 1: Deliver the correct channel count the to the resampler the first time that we see a buffer; r=padenot 2013-04-30 16:36:19 -04:00
Ehsan Akhgari
a749080ffb Bug 865234 - Part 1: Add DOM bindings for the channel mixing attributes; r=roc 2013-04-27 18:44:50 -04:00
Paul Adenot
6402233faa Bug 867089 - Validate the playbackRate before using it. r=ehsan
--HG--
extra : rebase_source : 6e4065d4db69cb2d13f7ba5c05fbe9c74db03bf3
2013-04-30 16:04:05 +02:00
Ryan VanderMeulen
97c7feb7b5 Backed out changesets 5447d49a2c6f and ab9c9d0819a2 (bug 867089) for mochitest failures.
CLOSED TREE
2013-04-30 11:16:55 -04:00
Paul Adenot
3d22663645 Bug 867089 - Validate the playbackRate before using it. r=ehsan 2013-04-30 16:04:05 +02:00
Ehsan Akhgari
3a048937ab Bug 865550 - Unlink AudioBufferSourceNode members before AudioNode; r=mccr8 2013-04-25 16:52:52 -04:00
Ehsan Akhgari
225ca99bf9 Bug 865650 - Ensure that looping will only happen if the start offset is less than the end offset; r=padenot
--HG--
extra : rebase_source : 3de31185083df174f7b6e823d1a135aee39c211d
2013-04-25 09:34:47 -04:00
Boris Zbarsky
f75142b01d 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
557ec26e0f Bug 865532 - Don't attempt to stop an AudioBufferSourceNode that doesn't have a context; r=padenot 2013-04-24 22:24:25 -04:00
Ehsan Akhgari
f3f4b81e3c Bug 864164 - Part 2: Send the AudioBufferSourceNode buffer parameter changes to the stream; r=padenot 2013-04-22 17:01:22 -04:00
Ehsan Akhgari
ba2650c05f Bug 864164 - Part 1: Send the AudioBufferSourceNode loop parameter changes to the stream; r=padenot 2013-04-22 00:22:33 -04:00
Ehsan Akhgari
65f9c8c375 Bug 864086 - Simplify AudioNode::DestroyMediaStream callers; r=padenot 2013-04-22 08:14:10 -04:00
Ehsan Akhgari
2666bbba26 Bug 864083 - Cleanup AudioBuffer::GetThreadSharedChannelsForRate; r=padenot 2013-04-22 08:12:45 -04:00
Ryan VanderMeulen
95d5080f59 Backed out changesets 3b8fdfefcf5e and ab61f99fb584 (bug 864083) for bustage on a CLOSED TREE. 2013-04-22 08:58:32 -04:00
Ehsan Akhgari
762d5ad5f6 Bug 864086 - Simplify AudioNode::DestroyMediaStream callers; r=padenot 2013-04-22 08:14:10 -04:00
Ehsan Akhgari
d7d8be9b4a Bug 864083 - Cleanup AudioBuffer::GetThreadSharedChannelsForRate; r=padenot 2013-04-22 08:12:45 -04:00
Ehsan Akhgari
6ee7fc5a87 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
2d790c190b 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
4acb2a4b45 Bug 853551 - Implement the doppler part of AudioPannerNode. r=ehsan 2013-04-11 14:47:57 +02:00
Paul Adenot
d174da3ba1 Bug 854336 - Implement the playbackRate property of AudioBufferSourceNode. r=ehsan 2013-04-09 14:47:42 +02:00
Paul Adenot
59347270e4 Bug 852366 - Don't resample on the main thread. r=ehsan,roc 2013-03-18 20:54:32 -04:00
Ehsan Akhgari
b5c7a06c19 Backed out changeset 3ae03ecf8b5e (bug 852366) because of mochitest-1 crashes
Landed on a CLOSED TREE
2013-04-09 11:29:15 -04:00
Ehsan Akhgari
340cb86e25 Backed out changeset 92c2f24cb6ff (bug 854336) because of mochitest-1 crashes 2013-04-09 11:28:42 -04:00
Ehsan Akhgari
61bad51d84 Backed out changeset 9c080ffa640f (bug 853551) because of mochitest-1 crashes 2013-04-09 11:28:38 -04:00
Paul Adenot
e62b3f4e3d Bug 853551 - Implement the doppler part of AudioPannerNode. r=ehsan 2013-04-09 14:47:42 +02:00
Paul Adenot
e76e15c30c Bug 854336 - Implement the playbackRate property of AudioBufferSourceNode. r=ehsan 2013-04-09 14:47:42 +02:00
Paul Adenot
bdddd513a1 Bug 852366 - Don't resample on the main thread. r=ehsan,roc 2013-03-18 20:54:32 -04:00
Ehsan Akhgari
6f3b411b8e Bug 859594 - Remove AudioSourceNode; r=bzbarsky 2013-04-08 22:45:02 -04:00
Ehsan Akhgari
60ab45fb40 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
e48730f81b Bug 849713 - Part 5: Implement the looping logic in AudioBufferSourceNodeEngine; r=roc
The logic in this function is based around a while loop.  In every
iteration of the loop, we determine whether we need to output silence
(if we're at a position before the playback has started or after it has
stopped) or if we need to produce sound.  In each case, we call a helper
function which eagerly tries to produce as much silence or sound as
possible, while maintaining the constraints that are explained in the
comments in the code.
2013-03-10 21:02:22 -04:00
Ehsan Akhgari
245251292d Bug 849713 - Part 4: Refactor the logic for borrowing the output buffer from the input buffer; r=roc 2013-03-10 18:38:57 -04:00
Ehsan Akhgari
a4cc299dc2 Bug 849713 - Part 3: Set the loop parameters on AudioBufferSourceNodeEngine if looping is turned on when start() gets called; r=roc 2013-03-10 14:11:12 -04:00
Ehsan Akhgari
a03597ec60 Bug 849713 - Part 2: Accept the loop parameters on AudioBufferSourceNodeEngine; r=roc 2013-03-10 13:59:41 -04:00
Ehsan Akhgari
b01654e838 Bug 849713 - Part 1: Add DOM bindings for AudioBufferSourceNode loop attributes; r=roc 2013-03-10 12:56:14 -04:00
Ehsan Akhgari
bbfd0958e3 Backed out 4 changesets (bug 849713) since builds fail because of warnings as errors
Backed out changeset e811d4258d45 (bug 849713)
Backed out changeset 26aa58e87d5d (bug 849713)
Backed out changeset 9a6552161eff (bug 849713)
Backed out changeset 3551877d9b92 (bug 849713)

Landing on a CLOSED TREE
2013-03-11 16:14:42 -04:00
Ehsan Akhgari
35dae1b81f Backed out changeset 151b845b0fa9 (bug 849713 part 5) because it has not been reviewed yet! 2013-03-11 15:31:14 -04:00
Ehsan Akhgari
a974ee8086 Bug 849713 - Part 5: Implement the looping logic in AudioBufferSourceNodeEngine; r=roc
The logic in this function is mostly around the mLoop variable.  mLoop being
NotLooping means that the playback of this node is never going to loop, in
which case the logic doesn't change compared to the ProduceAudioBlock function
before this patch.

If the loop mode is turned on when start() is called, mLoop will initially be
WillLoop.  In that case, we play back until mLoopEnd, and then we will wrap
around to mLoopStart, set mLoop to be IsLooping, and start playback again.
From that point on, mLoop will always be IsLooping, and we will loop between
mLoopStart and mLoopEnd.  Where possible, we'll just use BorrowFromInputBuffer
to avoid copying the buffer, and if we hit the edges right around the time that
we loop, we copy some frames from the end of the input buffer and some from the
beginning in the memcpy loops at the end of the ProduceAudioBlock function.
2013-03-10 21:02:22 -04:00
Ehsan Akhgari
a5fea34024 Bug 849713 - Part 4: Refactor the logic for borrowing the output buffer from the input buffer; r=roc 2013-03-10 18:38:57 -04:00