From 7d3ec991e1b1aa6f5aa9d909af338925c59ced83 Mon Sep 17 00:00:00 2001 From: winlin Date: Sun, 26 Sep 2021 17:12:55 +0800 Subject: [PATCH] Squash: Merge SRS 4.0 --- .../api-server/static-dir/favicon.ico | Bin 5430 -> 4286 bytes trunk/src/app/srs_app_rtc_source.cpp | 24 +++++++++--------- trunk/src/kernel/srs_kernel_rtc_rtcp.cpp | 5 ++++ 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/trunk/research/api-server/static-dir/favicon.ico b/trunk/research/api-server/static-dir/favicon.ico index 62fd6c026000902030df76745ef703c61e2d6a2e..8c68afab8408c81d2a93eb2bd720e2cd47b6890d 100644 GIT binary patch literal 4286 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 diff --git a/trunk/src/app/srs_app_rtc_source.cpp b/trunk/src/app/srs_app_rtc_source.cpp index be1c15adf..065c00ecc 100644 --- a/trunk/src/app/srs_app_rtc_source.cpp +++ b/trunk/src/app/srs_app_rtc_source.cpp @@ -1715,19 +1715,19 @@ bool SrsRtmpFromRtcBridger::check_frame_complete(const uint16_t start, const uin for (uint16_t i = 0; i < cnt; ++i) { int index = cache_index((start + i)); SrsRtpPacket* pkt = cache_video_pkts_[index].pkt; - if (!pkt) { - // fix crash when pkt->payload() if pkt is nullptr; - continue; - } - SrsRtpFUAPayload2* fua_payload = dynamic_cast(pkt->payload()); - if (fua_payload) { - if (fua_payload->start) { - ++fu_s_c; - } - if (fua_payload->end) { - ++fu_e_c; - } + // fix crash when pkt->payload() if pkt is nullptr; + if (!pkt) continue; + + SrsRtpFUAPayload2* fua_payload = dynamic_cast(pkt->payload()); + if (!fua_payload) continue; + + if (fua_payload->start) { + ++fu_s_c; + } + + if (fua_payload->end) { + ++fu_e_c; } } diff --git a/trunk/src/kernel/srs_kernel_rtc_rtcp.cpp b/trunk/src/kernel/srs_kernel_rtc_rtcp.cpp index 1c9f14c76..7f3120423 100644 --- a/trunk/src/kernel/srs_kernel_rtc_rtcp.cpp +++ b/trunk/src/kernel/srs_kernel_rtc_rtcp.cpp @@ -1161,6 +1161,7 @@ srs_error_t SrsRtcpTWCC::do_encode(SrsBuffer *buffer) if(srs_success != (err = encode_header(buffer))) { return srs_error_wrap(err, "encode header"); } + buffer->write_4bytes(media_ssrc_); buffer->write_2bytes(base_sn_); buffer->write_2bytes(packet_count); @@ -1171,13 +1172,16 @@ srs_error_t SrsRtcpTWCC::do_encode(SrsBuffer *buffer) if(!buffer->require(required_size)) { return srs_error_new(ERROR_RTC_RTCP, "encoded_chucks_[%d] requires %d bytes", (int)encoded_chucks_.size(), required_size); } + for(vector::iterator it = encoded_chucks_.begin(); it != encoded_chucks_.end(); ++it) { buffer->write_2bytes(*it); } + required_size = pkt_deltas_.size() * 2; if(!buffer->require(required_size)) { return srs_error_new(ERROR_RTC_RTCP, "pkt_deltas_[%d] requires %d bytes", (int)pkt_deltas_.size(), required_size); } + for(vector::iterator it = pkt_deltas_.begin(); it != pkt_deltas_.end(); ++it) { if(0 <= *it && 0xFF >= *it) { // small delta @@ -1188,6 +1192,7 @@ srs_error_t SrsRtcpTWCC::do_encode(SrsBuffer *buffer) buffer->write_2bytes(*it); } } + while((pkt_len % 4) != 0) { buffer->write_1bytes(0); pkt_len++;