比对codec失败时,先关闭profile比对,再关闭codec比对

This commit is contained in:
xiongziliang 2021-04-06 23:47:54 +08:00
parent b5e6c12ee8
commit 79267ae551

View File

@ -1342,7 +1342,8 @@ void RtcConfigure::matchMedia(shared_ptr<RtcSession> &ret, TrackType type, const
if (!configure.enable) { if (!configure.enable) {
return; return;
} }
bool failed = false; bool check_profile = true;
bool check_codec = true;
RETRY: RETRY:
@ -1357,15 +1358,13 @@ RETRY:
} }
const RtcCodecPlan *offer_plan_ptr = nullptr; const RtcCodecPlan *offer_plan_ptr = nullptr;
for (auto &plan : offer_media.plan) { for (auto &plan : offer_media.plan) {
if (getCodecId(plan.codec) != codec) { //先检查编码格式是否为偏好
if (check_codec && getCodecId(plan.codec) != codec) {
continue; continue;
} }
//如果匹配失败了那么随便选择一个plan //命中偏好的编码格式,然后检查规格
if (!failed) { if (check_profile && !onCheckCodecProfile(plan, codec)) {
//命中偏好的编码格式 continue;
if (!onMatchCodecPlan(plan, codec)) {
continue;
}
} }
//找到中意的codec //找到中意的codec
offer_plan_ptr = &plan; offer_plan_ptr = &plan;
@ -1495,9 +1494,15 @@ RETRY:
} }
} }
if (!failed) { if (check_profile) {
//只重试一次 //如果是由于检查profile导致匹配失败那么重试一次且不检查profile
failed = true; check_profile = false;
goto RETRY;
}
if (check_codec) {
//如果是由于检查codec导致匹配失败那么重试一次且不检查codec
check_codec = false;
goto RETRY; goto RETRY;
} }
} }