Bug 1453030 - Only create RTCDTMFSender on audio RTCRtpSender senders; r=bwc
MozReview-Commit-ID: KsnUYCs8IYU
--- a/dom/media/PeerConnection.js
+++ b/dom/media/PeerConnection.js
@@ -1910,19 +1910,21 @@ class RTCDTMFSender {
}
setupPrototype(RTCDTMFSender, {
classID: PC_DTMF_SENDER_CID,
contractID: PC_DTMF_SENDER_CONTRACT,
QueryInterface: XPCOMUtils.generateQI([Ci.nsISupports])
});
class RTCRtpSender {
- constructor(pc, transceiverImpl, transceiver, track, streams) {
- let dtmf = pc._win.RTCDTMFSender._create(
- pc._win, new RTCDTMFSender(this));
+ constructor(pc, transceiverImpl, transceiver, track, kind, streams) {
+ let dtmf = null;
+ if (kind == "audio") {
+ dtmf = pc._win.RTCDTMFSender._create(pc._win, new RTCDTMFSender(this));
+ }
Object.assign(this, {
_pc: pc,
_transceiverImpl: transceiverImpl,
_transceiver: transceiver,
track,
_streams: streams,
dtmf });
@@ -2220,17 +2222,17 @@ setupPrototype(RTCRtpReceiver, {
});
class RTCRtpTransceiver {
constructor(pc, transceiverImpl, init, kind, sendTrack) {
let receiver = pc._win.RTCRtpReceiver._create(
pc._win, new RTCRtpReceiver(pc, transceiverImpl, kind));
let streams = (init && init.streams) || [];
let sender = pc._win.RTCRtpSender._create(
- pc._win, new RTCRtpSender(pc, transceiverImpl, this, sendTrack, streams));
+ pc._win, new RTCRtpSender(pc, transceiverImpl, this, sendTrack, kind, streams));
let direction = (init && init.direction) || "sendrecv";
Object.assign(this,
{
_pc: pc,
mid: null,
sender,
receiver,
--- a/media/webrtc/signaling/src/peerconnection/TransceiverImpl.cpp
+++ b/media/webrtc/signaling/src/peerconnection/TransceiverImpl.cpp
@@ -567,16 +567,18 @@ TransceiverImpl::SyncWithJS(dom::RTCRtpT
void
TransceiverImpl::InsertDTMFTone(int tone, uint32_t duration)
{
if (mJsepTransceiver->IsStopped()) {
return;
}
+ MOZ_ASSERT(mConduit->type() == MediaSessionConduit::AUDIO);
+
RefPtr<AudioSessionConduit> conduit(static_cast<AudioSessionConduit*>(
mConduit.get()));
mStsThread->Dispatch(WrapRunnableNM([conduit, tone, duration] () {
//Note: We default to channel 0, not inband, and 6dB attenuation.
// here. We might want to revisit these choices in the future.
conduit->InsertDTMFTone(0, tone, true, duration, 6);
}), NS_DISPATCH_NORMAL);
}