From 069d3ef79d6dff48457c95d931bacb7fc5e8c0a9 Mon Sep 17 00:00:00 2001 From: winlin Date: Fri, 24 Jul 2020 17:01:47 +0800 Subject: [PATCH] RTC: Suport ULPFEC and RED --- trunk/src/app/srs_app_rtc_conn.cpp | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/trunk/src/app/srs_app_rtc_conn.cpp b/trunk/src/app/srs_app_rtc_conn.cpp index 046484485..c523c3d24 100644 --- a/trunk/src/app/srs_app_rtc_conn.cpp +++ b/trunk/src/app/srs_app_rtc_conn.cpp @@ -2524,6 +2524,11 @@ srs_error_t SrsRtcConnection::generate_publish_local_sdp(SrsRequest* req, SrsSdp SrsVideoPayload* payload = (SrsVideoPayload*)video_track->media_; local_media_desc.payload_types_.push_back(payload->generate_media_payload_type()); + if (video_track->red_) { + SrsRedPayload* payload = (SrsRedPayload*)video_track->red_; + local_media_desc.payload_types_.push_back(payload->generate_media_payload_type()); + } + // only need media desc info, not ssrc info; break; } @@ -2614,12 +2619,6 @@ srs_error_t SrsRtcConnection::negotiate_play_capability(SrsRequest* req, const S srs_freep(track->rtx_); track->rtx_ssrc_ = 0; } - // TODO: FIXME: if we support downlink ulpfec, MUST assign ulpfec params - // set_ulpfec_config; - if (true) { - srs_freep(track->ulpfec_); - track->fec_ssrc_ = 0; - } track->set_direction("sendonly"); sub_relations.insert(make_pair(publish_ssrc, track)); @@ -2676,11 +2675,6 @@ srs_error_t SrsRtcConnection::fetch_source_capability(SrsRequest* req, std::map< srs_freep(track->rtx_); track->rtx_ssrc_ = 0; - // TODO: FIXME: if we support downlink ulpfec, MUST assign ulpfec params - // set_ulpfec_config; - srs_freep(track->ulpfec_); - track->fec_ssrc_ = 0; - track->set_direction("sendonly"); sub_relations.insert(make_pair(publish_ssrc, track)); } @@ -2805,6 +2799,11 @@ srs_error_t SrsRtcConnection::generate_play_local_sdp(SrsRequest* req, SrsSdp& l SrsVideoPayload* payload = (SrsVideoPayload*)track->media_; local_media_desc.payload_types_.push_back(payload->generate_media_payload_type()); + + if (track->red_) { + SrsRedPayload* red_payload = (SrsRedPayload*)track->red_; + local_media_desc.payload_types_.push_back(red_payload->generate_media_payload_type()); + } } SrsMediaDesc& local_media_desc = local_sdp.media_descs_.back();