зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1290948 - Part 2: webidl for RTCRtpTransceiver and supporting interfaces r+jib, r+ehsan r=ehsan+251051,jib
MozReview-Commit-ID: DmXufKwCAyW --HG-- extra : rebase_source : 30948762aa31846ac6ae89cd757010a60e6f44db
This commit is contained in:
Родитель
d76133fd0a
Коммит
5daf41d807
|
@ -683,6 +683,12 @@ DOMInterfaces = {
|
|||
'wrapperCache': False
|
||||
},
|
||||
|
||||
'TransceiverImpl': {
|
||||
'nativeType': 'mozilla::TransceiverImpl',
|
||||
'headerFile': 'TransceiverImpl.h',
|
||||
'wrapperCache': False
|
||||
},
|
||||
|
||||
'Plugin': {
|
||||
'headerFile' : 'nsPluginArray.h',
|
||||
'nativeType': 'nsPluginElement',
|
||||
|
|
|
@ -43,4 +43,9 @@ interface MediaStream : EventTarget {
|
|||
|
||||
[ChromeOnly, Throws]
|
||||
static Promise<long> countUnderlyingStreams();
|
||||
|
||||
// Webrtc allows the remote side to name a stream whatever it wants, and we
|
||||
// need to surface this to content.
|
||||
[ChromeOnly]
|
||||
void assignId(DOMString id);
|
||||
};
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
/* -*- 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/.
|
||||
*/
|
||||
|
||||
[ChromeOnly]
|
||||
interface MediaStreamList {
|
||||
getter MediaStream? (unsigned long index);
|
||||
readonly attribute unsigned long length;
|
||||
};
|
|
@ -41,28 +41,24 @@ interface PeerConnectionImpl {
|
|||
|
||||
/* Adds the tracks created by GetUserMedia */
|
||||
[Throws]
|
||||
void addTrack(MediaStreamTrack track, MediaStream... streams);
|
||||
[Throws]
|
||||
void removeTrack(MediaStreamTrack track);
|
||||
[Throws]
|
||||
void insertDTMF(RTCRtpSender sender, DOMString tones,
|
||||
TransceiverImpl createTransceiverImpl(DOMString kind,
|
||||
MediaStreamTrack? track);
|
||||
[Throws]
|
||||
boolean checkNegotiationNeeded();
|
||||
[Throws]
|
||||
void insertDTMF(TransceiverImpl transceiver, DOMString tones,
|
||||
optional unsigned long duration = 100,
|
||||
optional unsigned long interToneGap = 70);
|
||||
[Throws]
|
||||
DOMString getDTMFToneBuffer(RTCRtpSender sender);
|
||||
[Throws]
|
||||
void replaceTrack(MediaStreamTrack thisTrack, MediaStreamTrack withTrack);
|
||||
[Throws]
|
||||
void setParameters(MediaStreamTrack track,
|
||||
optional RTCRtpParameters parameters);
|
||||
[Throws]
|
||||
RTCRtpParameters getParameters(MediaStreamTrack track);
|
||||
void replaceTrackNoRenegotiation(TransceiverImpl transceiverImpl,
|
||||
MediaStreamTrack? withTrack);
|
||||
[Throws]
|
||||
void closeStreams();
|
||||
|
||||
sequence<MediaStream> getLocalStreams();
|
||||
sequence<MediaStream> getRemoteStreams();
|
||||
|
||||
void addRIDExtension(MediaStreamTrack recvTrack, unsigned short extensionId);
|
||||
void addRIDFilter(MediaStreamTrack recvTrack, DOMString rid);
|
||||
|
||||
|
|
|
@ -23,16 +23,11 @@ interface PeerConnectionObserver
|
|||
void onAddIceCandidateSuccess();
|
||||
void onAddIceCandidateError(unsigned long name, DOMString message);
|
||||
void onIceCandidate(unsigned short level, DOMString mid, DOMString candidate);
|
||||
void onNegotiationNeeded();
|
||||
|
||||
/* Stats callbacks */
|
||||
void onGetStatsSuccess(optional RTCStatsReportInternal report);
|
||||
void onGetStatsError(unsigned long name, DOMString message);
|
||||
|
||||
/* replaceTrack callbacks */
|
||||
void onReplaceTrackSuccess();
|
||||
void onReplaceTrackError(unsigned long name, DOMString message);
|
||||
|
||||
/* Data channel callbacks */
|
||||
void notifyDataChannel(DataChannel channel);
|
||||
|
||||
|
@ -40,15 +35,20 @@ interface PeerConnectionObserver
|
|||
void onStateChange(PCObserverStateType state);
|
||||
|
||||
/* Changes to MediaStreamTracks */
|
||||
void onAddStream(MediaStream stream);
|
||||
void onRemoveStream(MediaStream stream);
|
||||
void onAddTrack(MediaStreamTrack track, sequence<MediaStream> streams);
|
||||
void onRemoveTrack(MediaStreamTrack track);
|
||||
void onTrack(DOMString webrtcTrackId, sequence<DOMString> streamIds);
|
||||
|
||||
/* Transceiver management; called when setRemoteDescription causes a
|
||||
transceiver to be created on the C++ side */
|
||||
void onTransceiverNeeded(DOMString kind, TransceiverImpl transceiverImpl);
|
||||
|
||||
/* DTMF callback */
|
||||
void onDTMFToneChange(DOMString trackId, DOMString tone);
|
||||
void onDTMFToneChange(MediaStreamTrack track, DOMString tone);
|
||||
|
||||
/* Packet dump callback */
|
||||
void onPacket(unsigned long level, mozPacketDumpType type, boolean sending,
|
||||
ArrayBuffer packet);
|
||||
|
||||
/* Transceiver sync */
|
||||
void syncTransceivers();
|
||||
};
|
||||
|
|
|
@ -128,8 +128,12 @@ interface RTCPeerConnection : EventTarget {
|
|||
MediaStream... moreStreams);
|
||||
void removeTrack(RTCRtpSender sender);
|
||||
|
||||
RTCRtpTransceiver addTransceiver((MediaStreamTrack or DOMString) trackOrKind,
|
||||
optional RTCRtpTransceiverInit init);
|
||||
|
||||
sequence<RTCRtpSender> getSenders();
|
||||
sequence<RTCRtpReceiver> getReceivers();
|
||||
sequence<RTCRtpTransceiver> getTransceivers();
|
||||
|
||||
[ChromeOnly]
|
||||
void mozAddRIDExtension(RTCRtpReceiver receiver, unsigned short extensionId);
|
||||
|
|
|
@ -69,11 +69,20 @@ dictionary RTCRtpParameters {
|
|||
[Pref="media.peerconnection.enabled",
|
||||
JSImplementation="@mozilla.org/dom/rtpsender;1"]
|
||||
interface RTCRtpSender {
|
||||
readonly attribute MediaStreamTrack track;
|
||||
readonly attribute MediaStreamTrack? track;
|
||||
Promise<void> setParameters (optional RTCRtpParameters parameters);
|
||||
RTCRtpParameters getParameters();
|
||||
Promise<void> replaceTrack(MediaStreamTrack track);
|
||||
Promise<void> replaceTrack(MediaStreamTrack? withTrack);
|
||||
Promise<RTCStatsReport> getStats();
|
||||
[Pref="media.peerconnection.dtmf.enabled"]
|
||||
readonly attribute RTCDTMFSender? dtmf;
|
||||
// Ugh, can't use a ChromeOnly attibute sequence<MediaStream>...
|
||||
[ChromeOnly]
|
||||
sequence<MediaStream> getStreams();
|
||||
[ChromeOnly]
|
||||
void setStreams(sequence<MediaStream> streams);
|
||||
[ChromeOnly]
|
||||
void setTrack(MediaStreamTrack? track);
|
||||
[ChromeOnly]
|
||||
void checkWasCreatedByPc(RTCPeerConnection pc);
|
||||
};
|
||||
|
|
|
@ -0,0 +1,78 @@
|
|||
/* -*- 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/#rtcrtptransceiver-interface
|
||||
*/
|
||||
|
||||
enum RTCRtpTransceiverDirection {
|
||||
"sendrecv",
|
||||
"sendonly",
|
||||
"recvonly",
|
||||
"inactive"
|
||||
};
|
||||
|
||||
dictionary RTCRtpTransceiverInit {
|
||||
RTCRtpTransceiverDirection direction = "sendrecv";
|
||||
sequence<MediaStream> streams = [];
|
||||
// TODO: bug 1396918
|
||||
// sequence<RTCRtpEncodingParameters> sendEncodings;
|
||||
};
|
||||
|
||||
[Pref="media.peerconnection.enabled",
|
||||
JSImplementation="@mozilla.org/dom/rtptransceiver;1"]
|
||||
interface RTCRtpTransceiver {
|
||||
readonly attribute DOMString? mid;
|
||||
[SameObject]
|
||||
readonly attribute RTCRtpSender sender;
|
||||
[SameObject]
|
||||
readonly attribute RTCRtpReceiver receiver;
|
||||
readonly attribute boolean stopped;
|
||||
attribute RTCRtpTransceiverDirection direction;
|
||||
readonly attribute RTCRtpTransceiverDirection? currentDirection;
|
||||
|
||||
void stop();
|
||||
// TODO: bug 1396922
|
||||
// void setCodecPreferences(sequence<RTCRtpCodecCapability> codecs);
|
||||
|
||||
[ChromeOnly]
|
||||
void setRemoteTrackId(DOMString trackId);
|
||||
[ChromeOnly]
|
||||
boolean remoteTrackIdIs(DOMString trackId);
|
||||
|
||||
// Mostly for testing
|
||||
[Pref="media.peerconnection.remoteTrackId.enabled"]
|
||||
DOMString getRemoteTrackId();
|
||||
|
||||
[ChromeOnly]
|
||||
void setAddTrackMagic();
|
||||
[ChromeOnly]
|
||||
readonly attribute boolean addTrackMagic;
|
||||
[ChromeOnly]
|
||||
void setCurrentDirection(RTCRtpTransceiverDirection direction);
|
||||
[ChromeOnly]
|
||||
void setDirectionInternal(RTCRtpTransceiverDirection direction);
|
||||
[ChromeOnly]
|
||||
void setMid(DOMString mid);
|
||||
[ChromeOnly]
|
||||
void unsetMid();
|
||||
[ChromeOnly]
|
||||
void setStopped();
|
||||
[ChromeOnly]
|
||||
void remove();
|
||||
|
||||
[ChromeOnly]
|
||||
DOMString getKind();
|
||||
[ChromeOnly]
|
||||
boolean hasBeenUsedToSend();
|
||||
[ChromeOnly]
|
||||
void sync();
|
||||
|
||||
[ChromeOnly]
|
||||
void insertDTMF(DOMString tones,
|
||||
optional unsigned long duration = 100,
|
||||
optional unsigned long interToneGap = 70);
|
||||
};
|
||||
|
|
@ -11,6 +11,7 @@ dictionary RTCTrackEventInit : EventInit {
|
|||
required RTCRtpReceiver receiver;
|
||||
required MediaStreamTrack track;
|
||||
sequence<MediaStream> streams = [];
|
||||
required RTCRtpTransceiver transceiver;
|
||||
};
|
||||
|
||||
[Pref="media.peerconnection.enabled",
|
||||
|
@ -24,4 +25,5 @@ interface RTCTrackEvent : Event {
|
|||
|
||||
[Frozen, Cached, Pure]
|
||||
readonly attribute sequence<MediaStream> streams; // workaround
|
||||
readonly attribute RTCRtpTransceiver transceiver;
|
||||
};
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
/* -*- 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/.
|
||||
*
|
||||
* PeerConnection.js' interface to the C++ TransceiverImpl.
|
||||
*
|
||||
* Do not confuse with RTCRtpTransceiver. This interface is purely for
|
||||
* communication between the PeerConnection JS DOM binding and the C++
|
||||
* implementation.
|
||||
*
|
||||
* See media/webrtc/signaling/src/peerconnection/TransceiverImpl.h
|
||||
*
|
||||
*/
|
||||
|
||||
// Constructed by PeerConnectionImpl::CreateTransceiverImpl.
|
||||
[ChromeOnly]
|
||||
interface TransceiverImpl {
|
||||
MediaStreamTrack getReceiveTrack();
|
||||
[Throws]
|
||||
void syncWithJS(RTCRtpTransceiver transceiver);
|
||||
};
|
||||
|
|
@ -202,9 +202,6 @@ with Files("MediaKey*"):
|
|||
with Files("Media*List*"):
|
||||
BUG_COMPONENT = ("Core", "CSS Parsing and Computation")
|
||||
|
||||
with Files("MediaStreamList.webidl"):
|
||||
BUG_COMPONENT = ("Core", "Web Audio")
|
||||
|
||||
with Files("*Record*"):
|
||||
BUG_COMPONENT = ("Core", "Audio/Video: Recording")
|
||||
|
||||
|
@ -985,7 +982,6 @@ WEBIDL_FILES = [
|
|||
if CONFIG['MOZ_WEBRTC']:
|
||||
WEBIDL_FILES += [
|
||||
'DataChannel.webidl',
|
||||
'MediaStreamList.webidl',
|
||||
'PeerConnectionImpl.webidl',
|
||||
'PeerConnectionImplEnums.webidl',
|
||||
'PeerConnectionObserver.webidl',
|
||||
|
@ -1000,7 +996,9 @@ if CONFIG['MOZ_WEBRTC']:
|
|||
'RTCPeerConnectionStatic.webidl',
|
||||
'RTCRtpReceiver.webidl',
|
||||
'RTCRtpSender.webidl',
|
||||
'RTCRtpTransceiver.webidl',
|
||||
'RTCSessionDescription.webidl',
|
||||
'TransceiverImpl.webidl',
|
||||
'WebrtcDeprecated.webidl',
|
||||
'WebrtcGlobalInformation.webidl',
|
||||
]
|
||||
|
|
Загрузка…
Ссылка в новой задаче