From cf9a8c7dcb4154deeb7e0309fe12a89af69c2614 Mon Sep 17 00:00:00 2001 From: winlin Date: Mon, 10 Aug 2020 15:24:26 +0800 Subject: [PATCH] RTC: Show error when send packets. --- trunk/src/app/srs_app_rtc_conn.cpp | 31 ++++++++++++++++++---------- trunk/src/app/srs_app_rtc_source.cpp | 2 ++ 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/trunk/src/app/srs_app_rtc_conn.cpp b/trunk/src/app/srs_app_rtc_conn.cpp index 4bfb43e32..7b20a1013 100644 --- a/trunk/src/app/srs_app_rtc_conn.cpp +++ b/trunk/src/app/srs_app_rtc_conn.cpp @@ -495,15 +495,23 @@ srs_error_t SrsRtcPlayStream::cycle() session_->stat_->nn_out_rtp += msg_count; total_pkts += msg_count; - // Send-out all RTP packets and do cleanup. - // TODO: FIXME: Handle error. - send_packets(source, pkts, info); + // Send-out all RTP packets and do cleanup + if (true) { + err = send_packets(source, pkts, info); - for (int i = 0; i < msg_count; i++) { - SrsRtpPacket2* pkt = pkts[i]; - srs_freep(pkt); + // TODO: FIXME: Use pithy print to show more smart information. + if (err != srs_success) { + err = srs_error_wrap(err, "RTP, SSRC=%u, SEQ=%u", pkt->header.get_ssrc(), pkt->header.get_sequence()); + srs_warn("play send packets, err: %s", srs_error_desc(err).c_str()); + srs_freep(err); + } + + for (int i = 0; i < msg_count; i++) { + SrsRtpPacket2* pkt = pkts[i]; + srs_freep(pkt); + } + pkts.clear(); } - pkts.clear(); // Stat for performance analysis. if (!stat_enabled) { @@ -547,17 +555,18 @@ srs_error_t SrsRtcPlayStream::send_packets(SrsRtcStream* source, const vectoris_audio()) { - SrsRtcAudioSendTrack* audio_track = audio_tracks_[pkt->header.get_ssrc()]; // TODO: FIXME: Any simple solution? + SrsRtcAudioSendTrack* audio_track = audio_tracks_[pkt->header.get_ssrc()]; if ((err = audio_track->on_rtp(pkt, info)) != srs_success) { - return srs_error_wrap(err, "audio_track on rtp"); + return srs_error_wrap(err, "audio track"); } + // TODO: FIXME: Padding audio to the max payload in RTP packets. } else { - SrsRtcVideoSendTrack* video_track = video_tracks_[pkt->header.get_ssrc()]; // TODO: FIXME: Any simple solution? + SrsRtcVideoSendTrack* video_track = video_tracks_[pkt->header.get_ssrc()]; if ((err = video_track->on_rtp(pkt, info)) != srs_success) { - return srs_error_wrap(err, "audio_track on rtp"); + return srs_error_wrap(err, "video track"); } } diff --git a/trunk/src/app/srs_app_rtc_source.cpp b/trunk/src/app/srs_app_rtc_source.cpp index b2f92c91d..b7420dc80 100644 --- a/trunk/src/app/srs_app_rtc_source.cpp +++ b/trunk/src/app/srs_app_rtc_source.cpp @@ -1867,6 +1867,7 @@ srs_error_t SrsRtcAudioSendTrack::on_rtp(SrsRtpPacket2* pkt, SrsRtcPlayStreamSta session_->stat_->nn_out_audios++; // track level statistic + // TODO: FIXME: if send packets failed, statistic is no correct. statistic_->packets++; statistic_->bytes += pkt->nb_bytes(); @@ -1922,6 +1923,7 @@ srs_error_t SrsRtcVideoSendTrack::on_rtp(SrsRtpPacket2* pkt, SrsRtcPlayStreamSta session_->stat_->nn_out_videos++; // track level statistic + // TODO: FIXME: if send packets failed, statistic is no correct. statistic->packets++; statistic->bytes += pkt->nb_bytes();