mirror of
https://github.com/ossrs/srs.git
synced 2025-02-13 20:01:56 +00:00
RTC: Support hijack play and consuming
This commit is contained in:
parent
a5265c5753
commit
f501d5b63d
2 changed files with 17 additions and 0 deletions
|
@ -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",
|
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_);
|
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;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -628,6 +634,12 @@ srs_error_t SrsRtcPlayer::cycle()
|
||||||
vector<SrsRtpPacket2*> pkts;
|
vector<SrsRtpPacket2*> pkts;
|
||||||
SrsRtcOutgoingInfo info;
|
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) {
|
while (true) {
|
||||||
if ((err = trd->pull()) != srs_success) {
|
if ((err = trd->pull()) != srs_success) {
|
||||||
return srs_error_wrap(err, "rtc sender thread");
|
return srs_error_wrap(err, "rtc sender thread");
|
||||||
|
|
|
@ -57,6 +57,7 @@ class ISrsCodec;
|
||||||
class SrsRtpNackForReceiver;
|
class SrsRtpNackForReceiver;
|
||||||
class SrsRtpIncommingVideoFrame;
|
class SrsRtpIncommingVideoFrame;
|
||||||
class SrsRtpRingBuffer;
|
class SrsRtpRingBuffer;
|
||||||
|
class SrsRtcConsumer;
|
||||||
|
|
||||||
const uint8_t kSR = 200;
|
const uint8_t kSR = 200;
|
||||||
const uint8_t kRR = 201;
|
const uint8_t kRR = 201;
|
||||||
|
@ -401,6 +402,10 @@ public:
|
||||||
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.
|
// When got RTP plaintext packet.
|
||||||
virtual srs_error_t on_rtp_packet(SrsRtcSession* session, SrsRtcPublisher* publisher, SrsRequest* req, SrsRtpPacket2* pkt) = 0;
|
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;
|
extern ISrsRtcHijacker* _srs_rtc_hijacker;
|
||||||
|
|
Loading…
Reference in a new issue