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

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

Issue 2985263002: Reland of RTCVideoEncoder: Report H264 profile information to WebRTC (Closed)
Patch Set: Add default argument to SetDefaultVideoCodec Created 3 years, 4 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 70ed1e621888b3d09dcc86100466d3639f7cfa34..c8baaa0a71a83b2b314bce01d7909048baa80c0a 100644
--- a/chrome/test/data/webrtc/munge_sdp.js
+++ b/chrome/test/data/webrtc/munge_sdp.js
@@ -8,14 +8,14 @@
* See |setSdpDefaultCodec|.
*/
function setSdpDefaultAudioCodec(sdp, codec) {
- return setSdpDefaultCodec(sdp, 'audio', codec);
+ return setSdpDefaultCodec(sdp, 'audio', codec, false /* preferHwCodec */);
}
/**
* See |setSdpDefaultCodec|.
*/
-function setSdpDefaultVideoCodec(sdp, codec) {
- return setSdpDefaultCodec(sdp, 'video', codec);
+function setSdpDefaultVideoCodec(sdp, codec, preferHwCodec) {
+ return setSdpDefaultCodec(sdp, 'video', codec, preferHwCodec);
}
/**
@@ -55,14 +55,17 @@ function setOpusDtxEnabled(sdp) {
/**
* Returns a modified version of |sdp| where the |codec| has been promoted to be
* the default codec, i.e. the codec whose ID is first in the list of codecs on
- * the 'm=|type|' line, where |type| is 'audio' or 'video'.
+ * the 'm=|type|' line, where |type| is 'audio' or 'video'. If |preferHwCodec|
+ * is true, it will select the last codec with the given name, and if false, it
+ * will select the first codec with the given name, because HW codecs are listed
+ * after SW codecs in the SDP list.
* @private
*/
-function setSdpDefaultCodec(sdp, type, codec) {
+function setSdpDefaultCodec(sdp, type, codec, preferHwCodec) {
var sdpLines = splitSdpLines(sdp);
// Find codec ID, e.g. 100 for 'VP8' if 'a=rtpmap:100 VP8/9000'.
- var codecId = findRtpmapId(sdpLines, codec);
+ var codecId = findRtpmapId(sdpLines, codec, preferHwCodec);
if (codecId === null) {
failure('setSdpDefaultCodec',
'Unknown ID for |codec| = \'' + codec + '\'.');
@@ -129,13 +132,15 @@ function getSdpDefaultCodec(sdp, type) {
/**
* Searches through all |sdpLines| for the 'a=rtpmap:' line for the codec of
* the specified name, returning its ID as an int if found, or null otherwise.
- * |codec| is the case-sensitive name of the codec.
+ * |codec| is the case-sensitive name of the codec. If |lastInstance|
+ * is true, it will return the last such ID, and if false, it will return the
+ * first such ID.
* For example, if |sdpLines| contains 'a=rtpmap:100 VP8/9000' and |codec| is
* 'VP8', this function returns 100.
* @private
*/
-function findRtpmapId(sdpLines, codec) {
- var lineNo = findRtpmapLine(sdpLines, codec);
+function findRtpmapId(sdpLines, codec, lastInstance) {
+ var lineNo = findRtpmapLine(sdpLines, codec, lastInstance);
if (lineNo === null)
return null;
// Parse <id> from 'a=rtpmap:<id> <codec>/<rate>'.
@@ -163,28 +168,46 @@ function findRtpmapCodec(sdpLines, id) {
}
/**
- * Finds the first 'a=rtpmap:' line from |sdpLines| that contains |contains| and
- * returns its line index, or null if no such line was found. |contains| may be
- * the codec ID, codec name or bitrate. An 'a=rtpmap:' line looks like this:
- * 'a=rtpmap:<id> <codec>/<rate>'.
+ * Finds a 'a=rtpmap:' line from |sdpLines| that contains |contains| and returns
+ * its line index, or null if no such line was found. |contains| may be the
+ * codec ID, codec name or bitrate. If |lastInstance| is true, it will return
+ * the last such line index, and if false, it will return the first such line
+ * index.
+ * An 'a=rtpmap:' line looks like this: 'a=rtpmap:<id> <codec>/<rate>'.
*/
-function findRtpmapLine(sdpLines, contains) {
- for (var i = 0; i < sdpLines.length; i++) {
- // Is 'a=rtpmap:' line containing |contains| string?
- if (sdpLines[i].startsWith('a=rtpmap:') &&
- sdpLines[i].indexOf(contains) != -1) {
- // Expecting pattern 'a=rtpmap:<id> <codec>/<rate>'.
- var pattern = new RegExp('a=rtpmap:(\\d+) \\w+\\/\\d+');
- if (!sdpLines[i].match(pattern))
- failure('findRtpmapLine', 'Unexpected "a=rtpmap:" pattern.');
- // Return line index.
- return i;
+function findRtpmapLine(sdpLines, contains, lastInstance) {
+ if (lastInstance === true) {
+ for (var i = sdpLines.length - 1; i >= 0 ; i--) {
+ if (isRtpmapLine(sdpLines[i], contains))
+ return i;
+ }
+ } else {
+ for (var i = 0; i < sdpLines.length; i++) {
+ if (isRtpmapLine(sdpLines[i], contains))
+ return i;
}
}
return null;
}
/**
+ * Returns true if |sdpLine| contains |contains| and is of pattern
+ * 'a=rtpmap:<id> <codec>/<rate>'.
+ */
+function isRtpmapLine(sdpLine, contains) {
+ // Is 'a=rtpmap:' line containing |contains| string?
+ if (sdpLine.startsWith('a=rtpmap:') &&
+ sdpLine.indexOf(contains) != -1) {
+ // Expecting pattern 'a=rtpmap:<id> <codec>/<rate>'.
+ var pattern = new RegExp('a=rtpmap:(\\d+) \\w+\\/\\d+');
+ if (!sdpLine.match(pattern))
+ failure('isRtpmapLine', 'Unexpected "a=rtpmap:" pattern.');
+ return true;
+ }
+ return false;
+}
+
+/**
* Finds the fmtp line in |sdpLines| for the given |codecId|, and returns its
* line number. The line starts with 'a=fmtp:<codecId>'.
* @private
« no previous file with comments | « chrome/browser/media/webrtc/webrtc_video_quality_browsertest.cc ('k') | chrome/test/data/webrtc/peerconnection.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698