diff --git a/trunk/src/app/srs_app_rtc_conn.cpp b/trunk/src/app/srs_app_rtc_conn.cpp index 3b63af1cc..a8b205b84 100644 --- a/trunk/src/app/srs_app_rtc_conn.cpp +++ b/trunk/src/app/srs_app_rtc_conn.cpp @@ -366,19 +366,6 @@ srs_error_t SrsRtcPLIWorker::cycle() return err; } -SrsRtcPlayStreamStatistic::SrsRtcPlayStreamStatistic() -{ - nn_rtp_pkts = 0; - nn_audios = nn_extras = 0; - nn_videos = nn_samples = 0; - nn_bytes = nn_rtp_bytes = 0; - nn_padding_bytes = nn_paddings = 0; -} - -SrsRtcPlayStreamStatistic::~SrsRtcPlayStreamStatistic() -{ -} - SrsRtcPlayStream::SrsRtcPlayStream(SrsRtcConnection* s, const SrsContextId& cid) { cid_ = cid; @@ -593,47 +580,6 @@ srs_error_t SrsRtcPlayStream::cycle() } } -srs_error_t SrsRtcPlayStream::send_packets(SrsRtcStream* source, const vector& pkts, SrsRtcPlayStreamStatistic& info) -{ - srs_error_t err = srs_success; - - // Covert kernel messages to RTP packets. - for (int i = 0; i < (int)pkts.size(); i++) { - SrsRtpPacket2* pkt = pkts[i]; - - // TODO: FIXME: Maybe refine for performance issue. - if (!audio_tracks_.count(pkt->header.get_ssrc()) && !video_tracks_.count(pkt->header.get_ssrc())) { - srs_warn("ssrc %u not found", pkt->header.get_ssrc()); - continue; - } - - // For audio, we transcoded AAC to opus in extra payloads. - if (pkt->is_audio()) { - // TODO: FIXME: Any simple solution? - SrsRtcAudioSendTrack* audio_track = audio_tracks_[pkt->header.get_ssrc()]; - - if ((err = audio_track->on_rtp(pkt)) != srs_success) { - return srs_error_wrap(err, "audio track, SSRC=%u, SEQ=%u", pkt->header.get_ssrc(), pkt->header.get_sequence()); - } - - // TODO: FIXME: Padding audio to the max payload in RTP packets. - } else { - // TODO: FIXME: Any simple solution? - SrsRtcVideoSendTrack* video_track = video_tracks_[pkt->header.get_ssrc()]; - - if ((err = video_track->on_rtp(pkt)) != srs_success) { - return srs_error_wrap(err, "video track, SSRC=%u, SEQ=%u", pkt->header.get_ssrc(), pkt->header.get_sequence()); - } - } - - // Detail log, should disable it in release version. - srs_info("RTC: Update PT=%u, SSRC=%#x, Time=%u, %u bytes", pkt->header.get_payload_type(), pkt->header.get_ssrc(), - pkt->header.get_timestamp(), pkt->nb_bytes()); - } - - return err; -} - srs_error_t SrsRtcPlayStream::send_packet(SrsRtpPacket2* pkt) { srs_error_t err = srs_success; @@ -2508,60 +2454,6 @@ void SrsRtcConnection::simulate_player_drop_packet(SrsRtpHeader* h, int nn_bytes nn_simulate_player_nack_drop--; } -srs_error_t SrsRtcConnection::do_send_packets(const std::vector& pkts, SrsRtcPlayStreamStatistic& info) -{ - srs_error_t err = srs_success; - - for (int i = 0; i < (int)pkts.size(); i++) { - SrsRtpPacket2* pkt = pkts.at(i); - - // For this message, select the first iovec. - iovec* iov = cache_iov_; - iov->iov_len = kRtpPacketSize; - cache_buffer_->skip(-1 * cache_buffer_->pos()); - - // Marshal packet to bytes in iovec. - if (true) { - if ((err = pkt->encode(cache_buffer_)) != srs_success) { - return srs_error_wrap(err, "encode packet"); - } - iov->iov_len = cache_buffer_->pos(); - } - - // Cipher RTP to SRTP packet. - if (true) { - int nn_encrypt = (int)iov->iov_len; - if ((err = transport_->protect_rtp(iov->iov_base, &nn_encrypt)) != srs_success) { - return srs_error_wrap(err, "srtp protect"); - } - iov->iov_len = (size_t)nn_encrypt; - } - - info.nn_rtp_bytes += (int)iov->iov_len; - - // When we send out a packet, increase the stat counter. - info.nn_rtp_pkts++; - - // For NACK simulator, drop packet. - if (nn_simulate_player_nack_drop) { - simulate_player_drop_packet(&pkt->header, (int)iov->iov_len); - iov->iov_len = 0; - continue; - } - - ++_srs_pps_srtps->sugar; - - // TODO: FIXME: Handle error. - sendonly_skt->sendto(iov->iov_base, iov->iov_len, 0); - - // Detail log, should disable it in release version. - srs_info("RTC: SEND PT=%u, SSRC=%#x, SEQ=%u, Time=%u, %u/%u bytes", pkt->header.get_payload_type(), pkt->header.get_ssrc(), - pkt->header.get_sequence(), pkt->header.get_timestamp(), pkt->nb_bytes(), iov->iov_len); - } - - return err; -} - srs_error_t SrsRtcConnection::do_send_packet(SrsRtpPacket2* pkt) { srs_error_t err = srs_success; diff --git a/trunk/src/app/srs_app_rtc_conn.hpp b/trunk/src/app/srs_app_rtc_conn.hpp index 69c620b03..f3aa8e2e4 100644 --- a/trunk/src/app/srs_app_rtc_conn.hpp +++ b/trunk/src/app/srs_app_rtc_conn.hpp @@ -209,38 +209,6 @@ public: virtual srs_error_t cycle(); }; -// A group of RTP packets for outgoing(send to players). -class SrsRtcPlayStreamStatistic -{ -public: - // The total bytes of AVFrame packets. - int nn_bytes; - // The total bytes of RTP packets. - int nn_rtp_bytes; - // The total padded bytes. - int nn_padding_bytes; -public: - // The RTP packets send out by sendmmsg or sendmsg. Note that if many packets group to - // one msghdr by GSO, it's only one RTP packet, because we only send once. - int nn_rtp_pkts; - // For video, the samples or NALUs. - // TODO: FIXME: Remove it because we may don't know. - int nn_samples; - // For audio, the generated extra audio packets. - // For example, when transcoding AAC to opus, may many extra payloads for a audio. - // TODO: FIXME: Remove it because we may don't know. - int nn_extras; - // The original audio messages. - int nn_audios; - // The original video messages. - int nn_videos; - // The number of padded packet. - int nn_paddings; -public: - SrsRtcPlayStreamStatistic(); - virtual ~SrsRtcPlayStreamStatistic(); -}; - // A RTC play stream, client pull and play stream from SRS. class SrsRtcPlayStream : virtual public ISrsCoroutineHandler, virtual public ISrsReloadHandler , virtual public ISrsHourGlass, virtual public ISrsRtcPLIWorkerHandler @@ -268,8 +236,6 @@ private: private: // Whether palyer started. bool is_started; - // The statistic for consumer to send packets to player. - SrsRtcPlayStreamStatistic info; public: SrsRtcPlayStream(SrsRtcConnection* s, const SrsContextId& cid); virtual ~SrsRtcPlayStream(); @@ -286,7 +252,6 @@ public: public: virtual srs_error_t cycle(); private: - srs_error_t send_packets(SrsRtcStream* source, const std::vector& pkts, SrsRtcPlayStreamStatistic& info); srs_error_t send_packet(SrsRtpPacket2* pkt); public: // Directly set the status of track, generally for init to set the default value. @@ -551,7 +516,6 @@ public: // Simulate the NACK to drop nn packets. void simulate_nack_drop(int nn); void simulate_player_drop_packet(SrsRtpHeader* h, int nn_bytes); - srs_error_t do_send_packets(const std::vector& pkts, SrsRtcPlayStreamStatistic& info); srs_error_t do_send_packet(SrsRtpPacket2* pkt); // Directly set the status of play track, generally for init to set the default value. void set_all_tracks_status(std::string stream_uri, bool is_publish, bool status); diff --git a/trunk/src/app/srs_app_rtc_source.hpp b/trunk/src/app/srs_app_rtc_source.hpp index 5bb7c42d9..a1fe0b4f7 100644 --- a/trunk/src/app/srs_app_rtc_source.hpp +++ b/trunk/src/app/srs_app_rtc_source.hpp @@ -55,7 +55,6 @@ class SrsRtcConnection; class SrsRtpRingBuffer; class SrsRtpNackForReceiver; class SrsJsonObject; -class SrsRtcPlayStreamStatistic; class SrsErrorPithyPrint; class SrsRtcDummyBridger;