Closed
Bug 1322883
Opened 7 years ago
Closed 7 years ago
AudioNode constructors
Categories
(Core :: Web Audio, defect, P1)
Core
Web Audio
Tracking
()
RESOLVED
FIXED
mozilla53
Tracking | Status | |
---|---|---|
firefox53 | --- | fixed |
People
(Reporter: baku, Assigned: baku)
References
Details
(Keywords: dev-doc-complete)
Attachments
(18 files, 6 obsolete files)
14.47 KB,
patch
|
padenot
:
review+
|
Details | Diff | Splinter Review |
7.56 KB,
patch
|
padenot
:
review+
|
Details | Diff | Splinter Review |
5.44 KB,
patch
|
padenot
:
review+
|
Details | Diff | Splinter Review |
7.09 KB,
patch
|
padenot
:
review+
|
Details | Diff | Splinter Review |
5.81 KB,
patch
|
padenot
:
review+
|
Details | Diff | Splinter Review |
8.01 KB,
patch
|
padenot
:
review+
|
Details | Diff | Splinter Review |
7.43 KB,
patch
|
padenot
:
review+
|
Details | Diff | Splinter Review |
6.41 KB,
patch
|
padenot
:
review+
|
Details | Diff | Splinter Review |
6.62 KB,
patch
|
padenot
:
review+
|
Details | Diff | Splinter Review |
6.66 KB,
patch
|
padenot
:
review+
|
Details | Diff | Splinter Review |
7.08 KB,
patch
|
padenot
:
review+
|
Details | Diff | Splinter Review |
7.00 KB,
patch
|
padenot
:
review+
|
Details | Diff | Splinter Review |
6.99 KB,
patch
|
padenot
:
review+
|
Details | Diff | Splinter Review |
7.32 KB,
patch
|
padenot
:
review+
|
Details | Diff | Splinter Review |
6.21 KB,
patch
|
padenot
:
review+
|
Details | Diff | Splinter Review |
11.00 KB,
patch
|
padenot
:
review+
|
Details | Diff | Splinter Review |
7.16 KB,
patch
|
padenot
:
review+
|
Details | Diff | Splinter Review |
4.28 KB,
patch
|
padenot
:
review+
|
Details | Diff | Splinter Review |
AudioNodes should have constructors. This bug is about implementing them.
Assignee | ||
Updated•7 years ago
|
Assignee: nobody → amarchesini
Assignee | ||
Comment 1•7 years ago
|
||
Attachment #8817845 -
Flags: review?(padenot)
Assignee | ||
Comment 2•7 years ago
|
||
Attachment #8817849 -
Flags: review?(padenot)
Assignee | ||
Comment 3•7 years ago
|
||
Attachment #8817849 -
Attachment is obsolete: true
Attachment #8817849 -
Flags: review?(padenot)
Attachment #8817850 -
Flags: review?(padenot)
Assignee | ||
Comment 4•7 years ago
|
||
Attachment #8817851 -
Flags: review?(padenot)
Assignee | ||
Comment 5•7 years ago
|
||
Attachment #8817852 -
Flags: review?(padenot)
Assignee | ||
Comment 6•7 years ago
|
||
Attachment #8817854 -
Flags: review?(padenot)
Assignee | ||
Comment 7•7 years ago
|
||
Attachment #8817854 -
Attachment is obsolete: true
Attachment #8817854 -
Flags: review?(padenot)
Attachment #8817855 -
Flags: review?(padenot)
Assignee | ||
Comment 8•7 years ago
|
||
Attachment #8817856 -
Flags: review?(padenot)
Assignee | ||
Comment 9•7 years ago
|
||
Attachment #8817887 -
Flags: review?(padenot)
Assignee | ||
Comment 10•7 years ago
|
||
Attachment #8817888 -
Flags: review?(padenot)
Assignee | ||
Comment 11•7 years ago
|
||
Attachment #8817889 -
Flags: review?(padenot)
Assignee | ||
Comment 12•7 years ago
|
||
Attachment #8817890 -
Flags: review?(padenot)
Assignee | ||
Comment 13•7 years ago
|
||
Attachment #8817891 -
Flags: review?(padenot)
Assignee | ||
Comment 14•7 years ago
|
||
Attachment #8817892 -
Flags: review?(padenot)
Assignee | ||
Comment 15•7 years ago
|
||
Attachment #8817893 -
Flags: review?(padenot)
Assignee | ||
Comment 16•7 years ago
|
||
Here I do an extra copy and I don't like it too much but I need to know if this can be a real issue. I can have 2 CTORs or find a better solution if you want.
Attachment #8817897 -
Flags: review?(padenot)
Assignee | ||
Comment 17•7 years ago
|
||
Read the previous comment
Attachment #8817897 -
Attachment is obsolete: true
Attachment #8817897 -
Flags: review?(padenot)
Attachment #8817899 -
Flags: review?(padenot)
Assignee | ||
Comment 18•7 years ago
|
||
Attachment #8817923 -
Flags: review?(padenot)
Assignee | ||
Comment 19•7 years ago
|
||
Attachment #8817924 -
Flags: review?(padenot)
Assignee | ||
Comment 20•7 years ago
|
||
Attachment #8817925 -
Flags: review?(padenot)
Assignee | ||
Comment 21•7 years ago
|
||
Attachment #8817926 -
Flags: review?(padenot)
Assignee | ||
Comment 22•7 years ago
|
||
Attachment #8817887 -
Attachment is obsolete: true
Attachment #8817887 -
Flags: review?(padenot)
Attachment #8818480 -
Flags: review?(padenot)
Updated•7 years ago
|
Rank: 15
Priority: -- → P1
Updated•7 years ago
|
Attachment #8817845 -
Flags: review?(padenot) → review+
Updated•7 years ago
|
Attachment #8817850 -
Flags: review?(padenot) → review+
Comment 23•7 years ago
|
||
Comment on attachment 8817851 [details] [diff] [review] part 2 - GainNode Review of attachment 8817851 [details] [diff] [review]: ----------------------------------------------------------------- r+ with a simple test that checks that the gain is set by the ctor. ::: dom/media/webaudio/test/test_gainNode.html @@ +25,1 @@ > Passing a gain value in the ctor is not tested here.
Attachment #8817851 -
Flags: review?(padenot) → review+
Comment 24•7 years ago
|
||
Comment on attachment 8817852 [details] [diff] [review] part 3 - DelayNode Review of attachment 8817852 [details] [diff] [review]: ----------------------------------------------------------------- r+ with a couple more tests. We need to check that the two attribute passed are set properly. ::: dom/media/webaudio/test/test_delayNode.html @@ +60,5 @@ > + new DelayNode(context, { maxDelayTime: NaN }); > + }, DOMException.NOT_SUPPORTED_ERR); > + expectException(function() { > + new DelayNode(context, { maxDelayTime: -1 }); > + }, DOMException.NOT_SUPPORTED_ERR); This does not check that the values passed in the ctor are reflected when the node is created.
Attachment #8817852 -
Flags: review?(padenot) → review+
Updated•7 years ago
|
Attachment #8817855 -
Flags: review?(padenot) → review+
Updated•7 years ago
|
Attachment #8817856 -
Flags: review?(padenot) → review+
Updated•7 years ago
|
Attachment #8817888 -
Flags: review?(padenot) → review+
Updated•7 years ago
|
Attachment #8817889 -
Flags: review?(padenot) → review+
Comment 25•7 years ago
|
||
Comment on attachment 8817890 [details] [diff] [review] part 9 - ConvolverNode Review of attachment 8817890 [details] [diff] [review]: ----------------------------------------------------------------- ::: dom/media/webaudio/ConvolverNode.cpp @@ +231,5 @@ > + return nullptr; > + } > + } > + > + // FIXME: aOptions.disableNormalization? Yes, this needs to be done, and needs to be done before setting the buffer, to save some CPU. Just do `audioNode->setNormalize(!aOptions.disableNormalization)` _before_ the buffer is set (otherwise, per spec, the attribute change should not do anything). See this paragraph in the spec: > If the AudioNode being constructed is a ConvolverNode, set its normalize attribute with the inverse of the value of the disableNormalization dictionary member, and then set its the buffer attribute to the value of the buffer dictionary member, in this order, and jump to the last step of this algorithm.
Attachment #8817890 -
Flags: review?(padenot)
Updated•7 years ago
|
Attachment #8817891 -
Flags: review?(padenot) → review+
Updated•7 years ago
|
Attachment #8817892 -
Flags: review?(padenot) → review+
Updated•7 years ago
|
Attachment #8817893 -
Flags: review?(padenot) → review+
Comment 26•7 years ago
|
||
Comment on attachment 8817899 [details] [diff] [review] part E - PeriodicWave Review of attachment 8817899 [details] [diff] [review]: ----------------------------------------------------------------- This needs a bit more work, but looks good. ::: dom/media/webaudio/AudioContext.cpp @@ +508,5 @@ > + > + for (uint32_t i = 0; i < realLength; ++i) { > + options.mReal.Value()[i] = aRealData.Data()[i]; > + options.mImag.Value()[i] = aImagData.Data()[i]; > + } Yeah indeed it's best to only copy once. Maybe it's best to keep the other ctor as well. ::: dom/media/webaudio/PeriodicWave.cpp @@ +42,5 @@ > } > + > + for (uint32_t i = 0; i < mLength; ++i) { > + buffer[i] = aReal[i]; > + } It's better to use `PodCopy` here. It will use `memcpy` under the hood a produce much faster code.
Attachment #8817899 -
Flags: review?(padenot)
Comment 27•7 years ago
|
||
Comment on attachment 8817923 [details] [diff] [review] part F - AudioBuffer Review of attachment 8817923 [details] [diff] [review]: ----------------------------------------------------------------- ::: dom/media/webaudio/test/test_stereoPannerNode.html @@ +71,5 @@ > // A couple mono and stereo buffers: the StereoPannerNode equation is different > // if the input is mono or stereo > +var stereoBuffer = new AudioBuffer(context, { numberOfChannels: 2, > + length: BUF_SIZE, > + sampleRate: context.sampleRate }); Can you drop the `context.sampleRate` bit here and below, so that this test also tests that if no rate is passed, it default to the context's sampleRate ?
Attachment #8817923 -
Flags: review?(padenot) → review+
Updated•7 years ago
|
Attachment #8817924 -
Flags: review?(padenot) → review+
Updated•7 years ago
|
Attachment #8817925 -
Flags: review?(padenot) → review+
Updated•7 years ago
|
Attachment #8817926 -
Flags: review?(padenot) → review+
Assignee | ||
Comment 28•7 years ago
|
||
Attachment #8817890 -
Attachment is obsolete: true
Attachment #8818899 -
Flags: review?(padenot)
Updated•7 years ago
|
Attachment #8818480 -
Flags: review?(padenot) → review+
Updated•7 years ago
|
Attachment #8818899 -
Flags: review?(padenot) → review+
Assignee | ||
Comment 29•7 years ago
|
||
Attachment #8817899 -
Attachment is obsolete: true
Attachment #8818920 -
Flags: review?(padenot)
Updated•7 years ago
|
Attachment #8818920 -
Flags: review?(padenot) → review+
Comment 30•7 years ago
|
||
Pushed by amarchesini@mozilla.com: https://hg.mozilla.org/integration/mozilla-inbound/rev/339a11acf171 AudioNode constructors - part 0 - AnalyserNode, r=padenot https://hg.mozilla.org/integration/mozilla-inbound/rev/64e8b5cc289f AudioNode constructors - part 1 - AudioBufferSourceNode, r=padenot https://hg.mozilla.org/integration/mozilla-inbound/rev/912981c8482f AudioNode constructors - part 2 - GainNode, r=padenot https://hg.mozilla.org/integration/mozilla-inbound/rev/b646b6a9bab6 AudioNode constructors - part 3 - DelayNode, r=padenot https://hg.mozilla.org/integration/mozilla-inbound/rev/fd9c173ccdaa AudioNode constructors - part 4 - BiquadFilterNode, r=padenot https://hg.mozilla.org/integration/mozilla-inbound/rev/aa5304b535f8 AudioNode constructors - part 5 - IIRFilterNode, r=padenot https://hg.mozilla.org/integration/mozilla-inbound/rev/8895dafe20fe AudioNode constructors - part 6 - WaveShaperNode, r=padenot https://hg.mozilla.org/integration/mozilla-inbound/rev/473f4d9e733e AudioNode constructors - part 7 - PannerNode, r=padenot https://hg.mozilla.org/integration/mozilla-inbound/rev/cdf7cf225e9f AudioNode constructors - part 8 - StereoPannerNode, r=padenot https://hg.mozilla.org/integration/mozilla-inbound/rev/7599aaf0e1dc AudioNode constructors - part 9 - ConvolverNode, r=padenot https://hg.mozilla.org/integration/mozilla-inbound/rev/269333231452 AudioNode constructors - part 10 - ChannelSplitterNode, r=padenot https://hg.mozilla.org/integration/mozilla-inbound/rev/eea2997c1f91 AudioNode constructors - part 11 - ChannelMergerNode, r=padenot https://hg.mozilla.org/integration/mozilla-inbound/rev/8aa5c90d8192 AudioNode constructors - part 12 - DynamicsCompressorNode, r=padenot https://hg.mozilla.org/integration/mozilla-inbound/rev/ee819615a35a AudioNode constructors - part 13 - OscillatorNode, r=padenot https://hg.mozilla.org/integration/mozilla-inbound/rev/32d6100a73ad AudioNode constructors - part 14 - PeriodicWave, r=padenot https://hg.mozilla.org/integration/mozilla-inbound/rev/6242dead061e AudioNode constructors - part 15 - AudioBuffer, r=padenot https://hg.mozilla.org/integration/mozilla-inbound/rev/9c1c90ad617b AudioNode constructors - part 16 - MediaElementAudioSourceNode, r=padenot https://hg.mozilla.org/integration/mozilla-inbound/rev/79147ddefd2e AudioNode constructors - part 17 - MediaStreamAudioSourceNode, r=padenot https://hg.mozilla.org/integration/mozilla-inbound/rev/9df23f010cf9 AudioNode constructors - part 18 - MediaStreamAudioDestinationNode, r=padenot
Comment 31•7 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/339a11acf171 https://hg.mozilla.org/mozilla-central/rev/64e8b5cc289f https://hg.mozilla.org/mozilla-central/rev/912981c8482f https://hg.mozilla.org/mozilla-central/rev/b646b6a9bab6 https://hg.mozilla.org/mozilla-central/rev/fd9c173ccdaa https://hg.mozilla.org/mozilla-central/rev/aa5304b535f8 https://hg.mozilla.org/mozilla-central/rev/8895dafe20fe https://hg.mozilla.org/mozilla-central/rev/473f4d9e733e https://hg.mozilla.org/mozilla-central/rev/cdf7cf225e9f https://hg.mozilla.org/mozilla-central/rev/7599aaf0e1dc https://hg.mozilla.org/mozilla-central/rev/269333231452 https://hg.mozilla.org/mozilla-central/rev/eea2997c1f91 https://hg.mozilla.org/mozilla-central/rev/8aa5c90d8192 https://hg.mozilla.org/mozilla-central/rev/ee819615a35a https://hg.mozilla.org/mozilla-central/rev/32d6100a73ad https://hg.mozilla.org/mozilla-central/rev/6242dead061e https://hg.mozilla.org/mozilla-central/rev/9c1c90ad617b https://hg.mozilla.org/mozilla-central/rev/79147ddefd2e https://hg.mozilla.org/mozilla-central/rev/9df23f010cf9
Status: NEW → RESOLVED
Closed: 7 years ago
status-firefox53:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla53
Updated•6 years ago
|
Keywords: dev-doc-needed
Comment 33•6 years ago
|
||
I have made sure all of these are documented, and the browser support info is up-to-date: https://developer.mozilla.org/en-US/docs/Web/API/PeriodicWave/PeriodicWave https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode/ConvolverNode https://developer.mozilla.org/en-US/docs/Web/API/WaveShaperNode/WaveShaperNode https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioDestinationNode/MediaStreamAudioDestinationNode https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioSourceNode/MediaStreamAudioSourceNode https://developer.mozilla.org/en-US/docs/Web/API/MediaElementAudioSourceNode/MediaElementAudioSourceNode https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer/AudioBuffer https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode/OscillatorNode https://developer.mozilla.org/en-US/docs/Web/API/ChannelMergerNode/ChannelMergerNode https://developer.mozilla.org/en-US/docs/Web/API/ChannelSplitterNode/ChannelSplitterNode https://developer.mozilla.org/en-US/docs/Web/API/StereoPannerNode/StereoPannerNode https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/PannerNode https://developer.mozilla.org/en-US/docs/Web/API/IIRFilterNode/IIRFilterNode https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode/BiquadFilterNode https://developer.mozilla.org/en-US/docs/Web/API/DelayNode/DelayNode https://developer.mozilla.org/en-US/docs/Web/API/GainNode/GainNode https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/AudioBufferSourceNode https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/AnalyserNode I have added a page covering the AudioNodeOptions dictionary that all the constructor option objects inherit from: https://developer.mozilla.org/en-US/docs/Web/API/AudioNodeOptions I have also added a note to the Fx53 rel notes: https://developer.mozilla.org/en-US/Firefox/Releases/53#Web_Audio_API Has anything been missed? Thanks!
Keywords: dev-doc-needed → dev-doc-complete
Comment 34•6 years ago
|
||
That's amazing Chris, thanks! I had a look, I think you covered everything!
You need to log in
before you can comment on or make changes to this bug.
Description
•