/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
/*
 * The origin of this IDL file is
 * https://webaudio.github.io/web-audio-api/#mediastreamtrackaudiosourcenode
 */

dictionary MediaStreamTrackAudioSourceOptions {
  required MediaStreamTrack mediaStreamTrack;
};

[Exposed=Window]
interface MediaStreamTrackAudioSourceNode : AudioNode {
  [Throws] constructor (AudioContext context, MediaStreamTrackAudioSourceOptions options);
};
