From 8e79b90bc36725146f94281970c7022950c1daac Mon Sep 17 00:00:00 2001 From: winlin Date: Mon, 24 May 2021 08:11:42 +0800 Subject: [PATCH] RTC: Eliminate dead code. 4.0.122 --- trunk/src/app/srs_app_rtc_api.cpp | 319 --------------------------- trunk/src/app/srs_app_rtc_api.hpp | 6 - trunk/src/core/srs_core_version4.hpp | 2 +- 3 files changed, 1 insertion(+), 326 deletions(-) diff --git a/trunk/src/app/srs_app_rtc_api.cpp b/trunk/src/app/srs_app_rtc_api.cpp index e18360403..ae77d9726 100644 --- a/trunk/src/app/srs_app_rtc_api.cpp +++ b/trunk/src/app/srs_app_rtc_api.cpp @@ -36,8 +36,6 @@ #include using namespace std; -uint32_t SrsGoApiRtcPlay::ssrc_num = 0; - SrsGoApiRtcPlay::SrsGoApiRtcPlay(SrsRtcServer* server) { server_ = server; @@ -260,159 +258,6 @@ srs_error_t SrsGoApiRtcPlay::check_remote_sdp(const SrsSdp& remote_sdp) return err; } -srs_error_t SrsGoApiRtcPlay::exchange_sdp(SrsRequest* req, const SrsSdp& remote_sdp, SrsSdp& local_sdp) -{ - srs_error_t err = srs_success; - local_sdp.version_ = "0"; - - local_sdp.username_ = RTMP_SIG_SRS_SERVER; - local_sdp.session_id_ = srs_int2str((int64_t)this); - local_sdp.session_version_ = "2"; - local_sdp.nettype_ = "IN"; - local_sdp.addrtype_ = "IP4"; - local_sdp.unicast_address_ = "0.0.0.0"; - - local_sdp.session_name_ = "SRSPlaySession"; - - local_sdp.msid_semantic_ = "WMS"; - local_sdp.msids_.push_back(req->app + "/" + req->stream); - - local_sdp.group_policy_ = "BUNDLE"; - - bool nack_enabled = _srs_config->get_rtc_nack_enabled(req->vhost); - - for (size_t i = 0; i < remote_sdp.media_descs_.size(); ++i) { - const SrsMediaDesc& remote_media_desc = remote_sdp.media_descs_[i]; - - if (remote_media_desc.is_audio()) { - local_sdp.media_descs_.push_back(SrsMediaDesc("audio")); - } else if (remote_media_desc.is_video()) { - local_sdp.media_descs_.push_back(SrsMediaDesc("video")); - } - - SrsMediaDesc& local_media_desc = local_sdp.media_descs_.back(); - - if (remote_media_desc.is_audio()) { - // TODO: check opus format specific param - std::vector payloads = remote_media_desc.find_media_with_encoding_name("opus"); - for (std::vector::iterator iter = payloads.begin(); iter != payloads.end(); ++iter) { - local_media_desc.payload_types_.push_back(*iter); - SrsMediaPayloadType& payload_type = local_media_desc.payload_types_.back(); - - // TODO: FIXME: Only support some transport algorithms. - vector rtcp_fb; - payload_type.rtcp_fb_.swap(rtcp_fb); - for (int j = 0; j < (int)rtcp_fb.size(); j++) { - if (nack_enabled) { - if (rtcp_fb.at(j) == "nack" || rtcp_fb.at(j) == "nack pli") { - payload_type.rtcp_fb_.push_back(rtcp_fb.at(j)); - } - } - } - - // Only choose one match opus. - break; - } - - if (local_media_desc.payload_types_.empty()) { - return srs_error_new(ERROR_RTC_SDP_EXCHANGE, "no found valid opus payload type"); - } - } else if (remote_media_desc.is_video()) { - std::deque backup_payloads; - std::vector payloads = remote_media_desc.find_media_with_encoding_name("H264"); - for (std::vector::iterator iter = payloads.begin(); iter != payloads.end(); ++iter) { - if (iter->format_specific_param_.empty()) { - backup_payloads.push_front(*iter); - continue; - } - H264SpecificParam h264_param; - if ((err = srs_parse_h264_fmtp(iter->format_specific_param_, h264_param)) != srs_success) { - srs_error_reset(err); continue; - } - - // Try to pick the "best match" H.264 payload type. - if (h264_param.packetization_mode == "1" && h264_param.level_asymmerty_allow == "1") { - local_media_desc.payload_types_.push_back(*iter); - SrsMediaPayloadType& payload_type = local_media_desc.payload_types_.back(); - - // TODO: FIXME: Only support some transport algorithms. - vector rtcp_fb; - payload_type.rtcp_fb_.swap(rtcp_fb); - for (int j = 0; j < (int)rtcp_fb.size(); j++) { - if (nack_enabled) { - if (rtcp_fb.at(j) == "nack" || rtcp_fb.at(j) == "nack pli") { - payload_type.rtcp_fb_.push_back(rtcp_fb.at(j)); - } - } - } - - // Only choose first match H.264 payload type. - break; - } - - backup_payloads.push_back(*iter); - } - - // Try my best to pick at least one media payload type. - if (local_media_desc.payload_types_.empty() && ! backup_payloads.empty()) { - srs_warn("choose backup H.264 payload type=%d", backup_payloads.front().payload_type_); - local_media_desc.payload_types_.push_back(backup_payloads.front()); - } - - if (local_media_desc.payload_types_.empty()) { - return srs_error_new(ERROR_RTC_SDP_EXCHANGE, "no found valid H.264 payload type"); - } - } - - local_media_desc.mid_ = remote_media_desc.mid_; - local_sdp.groups_.push_back(local_media_desc.mid_); - - local_media_desc.port_ = 9; - local_media_desc.protos_ = "UDP/TLS/RTP/SAVPF"; - - if (remote_media_desc.session_info_.setup_ == "active") { - local_media_desc.session_info_.setup_ = "passive"; - } else if (remote_media_desc.session_info_.setup_ == "passive") { - local_media_desc.session_info_.setup_ = "active"; - } else if (remote_media_desc.session_info_.setup_ == "actpass") { - local_media_desc.session_info_.setup_ = local_sdp.session_config_.dtls_role; - } else { - // @see: https://tools.ietf.org/html/rfc4145#section-4.1 - // The default value of the setup attribute in an offer/answer exchange - // is 'active' in the offer and 'passive' in the answer. - local_media_desc.session_info_.setup_ = "passive"; - } - - if (remote_media_desc.sendonly_) { - local_media_desc.recvonly_ = true; - } else if (remote_media_desc.recvonly_) { - local_media_desc.sendonly_ = true; - } else if (remote_media_desc.sendrecv_) { - local_media_desc.sendrecv_ = true; - } - - local_media_desc.rtcp_mux_ = true; - local_media_desc.rtcp_rsize_ = true; - - // TODO: FIXME: Avoid SSRC collision. - if (!ssrc_num) { - ssrc_num = ::getpid() * 10000 + ::getpid() * 100 + ::getpid(); - } - - if (local_media_desc.sendonly_ || local_media_desc.sendrecv_) { - SrsSSRCInfo ssrc_info; - ssrc_info.ssrc_ = ++ssrc_num; - // TODO:use formated cname - ssrc_info.cname_ = "stream"; - local_media_desc.ssrc_infos_.push_back(ssrc_info); - } - } - - return err; -} - -uint32_t SrsGoApiRtcPublish::ssrc_num = 0; - SrsGoApiRtcPublish::SrsGoApiRtcPublish(SrsRtcServer* server) { server_ = server; @@ -625,170 +470,6 @@ srs_error_t SrsGoApiRtcPublish::check_remote_sdp(const SrsSdp& remote_sdp) return err; } -srs_error_t SrsGoApiRtcPublish::exchange_sdp(SrsRequest* req, const SrsSdp& remote_sdp, SrsSdp& local_sdp) -{ - srs_error_t err = srs_success; - local_sdp.version_ = "0"; - - local_sdp.username_ = RTMP_SIG_SRS_SERVER; - local_sdp.session_id_ = srs_int2str((int64_t)this); - local_sdp.session_version_ = "2"; - local_sdp.nettype_ = "IN"; - local_sdp.addrtype_ = "IP4"; - local_sdp.unicast_address_ = "0.0.0.0"; - - local_sdp.session_name_ = "SRSPublishSession"; - - local_sdp.msid_semantic_ = "WMS"; - local_sdp.msids_.push_back(req->app + "/" + req->stream); - - local_sdp.group_policy_ = "BUNDLE"; - - bool nack_enabled = _srs_config->get_rtc_nack_enabled(req->vhost); - bool twcc_enabled = _srs_config->get_rtc_twcc_enabled(req->vhost); - - for (size_t i = 0; i < remote_sdp.media_descs_.size(); ++i) { - const SrsMediaDesc& remote_media_desc = remote_sdp.media_descs_[i]; - - if (remote_media_desc.is_audio()) { - local_sdp.media_descs_.push_back(SrsMediaDesc("audio")); - } else if (remote_media_desc.is_video()) { - local_sdp.media_descs_.push_back(SrsMediaDesc("video")); - } - - SrsMediaDesc& local_media_desc = local_sdp.media_descs_.back(); - - // Whether feature enabled in remote extmap. - int remote_twcc_id = 0; - if (true) { - map extmaps = remote_media_desc.get_extmaps(); - for(map::iterator it = extmaps.begin(); it != extmaps.end(); ++it) { - if (it->second == kTWCCExt) { - remote_twcc_id = it->first; - break; - } - } - } - if (twcc_enabled && remote_twcc_id) { - local_media_desc.extmaps_[remote_twcc_id] = kTWCCExt; - } - - if (remote_media_desc.is_audio()) { - // TODO: check opus format specific param - std::vector payloads = remote_media_desc.find_media_with_encoding_name("opus"); - for (std::vector::iterator iter = payloads.begin(); iter != payloads.end(); ++iter) { - local_media_desc.payload_types_.push_back(*iter); - SrsMediaPayloadType& payload_type = local_media_desc.payload_types_.back(); - - // TODO: FIXME: Only support some transport algorithms. - vector rtcp_fb; - payload_type.rtcp_fb_.swap(rtcp_fb); - for (int j = 0; j < (int)rtcp_fb.size(); j++) { - if (nack_enabled) { - if (rtcp_fb.at(j) == "nack" || rtcp_fb.at(j) == "nack pli") { - payload_type.rtcp_fb_.push_back(rtcp_fb.at(j)); - } - } - if (twcc_enabled && remote_twcc_id) { - if (rtcp_fb.at(j) == "transport-cc") { - payload_type.rtcp_fb_.push_back(rtcp_fb.at(j)); - } - } - } - - // Only choose one match opus. - break; - } - - if (local_media_desc.payload_types_.empty()) { - return srs_error_new(ERROR_RTC_SDP_EXCHANGE, "no valid found opus payload type"); - } - - } else if (remote_media_desc.is_video()) { - std::deque backup_payloads; - std::vector payloads = remote_media_desc.find_media_with_encoding_name("H264"); - for (std::vector::iterator iter = payloads.begin(); iter != payloads.end(); ++iter) { - if (iter->format_specific_param_.empty()) { - backup_payloads.push_front(*iter); - continue; - } - H264SpecificParam h264_param; - if ((err = srs_parse_h264_fmtp(iter->format_specific_param_, h264_param)) != srs_success) { - srs_error_reset(err); continue; - } - - // Try to pick the "best match" H.264 payload type. - if (h264_param.packetization_mode == "1" && h264_param.level_asymmerty_allow == "1") { - local_media_desc.payload_types_.push_back(*iter); - SrsMediaPayloadType& payload_type = local_media_desc.payload_types_.back(); - - // TODO: FIXME: Only support some transport algorithms. - vector rtcp_fb; - payload_type.rtcp_fb_.swap(rtcp_fb); - for (int j = 0; j < (int)rtcp_fb.size(); j++) { - if (nack_enabled) { - if (rtcp_fb.at(j) == "nack" || rtcp_fb.at(j) == "nack pli") { - payload_type.rtcp_fb_.push_back(rtcp_fb.at(j)); - } - } - if (twcc_enabled && remote_twcc_id) { - if (rtcp_fb.at(j) == "transport-cc") { - payload_type.rtcp_fb_.push_back(rtcp_fb.at(j)); - } - } - } - - // Only choose first match H.264 payload type. - break; - } - - backup_payloads.push_back(*iter); - } - - // Try my best to pick at least one media payload type. - if (local_media_desc.payload_types_.empty() && ! backup_payloads.empty()) { - srs_warn("choose backup H.264 payload type=%d", backup_payloads.front().payload_type_); - local_media_desc.payload_types_.push_back(backup_payloads.front()); - } - - if (local_media_desc.payload_types_.empty()) { - return srs_error_new(ERROR_RTC_SDP_EXCHANGE, "no found valid H.264 payload type"); - } - - // TODO: FIXME: Support RRTR? - //local_media_desc.payload_types_.back().rtcp_fb_.push_back("rrtr"); - } - - local_media_desc.mid_ = remote_media_desc.mid_; - local_sdp.groups_.push_back(local_media_desc.mid_); - - local_media_desc.port_ = 9; - local_media_desc.protos_ = "UDP/TLS/RTP/SAVPF"; - - if (remote_media_desc.session_info_.setup_ == "active") { - local_media_desc.session_info_.setup_ = "passive"; - } else if (remote_media_desc.session_info_.setup_ == "passive") { - local_media_desc.session_info_.setup_ = "active"; - } else if (remote_media_desc.session_info_.setup_ == "actpass") { - local_media_desc.session_info_.setup_ = local_sdp.session_config_.dtls_role; - } else { - // @see: https://tools.ietf.org/html/rfc4145#section-4.1 - // The default value of the setup attribute in an offer/answer exchange - // is 'active' in the offer and 'passive' in the answer. - local_media_desc.session_info_.setup_ = "passive"; - } - - local_media_desc.rtcp_mux_ = true; - - // For publisher, we are always sendonly. - local_media_desc.sendonly_ = false; - local_media_desc.recvonly_ = true; - local_media_desc.sendrecv_ = false; - } - - return err; -} - SrsGoApiRtcNACK::SrsGoApiRtcNACK(SrsRtcServer* server) { server_ = server; diff --git a/trunk/src/app/srs_app_rtc_api.hpp b/trunk/src/app/srs_app_rtc_api.hpp index c7bc6596b..53db46346 100644 --- a/trunk/src/app/srs_app_rtc_api.hpp +++ b/trunk/src/app/srs_app_rtc_api.hpp @@ -34,8 +34,6 @@ class SrsSdp; class SrsGoApiRtcPlay : public ISrsHttpHandler { -public: - static uint32_t ssrc_num; private: SrsRtcServer* server_; public: @@ -45,14 +43,11 @@ public: virtual srs_error_t serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r); private: virtual srs_error_t do_serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r, SrsJsonObject* res); - srs_error_t exchange_sdp(SrsRequest* req, const SrsSdp& remote_sdp, SrsSdp& local_sdp); srs_error_t check_remote_sdp(const SrsSdp& remote_sdp); }; class SrsGoApiRtcPublish : public ISrsHttpHandler { -public: - static uint32_t ssrc_num; private: SrsRtcServer* server_; public: @@ -62,7 +57,6 @@ public: virtual srs_error_t serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r); private: virtual srs_error_t do_serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r, SrsJsonObject* res); - srs_error_t exchange_sdp(SrsRequest* req, const SrsSdp& remote_sdp, SrsSdp& local_sdp); srs_error_t check_remote_sdp(const SrsSdp& remote_sdp); }; diff --git a/trunk/src/core/srs_core_version4.hpp b/trunk/src/core/srs_core_version4.hpp index 44eec8dc1..8535e8636 100644 --- a/trunk/src/core/srs_core_version4.hpp +++ b/trunk/src/core/srs_core_version4.hpp @@ -26,6 +26,6 @@ #define VERSION_MAJOR 4 #define VERSION_MINOR 0 -#define VERSION_REVISION 121 +#define VERSION_REVISION 122 #endif