diff --git a/trunk/src/app/srs_app_rtc_conn.cpp b/trunk/src/app/srs_app_rtc_conn.cpp index ddf4c01fa..57aa7fcd2 100644 --- a/trunk/src/app/srs_app_rtc_conn.cpp +++ b/trunk/src/app/srs_app_rtc_conn.cpp @@ -1121,6 +1121,12 @@ srs_error_t SrsRtcPublisher::initialize(uint32_t vssrc, uint32_t assrc, uint8_t source->set_rtc_publisher(this); + if (_srs_rtc_hijacker) { + if ((err = _srs_rtc_hijacker->on_start_publish(session_, this, req)) != srs_success) { + return srs_error_wrap(err, "on start publish"); + } + } + return err; } @@ -1416,10 +1422,12 @@ srs_error_t SrsRtcPublisher::on_rtp(char* data, int nb_data) // For source to consume packet. uint32_t ssrc = pkt->header.get_ssrc(); if (ssrc == audio_ssrc) { + pkt->frame_type = SrsFrameTypeAudio; if ((err = on_audio(pkt)) != srs_success) { return srs_error_wrap(err, "on audio"); } } else if (ssrc == video_ssrc) { + pkt->frame_type = SrsFrameTypeVideo; if ((err = on_video(pkt)) != srs_success) { return srs_error_wrap(err, "on video"); } @@ -1432,6 +1440,12 @@ srs_error_t SrsRtcPublisher::on_rtp(char* data, int nb_data) return srs_error_wrap(err, "on nack"); } + if (_srs_rtc_hijacker) { + if ((err = _srs_rtc_hijacker->on_rtp_packet(session_, this, req, pkt->copy())) != srs_success) { + return srs_error_wrap(err, "on rtp packet"); + } + } + return err; } @@ -2232,12 +2246,6 @@ srs_error_t SrsRtcSession::start_publish() return srs_error_wrap(err, "rtc publisher init"); } - if (_srs_rtc_hijacker) { - if ((err = _srs_rtc_hijacker->on_start_publish(this, publisher_, req)) != srs_success) { - return srs_error_wrap(err, "on start publish"); - } - } - return err; } diff --git a/trunk/src/app/srs_app_rtc_conn.hpp b/trunk/src/app/srs_app_rtc_conn.hpp index 3bb8060dc..9473e3fb2 100644 --- a/trunk/src/app/srs_app_rtc_conn.hpp +++ b/trunk/src/app/srs_app_rtc_conn.hpp @@ -399,6 +399,8 @@ public: public: // When start publisher by RTC. 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; }; extern ISrsRtcHijacker* _srs_rtc_hijacker;