Skip to content

Commit

Permalink
RemotePlanBSdp: signal a new stream id into remote offers for each ne…
Browse files Browse the repository at this point in the history
…w Consumer

(required for react-native-webrtc due the libwebrtc ObjC limitation that Google never wished to fix even having a working patch)
  • Loading branch information
ibc committed Jan 6, 2018
1 parent 37a99da commit d77f4a4
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 50 deletions.
12 changes: 7 additions & 5 deletions lib/handlers/Chrome55.js
Expand Up @@ -417,10 +417,11 @@ class RecvHandler extends Handler
const cname = consumer.rtpParameters.rtcp.cname;
const consumerInfo =
{
kind : consumer.kind,
trackId : `consumer-${consumer.kind}-${consumer.id}`,
ssrc : encoding.ssrc,
cname : cname
kind : consumer.kind,
streamId : `recv-stream-${consumer.id}`,
trackId : `consumer-${consumer.kind}-${consumer.id}`,
ssrc : encoding.ssrc,
cname : cname
};

if (encoding.rtx && encoding.rtx.ssrc)
Expand Down Expand Up @@ -466,7 +467,8 @@ class RecvHandler extends Handler
})
.then(() =>
{
const stream = this._pc.getRemoteStreams()[0];
const stream = this._pc.getRemoteStreams()
.find((s) => s.id === consumerInfo.streamId);
const track = stream.getTrackById(consumerInfo.trackId);

if (!track)
Expand Down
13 changes: 7 additions & 6 deletions lib/handlers/Firefox50.js
Expand Up @@ -414,12 +414,13 @@ class RecvHandler extends Handler
const cname = consumer.rtpParameters.rtcp.cname;
const consumerInfo =
{
mid : `consumer-${consumer.kind}-${consumer.id}`,
kind : consumer.kind,
closed : consumer.closed,
trackId : `consumer-${consumer.kind}-${consumer.id}`,
ssrc : encoding.ssrc,
cname : cname
mid : `consumer-${consumer.kind}-${consumer.id}`,
kind : consumer.kind,
closed : consumer.closed,
streamId : `recv-stream-${consumer.id}`,
trackId : `consumer-${consumer.kind}-${consumer.id}`,
ssrc : encoding.ssrc,
cname : cname
};

if (encoding.rtx && encoding.rtx.ssrc)
Expand Down
31 changes: 7 additions & 24 deletions lib/handlers/ReactNative.js
Expand Up @@ -425,10 +425,11 @@ class RecvHandler extends Handler
const cname = consumer.rtpParameters.rtcp.cname;
const consumerInfo =
{
kind : consumer.kind,
trackId : `consumer-${consumer.kind}-${consumer.id}`,
ssrc : encoding.ssrc,
cname : cname
kind : consumer.kind,
streamId : `recv-stream-${consumer.id}`,
trackId : `consumer-${consumer.kind}-${consumer.id}`,
ssrc : encoding.ssrc,
cname : cname
};

if (encoding.rtx && encoding.rtx.ssrc)
Expand All @@ -453,9 +454,6 @@ class RecvHandler extends Handler
'addConsumer() | calling pc.setRemoteDescription() [offer:%o]',
offer);

// TODO: testing
logger.debug(offer.sdp);

const offerDesc = new RTCSessionDescription(offer);

return this._pc.setRemoteDescription(offerDesc);
Expand All @@ -479,23 +477,8 @@ class RecvHandler extends Handler
})
.then(() =>
{
// TODO: testing
for (const s of this._pc.getRemoteStreams())
{
logger.debug('stream found:');
logger.debug(' - stream.id: %s', s.id);
logger.debug(' - stream num tracks: %s', s.getTracks().length);

for (const t of s.getTracks())
{
logger.debug(' track found:');
logger.debug(' - track.id: %s', t.id);
logger.debug(' - track.label: %s', t.label);
logger.debug(' - track.kind: %s', t.kind);
}
}

const stream = this._pc.getRemoteStreams()[0];
const stream = this._pc.getRemoteStreams()
.find((s) => s.id === consumerInfo.streamId);
const track = stream.getTrackById(consumerInfo.trackId);

if (!track)
Expand Down
9 changes: 5 additions & 4 deletions lib/handlers/Safari11.js
Expand Up @@ -361,10 +361,11 @@ class RecvHandler extends Handler
const cname = consumer.rtpParameters.rtcp.cname;
const consumerInfo =
{
kind : consumer.kind,
trackId : `consumer-${consumer.kind}-${consumer.id}`,
ssrc : encoding.ssrc,
cname : cname
kind : consumer.kind,
streamId : `recv-stream-${consumer.id}`,
trackId : `consumer-${consumer.kind}-${consumer.id}`,
ssrc : encoding.ssrc,
cname : cname
};

if (encoding.rtx && encoding.rtx.ssrc)
Expand Down
11 changes: 4 additions & 7 deletions lib/handlers/sdp/RemotePlanBSdp.js
Expand Up @@ -280,9 +280,6 @@ class RecvRemoteSdp extends RemoteSdp
constructor(rtpParametersByKind)
{
super(rtpParametersByKind);

// Id of the unique MediaStream for all the remote tracks.
this._streamId = `recv-stream-${utils.randomNumber()}`;
}

/**
Expand Down Expand Up @@ -472,14 +469,14 @@ class RecvRemoteSdp extends RemoteSdp
{
id : info.ssrc,
attribute : 'msid',
value : `${this._streamId} ${info.trackId}`
value : `${info.streamId} ${info.trackId}`
});

remoteMediaObj.ssrcs.push(
{
id : info.ssrc,
attribute : 'mslabel',
value : this._streamId
value : info.streamId
});

remoteMediaObj.ssrcs.push(
Expand All @@ -502,14 +499,14 @@ class RecvRemoteSdp extends RemoteSdp
{
id : info.rtxSsrc,
attribute : 'msid',
value : `${this._streamId} ${info.trackId}`
value : `${info.streamId} ${info.trackId}`
});

remoteMediaObj.ssrcs.push(
{
id : info.rtxSsrc,
attribute : 'mslabel',
value : this._streamId
value : info.streamId
});

remoteMediaObj.ssrcs.push(
Expand Down
5 changes: 1 addition & 4 deletions lib/handlers/sdp/RemoteUnifiedPlanSdp.js
Expand Up @@ -311,9 +311,6 @@ class RecvRemoteSdp extends RemoteSdp
constructor(rtpParametersByKind)
{
super(rtpParametersByKind);

// Id of the unique MediaStream for all the remote tracks.
this._streamId = `recv-stream-${utils.randomNumber()}`;
}

/**
Expand Down Expand Up @@ -401,7 +398,7 @@ class RecvRemoteSdp extends RemoteSdp
remoteMediaObj.protocol = 'RTP/SAVPF';
remoteMediaObj.connection = { ip: '127.0.0.1', version: 4 };
remoteMediaObj.mid = info.mid;
remoteMediaObj.msid = `${this._streamId} ${info.trackId}`;
remoteMediaObj.msid = `${info.streamId} ${info.trackId}`;
}
else
{
Expand Down

0 comments on commit d77f4a4

Please sign in to comment.