diff --git a/trunk/src/app/srs_app_rtc_conn.cpp b/trunk/src/app/srs_app_rtc_conn.cpp index cf23476c2..1f7ace5ac 100644 --- a/trunk/src/app/srs_app_rtc_conn.cpp +++ b/trunk/src/app/srs_app_rtc_conn.cpp @@ -536,6 +536,12 @@ srs_error_t SrsRtcPlayer::initialize(const uint32_t& vssrc, const uint32_t& assr srs_trace("RTC publisher video(ssrc=%d, pt=%d), audio(ssrc=%d, pt=%d), nack=%d", video_ssrc, video_payload_type, audio_ssrc, audio_payload_type, nack_enabled_); + if (_srs_rtc_hijacker) { + if ((err = _srs_rtc_hijacker->on_start_play(session_, this, session_->req)) != srs_success) { + return srs_error_wrap(err, "on start play"); + } + } + return err; } @@ -628,6 +634,12 @@ srs_error_t SrsRtcPlayer::cycle() vector pkts; SrsRtcOutgoingInfo info; + if (_srs_rtc_hijacker) { + if ((err = _srs_rtc_hijacker->on_start_consume(session_, this, session_->req, consumer)) != srs_success) { + return srs_error_wrap(err, "on start consuming"); + } + } + while (true) { if ((err = trd->pull()) != srs_success) { return srs_error_wrap(err, "rtc sender thread"); diff --git a/trunk/src/app/srs_app_rtc_conn.hpp b/trunk/src/app/srs_app_rtc_conn.hpp index 9473e3fb2..2d26afb42 100644 --- a/trunk/src/app/srs_app_rtc_conn.hpp +++ b/trunk/src/app/srs_app_rtc_conn.hpp @@ -57,6 +57,7 @@ class ISrsCodec; class SrsRtpNackForReceiver; class SrsRtpIncommingVideoFrame; class SrsRtpRingBuffer; +class SrsRtcConsumer; const uint8_t kSR = 200; const uint8_t kRR = 201; @@ -401,6 +402,10 @@ public: virtual srs_error_t on_start_publish(SrsRtcSession* session, SrsRtcPublisher* publisher, SrsRequest* req) = 0; // When got RTP plaintext packet. virtual srs_error_t on_rtp_packet(SrsRtcSession* session, SrsRtcPublisher* publisher, SrsRequest* req, SrsRtpPacket2* pkt) = 0; + // When start player by RTC. + virtual srs_error_t on_start_play(SrsRtcSession* session, SrsRtcPlayer* player, SrsRequest* req) = 0; + // When start consuming for player for RTC. + virtual srs_error_t on_start_consume(SrsRtcSession* session, SrsRtcPlayer* player, SrsRequest* req, SrsRtcConsumer* consumer) = 0; }; extern ISrsRtcHijacker* _srs_rtc_hijacker;