From f04e63edbfd64661aa426e63462f15ad8cddbb0d Mon Sep 17 00:00:00 2001 From: winlin Date: Mon, 4 May 2020 07:52:29 +0800 Subject: [PATCH] Refactor code, support NACK and NACK PLI in SDP --- trunk/src/app/srs_app_http_api.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/trunk/src/app/srs_app_http_api.cpp b/trunk/src/app/srs_app_http_api.cpp index 5516186e5..1004acc99 100644 --- a/trunk/src/app/srs_app_http_api.cpp +++ b/trunk/src/app/srs_app_http_api.cpp @@ -1033,6 +1033,11 @@ srs_error_t SrsGoApiRtcPlay::exchange_sdp(const std::string& app, const std::str // 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 (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 codec. break; @@ -1062,6 +1067,11 @@ srs_error_t SrsGoApiRtcPlay::exchange_sdp(const std::string& app, const std::str // 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 (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; @@ -1364,6 +1374,11 @@ srs_error_t SrsGoApiRtcPublish::exchange_sdp(const std::string& app, const std:: // 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 (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 codec. break; @@ -1394,6 +1409,11 @@ srs_error_t SrsGoApiRtcPublish::exchange_sdp(const std::string& app, const std:: // 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 (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;