Contact emails
rt...@chromium.org, hong...@chromium.org
Spec
https://webaudio.github.io/web-audio-api/
https://webaudio.github.io/web-audio-api/#idl-def-AudioBufferSourceNode
Summary
Add an AudioScheduledSourceNode class to capture the common features of the source nodes that can be scheduled: AudioBufferSourceNode, ConstantSourceNode, and OscillatorNode. These are now subclasses of AudioScheduledSourceNode.
Motivation
The common methods (start, stop) and attributes (onended) are moved to AudioScheduledSourceNode to make it clearer that all source nodes share the same basic methods and attributes.
Interoperability and Compatibility Risk
This is a new addition to the WebAudio spec agreed upon by the working group. We expect all browsers to eventually implement this.
There is some risk in this change because methods that used to exist for, say, an OscillatorNode are now on AudioScheduledSourceNode. Uses of things like OscillatorNode.prototype.hasOwnProperty(“start”) will now fail. An http-archive search for such usages show no occurrences at all (as of today).
Ongoing technical constraints
None
Will this feature be supported on all six Blink platforms (Windows, Mac, Linux, Chrome OS, Android, and Android WebView)?
Yes.
OWP launch tracking bug
Link to entry on the feature dashboard
https://www.chromestatus.com/features/5644431130624000
Requesting approval to ship?
Yes
--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
Thanks for the httparchive research, hope this one works out without fallout.
Have you begun the implementation of this? Given that both AudioBufferSourceNode and its parent interface AudioScheduledSourceNode has start() methods, I wonder how it'll actually work. I don't believe there's any overload resolution mechanism that works across prototypes. Are you sure that this should work per WebIDL, and can you see if it'd actually work?
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.
On Thu, Nov 10, 2016 at 6:53 AM, Philip Jägenstedt <foo...@chromium.org> wrote:Thanks for the httparchive research, hope this one works out without fallout.Yeah, now that we know how these seemingly harmless changes can affect pages, we wanted to take some precautions. :-)Have you begun the implementation of this? Given that both AudioBufferSourceNode and its parent interface AudioScheduledSourceNode has start() methods, I wonder how it'll actually work. I don't believe there's any overload resolution mechanism that works across prototypes. Are you sure that this should work per WebIDL, and can you see if it'd actually work?The current CL (not quite yet ready for review) is at https://codereview.chromium.org/2471353004/. It seems to work, but I need to do more testing, especially in light of your comments.
From: Philip Jägenstedt [mailto:foo...@chromium.org]
> What should myAudioBufferSourceNode.start() do? It currently doesn't throw TypeError, but I think it will with the changed spec, but perhaps not intentionally?
>
> The weird thing is that AudioScheduledSourceNode.prototype.start.call(myAudioBufferSourceNode) would mean something different.
>
> If you'd implement it as virtual+override in C++, then probably the only way to do it spec-side is to have only a start() method on the base clase and switch on the type of the context object in the prose, as there's no such thing as virtual.
Is there a spec issue where this is being discussed?
On Thu, Nov 10, 2016 at 8:44 PM Raymond Toy <rt...@chromium.org> wrote:On Thu, Nov 10, 2016 at 6:53 AM, Philip Jägenstedt <foo...@chromium.org> wrote:Thanks for the httparchive research, hope this one works out without fallout.Yeah, now that we know how these seemingly harmless changes can affect pages, we wanted to take some precautions. :-)Have you begun the implementation of this? Given that both AudioBufferSourceNode and its parent interface AudioScheduledSourceNode has start() methods, I wonder how it'll actually work. I don't believe there's any overload resolution mechanism that works across prototypes. Are you sure that this should work per WebIDL, and can you see if it'd actually work?The current CL (not quite yet ready for review) is at https://codereview.chromium.org/2471353004/. It seems to work, but I need to do more testing, especially in light of your comments.What should myAudioBufferSourceNode.start() do? It currently doesn't throw TypeError, but I think it will with the changed spec, but perhaps not intentionally?
On Fri, Nov 11, 2016 at 1:29 AM, Philip Jägenstedt <foo...@chromium.org> wrote:On Thu, Nov 10, 2016 at 8:44 PM Raymond Toy <rt...@chromium.org> wrote:On Thu, Nov 10, 2016 at 6:53 AM, Philip Jägenstedt <foo...@chromium.org> wrote:Thanks for the httparchive research, hope this one works out without fallout.Yeah, now that we know how these seemingly harmless changes can affect pages, we wanted to take some precautions. :-)Have you begun the implementation of this? Given that both AudioBufferSourceNode and its parent interface AudioScheduledSourceNode has start() methods, I wonder how it'll actually work. I don't believe there's any overload resolution mechanism that works across prototypes. Are you sure that this should work per WebIDL, and can you see if it'd actually work?The current CL (not quite yet ready for review) is at https://codereview.chromium.org/2471353004/. It seems to work, but I need to do more testing, especially in light of your comments.What should myAudioBufferSourceNode.start() do? It currently doesn't throw TypeError, but I think it will with the changed spec, but perhaps not intentionally?This should start the node playing immediately. Internally, there isn't much change. There was already an AudioScheduledSource class that contained the common start and stop methods used by all sources.