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);
|
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;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1416,10 +1422,12 @@ srs_error_t SrsRtcPublisher::on_rtp(char* data, int nb_data)
|
||||||
// For source to consume packet.
|
// For source to consume packet.
|
||||||
uint32_t ssrc = pkt->header.get_ssrc();
|
uint32_t ssrc = pkt->header.get_ssrc();
|
||||||
if (ssrc == audio_ssrc) {
|
if (ssrc == audio_ssrc) {
|
||||||
|
pkt->frame_type = SrsFrameTypeAudio;
|
||||||
if ((err = on_audio(pkt)) != srs_success) {
|
if ((err = on_audio(pkt)) != srs_success) {
|
||||||
return srs_error_wrap(err, "on audio");
|
return srs_error_wrap(err, "on audio");
|
||||||
}
|
}
|
||||||
} else if (ssrc == video_ssrc) {
|
} else if (ssrc == video_ssrc) {
|
||||||
|
pkt->frame_type = SrsFrameTypeVideo;
|
||||||
if ((err = on_video(pkt)) != srs_success) {
|
if ((err = on_video(pkt)) != srs_success) {
|
||||||
return srs_error_wrap(err, "on video");
|
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");
|
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;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2232,12 +2246,6 @@ srs_error_t SrsRtcSession::start_publish()
|
||||||
return srs_error_wrap(err, "rtc publisher init");
|
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;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -399,6 +399,8 @@ public:
|
||||||
public:
|
public:
|
||||||
// When start publisher by RTC.
|
// When start publisher by RTC.
|
||||||
virtual srs_error_t on_start_publish(SrsRtcSession* session, SrsRtcPublisher* publisher, SrsRequest* req) = 0;
|
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;
|
extern ISrsRtcHijacker* _srs_rtc_hijacker;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue