mirror of
https://github.com/ossrs/srs.git
synced 2025-02-15 04:42:04 +00:00
* RTC: Replace payload name AV1X with AV1 for WebRTC. (#2760) * Add compatibility check code for old versions of Chrome * 新增获取track_desc的AV1X编码兼容性检查
This commit is contained in:
parent
5decc95e2e
commit
faeacf1fc9
1 changed files with 18 additions and 3 deletions
|
@ -2902,7 +2902,12 @@ srs_error_t SrsRtcConnection::negotiate_publish_capability(SrsRtcUserConfig* ruc
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else if (remote_media_desc.is_video() && ruc->codec_ == "av1") {
|
} else if (remote_media_desc.is_video() && ruc->codec_ == "av1") {
|
||||||
std::vector<SrsMediaPayloadType> payloads = remote_media_desc.find_media_with_encoding_name("AV1X");
|
std::vector<SrsMediaPayloadType> payloads = remote_media_desc.find_media_with_encoding_name("AV1");
|
||||||
|
if (payloads.empty()) {
|
||||||
|
// Be compatible with the Chrome M96, still check the AV1X encoding name
|
||||||
|
// @see https://bugs.chromium.org/p/webrtc/issues/detail?id=13166
|
||||||
|
payloads = remote_media_desc.find_media_with_encoding_name("AV1X");
|
||||||
|
}
|
||||||
if (payloads.empty()) {
|
if (payloads.empty()) {
|
||||||
return srs_error_new(ERROR_RTC_SDP_EXCHANGE, "no found valid AV1 payload type");
|
return srs_error_new(ERROR_RTC_SDP_EXCHANGE, "no found valid AV1 payload type");
|
||||||
}
|
}
|
||||||
|
@ -3213,13 +3218,23 @@ srs_error_t SrsRtcConnection::negotiate_play_capability(SrsRtcUserConfig* ruc, s
|
||||||
remote_payload = payloads.at(0);
|
remote_payload = payloads.at(0);
|
||||||
track_descs = source->get_track_desc("audio", "opus");
|
track_descs = source->get_track_desc("audio", "opus");
|
||||||
} else if (remote_media_desc.is_video() && ruc->codec_ == "av1") {
|
} else if (remote_media_desc.is_video() && ruc->codec_ == "av1") {
|
||||||
std::vector<SrsMediaPayloadType> payloads = remote_media_desc.find_media_with_encoding_name("AV1X");
|
std::vector<SrsMediaPayloadType> payloads = remote_media_desc.find_media_with_encoding_name("AV1");
|
||||||
|
if (payloads.empty()) {
|
||||||
|
// Be compatible with the Chrome M96, still check the AV1X encoding name
|
||||||
|
// @see https://bugs.chromium.org/p/webrtc/issues/detail?id=13166
|
||||||
|
payloads = remote_media_desc.find_media_with_encoding_name("AV1X");
|
||||||
|
}
|
||||||
if (payloads.empty()) {
|
if (payloads.empty()) {
|
||||||
return srs_error_new(ERROR_RTC_SDP_EXCHANGE, "no found valid AV1 payload type");
|
return srs_error_new(ERROR_RTC_SDP_EXCHANGE, "no found valid AV1 payload type");
|
||||||
}
|
}
|
||||||
|
|
||||||
remote_payload = payloads.at(0);
|
remote_payload = payloads.at(0);
|
||||||
track_descs = source->get_track_desc("video", "AV1X");
|
track_descs = source->get_track_desc("video", "AV1");
|
||||||
|
if (track_descs.empty()) {
|
||||||
|
// Be compatible with the Chrome M96, still check the AV1X encoding name
|
||||||
|
// @see https://bugs.chromium.org/p/webrtc/issues/detail?id=13166
|
||||||
|
track_descs = source->get_track_desc("video", "AV1X");
|
||||||
|
}
|
||||||
} else if (remote_media_desc.is_video()) {
|
} else if (remote_media_desc.is_video()) {
|
||||||
// TODO: check opus format specific param
|
// TODO: check opus format specific param
|
||||||
vector<SrsMediaPayloadType> payloads = remote_media_desc.find_media_with_encoding_name("H264");
|
vector<SrsMediaPayloadType> payloads = remote_media_desc.find_media_with_encoding_name("H264");
|
||||||
|
|
Loading…
Reference in a new issue