mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
RTC: Support hijack the plaintext RTP packet
This commit is contained in:
parent
2bd0e1ce43
commit
64eb22b95d
2 changed files with 16 additions and 6 deletions
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue