Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4248)

Unified Diff: chrome/test/data/webrtc/munge_sdp.js

Issue 2951713002: RTCPeerConnection.addTrack and removeTrack added (behind flag) (Closed)
Patch Set: Addressed guidou's comments Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/test/data/webrtc/munge_sdp.js
diff --git a/chrome/test/data/webrtc/munge_sdp.js b/chrome/test/data/webrtc/munge_sdp.js
index c2c7d9b6e86af648cc7a8bb16b42a4db3016e87f..f18a0ccb336e8a5e2f2a7f6d78d094ecdbd5c0d0 100644
--- a/chrome/test/data/webrtc/munge_sdp.js
+++ b/chrome/test/data/webrtc/munge_sdp.js
@@ -5,6 +5,66 @@
*/
/**
+ * Parses the SDP to find all streams, tracks and stream-track relationships.
+ * Returns "{ streamIds, trackIds, streamTrackMap }" where |streamIds| and
+ * |trackIds| are |Set| of IDs and |streamTrackMap| is a string-set |Map| from
+ * stream IDs to track IDs (which tracks are members of which streams).
+ *
+ * @param {string} sdp
+ */
+function getSdpStreamsAndTracks(sdp) {
Taylor_Brandstetter 2017/07/06 22:45:14 Relying on SDP parsing in this test is somewhat fr
hbos_chromium 2017/07/07 12:07:48 Good point. Done. Removed SDP usage from test, and
+ let sdpLines = splitSdpLines(sdp);
+ let streamIds = new Set();
+ let trackIds = new Set();
+ // Find streams and tracks.
+ // a=ssrc:<ssrc> mslabel:<stream id>
+ // a=ssrc:<ssrc> label:<track id>
+ for (let lineNo = 0; lineNo = findLine(sdpLines, 'a=ssrc:', lineNo);
+ lineNo++) {
+ let line = sdpLines[lineNo];
+ let tokens = line.split(' ');
+ if (tokens.length !== 2)
+ continue;
+ if (tokens[1].startsWith('mslabel:')) {
+ streamIds.add(tokens[1].substring(8));
+ } else if (tokens[1].startsWith('label:')) {
+ trackIds.add(tokens[1].substring(6));
+ }
+ }
+ // Find stream and track relationships.
+ // a=ssrc:<ssrc> msid:<stream id> <track id>
+ let streamTrackMap = new Map();
+ for (let lineNo = 0; lineNo = findLine(sdpLines, 'a=ssrc:', lineNo);
+ lineNo++) {
+ let line = sdpLines[lineNo];
+ let tokens = line.split(' ');
+ if (tokens.length !== 3)
+ continue;
+ let ssrc = parseInt(tokens[0].substring(7));
+ if (!tokens[1].startsWith('msid:'))
+ failure('getSdpStreamsAndTracks', 'Expected \'msid:<stream id>\'.');
+ let streamId = tokens[1].substring(5);
+ if (!streamIds.has(streamId)) {
+ failure(
+ 'getSdpStreamsAndTracks',
+ 'Unknown stream ID \'' + streamId + '\' (\'mslabel\' line missing).');
+ }
+ let trackId = tokens[2];
+ if (!trackIds.has(trackId)) {
+ failure('getSdpStreamsAndTracks',
+ 'Unknown track ID \'' + trackId + '\' (\'label\' line missing).');
+ }
+ if (!streamTrackMap.has(streamId))
+ streamTrackMap.set(streamId, new Set([ trackId ]));
+ else
+ streamTrackMap.get(streamId).add(trackId);
+ }
+ return { streamIds:streamIds,
+ trackIds:trackIds,
+ streamTrackMap:streamTrackMap };
+}
+
+/**
* See |setSdpDefaultCodec|.
*/
function setSdpDefaultAudioCodec(sdp, codec) {
@@ -29,7 +89,7 @@ function setOpusDtxEnabled(sdp) {
var defaultCodec = getSdpDefaultAudioCodec(sdp);
if (defaultCodec !== 'opus') {
failure('setOpusDtxEnabled',
- 'Default audio codec is not set to \'opus\'.');
+ 'Default audio codec is not set to \'opus\'.');
}
// Find codec ID for Opus, e.g. 111 if 'a=rtpmap:111 opus/48000/2'.
@@ -64,14 +124,15 @@ function setSdpDefaultCodec(sdp, type, codec) {
// Find codec ID, e.g. 100 for 'VP8' if 'a=rtpmap:100 VP8/9000'.
var codecId = findRtpmapId(sdpLines, codec);
if (codecId === null) {
- failure('sdpPreferCodec', 'Unknown ID for |codec| = \'' + codec + '\'.');
+ failure('setSdpDefaultCodec',
+ 'Unknown ID for |codec| = \'' + codec + '\'.');
}
// Find 'm=|type|' line, e.g. 'm=video 9 UDP/TLS/RTP/SAVPF 100 101 107 116'.
var mLineNo = findLine(sdpLines, 'm=' + type);
if (mLineNo === null) {
failure('setSdpDefaultCodec',
- '\'m=' + type + '\' line missing from |sdp|.');
+ '\'m=' + type + '\' line missing from |sdp|.');
}
// Modify video line to use the desired codec as the default.
@@ -106,21 +167,21 @@ function getSdpDefaultCodec(sdp, type) {
var mLineNo = findLine(sdpLines, 'm=' + type);
if (mLineNo === null) {
failure('getSdpDefaultCodec',
- '\'m=' + type + '\' line missing from |sdp|.');
+ '\'m=' + type + '\' line missing from |sdp|.');
}
// The default codec's ID.
var defaultCodecId = getMLineDefaultCodec(sdpLines[mLineNo]);
if (defaultCodecId === null) {
failure('getSdpDefaultCodec',
- '\'m=' + type + '\' line contains no codecs.');
+ '\'m=' + type + '\' line contains no codecs.');
}
// Find codec name, e.g. 'VP8' for 100 if 'a=rtpmap:100 VP8/9000'.
var defaultCodec = findRtpmapCodec(sdpLines, defaultCodecId);
if (defaultCodec === null) {
failure('getSdpDefaultCodec',
- 'Unknown codec name for default codec ' + defaultCodecId + '.');
+ 'Unknown codec name for default codec ' + defaultCodecId + '.');
}
return defaultCodec;
}
@@ -244,9 +305,9 @@ function mergeSdpLines(sdpLines) {
}
/** @private */
-function findLine(lines, startsWith) {
- for (var i = 0; i < lines.length; i++) {
- if (lines[i].startsWith(startsWith))
+function findLine(lines, lineStartsWith, startingLine = 0) {
+ for (var i = startingLine; i < lines.length; i++) {
+ if (lines[i].startsWith(lineStartsWith))
return i;
}
return null;

Powered by Google App Engine
This is Rietveld 408576698