/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* 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 http://mozilla.org/MPL/2.0/. * * The origin of this IDL file is * http://w3c.github.io/webrtc-pc/#rtcrtpsender-interface */ enum RTCPriorityType { "very-low", "low", "medium", "high" }; enum RTCDegradationPreference { "maintain-framerate", "maintain-resolution", "balanced" }; dictionary RTCRtxParameters { unsigned long ssrc; }; dictionary RTCFecParameters { unsigned long ssrc; }; dictionary RTCRtpEncodingParameters { unsigned long ssrc; RTCRtxParameters rtx; RTCFecParameters fec; boolean active; RTCPriorityType priority; unsigned long maxBitrate; RTCDegradationPreference degradationPreference = "balanced"; DOMString rid; float scaleResolutionDownBy = 1.0; }; dictionary RTCRtpHeaderExtensionParameters { DOMString uri; unsigned short id; boolean encrypted; }; dictionary RTCRtcpParameters { DOMString cname; boolean reducedSize; }; dictionary RTCRtpCodecParameters { unsigned short payloadType; DOMString mimeType; unsigned long clockRate; unsigned short channels = 1; DOMString sdpFmtpLine; }; dictionary RTCRtpParameters { sequence encodings; sequence headerExtensions; RTCRtcpParameters rtcp; sequence codecs; }; [Pref="media.peerconnection.enabled", JSImplementation="@mozilla.org/dom/rtpsender;1"] interface RTCRtpSender { readonly attribute MediaStreamTrack? track; Promise setParameters (optional RTCRtpParameters parameters); RTCRtpParameters getParameters(); Promise replaceTrack(MediaStreamTrack? withTrack); Promise getStats(); [Pref="media.peerconnection.dtmf.enabled"] readonly attribute RTCDTMFSender? dtmf; // Ugh, can't use a ChromeOnly attibute sequence... [ChromeOnly] sequence getStreams(); [ChromeOnly] undefined setStreams(sequence streams); [ChromeOnly] undefined setTrack(MediaStreamTrack? track); [ChromeOnly] undefined checkWasCreatedByPc(RTCPeerConnection pc); };