| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| part of web_audio; |
| |
| $(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS { |
| $!MEMBERS |
| factory AudioContext() => JS('AudioContext', |
| 'new (window.AudioContext || window.webkitAudioContext)()'); |
| |
| GainNode createGain() { |
| if (JS('bool', '#.createGain !== undefined', this)) { |
| return JS('GainNode', '#.createGain()', this); |
| } else { |
| return JS('GainNode', '#.createGainNode()', this); |
| } |
| } |
| |
| ScriptProcessorNode createScriptProcessor([int bufferSize, |
| int numberOfInputChannels, int numberOfOutputChannels]) { |
| var function = JS( |
| '=Object', |
| '#.createScriptProcessor || ' |
| '#.createJavaScriptNode', |
| this, |
| this); |
| if (numberOfOutputChannels != null) { |
| return JS('ScriptProcessorNode', '#.call(#, #, #, #)', function, this, |
| bufferSize, numberOfInputChannels, numberOfOutputChannels); |
| } else if (numberOfInputChannels != null) { |
| return JS('ScriptProcessorNode', '#.call(#, #, #)', function, this, |
| bufferSize, numberOfInputChannels); |
| } else if (bufferSize != null) { |
| return JS( |
| 'ScriptProcessorNode', '#.call(#, #)', function, this, bufferSize); |
| } else { |
| return JS( |
| 'ScriptProcessorNode', '#.call(#)', function, this); |
| } |
| } |
| |
| @JSName('decodeAudioData') |
| Future _decodeAudioData(ByteBuffer audioData, |
| [DecodeSuccessCallback successCallback, |
| DecodeErrorCallback errorCallback]) native; |
| |
| Future<AudioBuffer> decodeAudioData(ByteBuffer audioData, |
| [DecodeSuccessCallback successCallback, |
| DecodeErrorCallback errorCallback]) { |
| if (successCallback != null && errorCallback != null) { |
| return _decodeAudioData(audioData, successCallback, errorCallback); |
| } |
| |
| var completer = new Completer<AudioBuffer>(); |
| _decodeAudioData(audioData, (value) { |
| completer.complete(value); |
| }, (error) { |
| if (error == null) { |
| completer.completeError(''); |
| } else { |
| completer.completeError(error); |
| } |
| }); |
| return completer.future; |
| } |
| } |