summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorDan Minor <dminor@mozilla.com>2018-01-26 11:46:51 -0500
committerwolfbeast <mcwerewolf@gmail.com>2018-03-14 10:51:46 +0100
commitabf6ecee9f61e079ca93f2cb4bbdbed65688f048 (patch)
treed4b7d12f4673f99e46704ea6204c6450dac7db71 /media
parenta8f45aba816b7b5e1bd2bbdb663bdf5f044e2f5d (diff)
downloadUXP-abf6ecee9f61e079ca93f2cb4bbdbed65688f048.tar
UXP-abf6ecee9f61e079ca93f2cb4bbdbed65688f048.tar.gz
UXP-abf6ecee9f61e079ca93f2cb4bbdbed65688f048.tar.lz
UXP-abf6ecee9f61e079ca93f2cb4bbdbed65688f048.tar.xz
UXP-abf6ecee9f61e079ca93f2cb4bbdbed65688f048.zip
Bug 1433005 - Simplify codec pruning in NegotiateCodecs. r=bwc, a=lizzard
--HG-- extra : source : 90ae99509f1e9cb5bdf19350a5fbb1a02d34ff0a
Diffstat (limited to 'media')
-rw-r--r--media/webrtc/signaling/src/jsep/JsepTrack.cpp29
1 files changed, 17 insertions, 12 deletions
diff --git a/media/webrtc/signaling/src/jsep/JsepTrack.cpp b/media/webrtc/signaling/src/jsep/JsepTrack.cpp
index 1b045d8ec..cf5df96bf 100644
--- a/media/webrtc/signaling/src/jsep/JsepTrack.cpp
+++ b/media/webrtc/signaling/src/jsep/JsepTrack.cpp
@@ -410,21 +410,26 @@ JsepTrack::NegotiateCodecs(
// TODO(bug 814227): Remove this once we're ready to put multiple codecs in an
// answer. For now, remove all but the first codec unless the red codec
- // exists, and then we include the others per RFC 5109, section 14.2.
- // Note: now allows keeping the telephone-event codec, if it appears, as the
- // last codec in the list.
+ // exists, in which case we include the others per RFC 5109, section 14.2.
if (!codecs->empty() && !red) {
- int newSize = dtmf ? 2 : 1;
- for (size_t i = 1; i < codecs->size(); ++i) {
- if (!dtmf || dtmf != (*codecs)[i]) {
- delete (*codecs)[i];
- (*codecs)[i] = nullptr;
+ std::vector<JsepCodecDescription*> codecsToKeep;
+
+ bool foundPreferredCodec = false;
+ for (auto codec: *codecs) {
+ if (codec == dtmf) {
+ codecsToKeep.push_back(codec);
+ // TODO: keep ulpfec when we enable it in Bug 875922
+ // } else if (codec == ulpfec) {
+ // codecsToKeep.push_back(codec);
+ } else if (!foundPreferredCodec) {
+ codecsToKeep.insert(codecsToKeep.begin(), codec);
+ foundPreferredCodec = true;
+ } else {
+ delete codec;
}
}
- if (dtmf) {
- (*codecs)[newSize-1] = dtmf;
- }
- codecs->resize(newSize);
+
+ *codecs = codecsToKeep;
}
}