зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1433005 - Simplify codec pruning in NegotiateCodecs; r=bwc
--HG-- extra : rebase_source : dd40820b009cb8dc3cff74bbaee9a1d3dbe2a0dc
This commit is contained in:
Родитель
bb6ba73484
Коммит
26329414af
|
@ -486,21 +486,25 @@ JsepTrack::NegotiateCodecs(
|
||||||
|
|
||||||
// TODO(bug 814227): Remove this once we're ready to put multiple codecs in an
|
// 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
|
// 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.
|
// exists, in which case 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.
|
|
||||||
if (!codecs->empty() && !red) {
|
if (!codecs->empty() && !red) {
|
||||||
int newSize = dtmf ? 2 : 1;
|
std::vector<JsepCodecDescription*> codecsToKeep;
|
||||||
for (size_t i = 1; i < codecs->size(); ++i) {
|
|
||||||
if (!dtmf || dtmf != (*codecs)[i]) {
|
bool foundPreferredCodec = false;
|
||||||
delete (*codecs)[i];
|
for (auto codec: *codecs) {
|
||||||
(*codecs)[i] = nullptr;
|
if (codec == dtmf) {
|
||||||
|
codecsToKeep.push_back(codec);
|
||||||
|
} 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 = codecsToKeep;
|
||||||
}
|
|
||||||
codecs->resize(newSize);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче