diff --git a/trunk/src/app/srs_app_rtc_conn.cpp b/trunk/src/app/srs_app_rtc_conn.cpp index c0a7fa2bc..eec8598c3 100644 --- a/trunk/src/app/srs_app_rtc_conn.cpp +++ b/trunk/src/app/srs_app_rtc_conn.cpp @@ -271,7 +271,7 @@ SrsRtcOutgoingInfo::~SrsRtcOutgoingInfo() { } -SrsRtcPlayer::SrsRtcPlayer(SrsRtcConnection* s, SrsContextId parent_cid) +SrsRtcPlayStream::SrsRtcPlayStream(SrsRtcConnection* s, SrsContextId parent_cid) { _parent_cid = parent_cid; trd = new SrsDummyCoroutine(); @@ -291,7 +291,7 @@ SrsRtcPlayer::SrsRtcPlayer(SrsRtcConnection* s, SrsContextId parent_cid) _srs_config->subscribe(this); } -SrsRtcPlayer::~SrsRtcPlayer() +SrsRtcPlayStream::~SrsRtcPlayStream() { _srs_config->unsubscribe(this); @@ -300,7 +300,7 @@ SrsRtcPlayer::~SrsRtcPlayer() srs_freep(video_queue_); } -srs_error_t SrsRtcPlayer::initialize(uint32_t vssrc, uint32_t assrc, uint16_t v_pt, uint16_t a_pt) +srs_error_t SrsRtcPlayStream::initialize(uint32_t vssrc, uint32_t assrc, uint16_t v_pt, uint16_t a_pt) { srs_error_t err = srs_success; @@ -324,7 +324,7 @@ srs_error_t SrsRtcPlayer::initialize(uint32_t vssrc, uint32_t assrc, uint16_t v_ return err; } -srs_error_t SrsRtcPlayer::on_reload_vhost_play(string vhost) +srs_error_t SrsRtcPlayStream::on_reload_vhost_play(string vhost) { SrsRequest* req = session_->req; @@ -340,17 +340,17 @@ srs_error_t SrsRtcPlayer::on_reload_vhost_play(string vhost) return srs_success; } -srs_error_t SrsRtcPlayer::on_reload_vhost_realtime(string vhost) +srs_error_t SrsRtcPlayStream::on_reload_vhost_realtime(string vhost) { return on_reload_vhost_play(vhost); } -SrsContextId SrsRtcPlayer::cid() +SrsContextId SrsRtcPlayStream::cid() { return trd->cid(); } -srs_error_t SrsRtcPlayer::start() +srs_error_t SrsRtcPlayStream::start() { srs_error_t err = srs_success; @@ -364,17 +364,17 @@ srs_error_t SrsRtcPlayer::start() return err; } -void SrsRtcPlayer::stop() +void SrsRtcPlayStream::stop() { trd->stop(); } -void SrsRtcPlayer::stop_loop() +void SrsRtcPlayStream::stop_loop() { trd->interrupt(); } -srs_error_t SrsRtcPlayer::cycle() +srs_error_t SrsRtcPlayStream::cycle() { srs_error_t err = srs_success; @@ -470,7 +470,7 @@ srs_error_t SrsRtcPlayer::cycle() } } -srs_error_t SrsRtcPlayer::send_packets(SrsRtcSource* source, const vector& pkts, SrsRtcOutgoingInfo& info) +srs_error_t SrsRtcPlayStream::send_packets(SrsRtcSource* source, const vector& pkts, SrsRtcOutgoingInfo& info) { srs_error_t err = srs_success; @@ -512,7 +512,7 @@ srs_error_t SrsRtcPlayer::send_packets(SrsRtcSource* source, const vector& pkts, SrsRtcOutgoingInfo& info) +srs_error_t SrsRtcPlayStream::do_send_packets(const std::vector& pkts, SrsRtcOutgoingInfo& info) { srs_error_t err = srs_success; @@ -596,7 +596,7 @@ srs_error_t SrsRtcPlayer::do_send_packets(const std::vector& pkt return err; } -void SrsRtcPlayer::nack_fetch(vector& pkts, uint32_t ssrc, uint16_t seq) +void SrsRtcPlayStream::nack_fetch(vector& pkts, uint32_t ssrc, uint16_t seq) { SrsRtpPacket2* pkt = NULL; @@ -611,12 +611,12 @@ void SrsRtcPlayer::nack_fetch(vector& pkts, uint32_t ssrc, uint1 } } -void SrsRtcPlayer::simulate_nack_drop(int nn) +void SrsRtcPlayStream::simulate_nack_drop(int nn) { nn_simulate_nack_drop = nn; } -void SrsRtcPlayer::simulate_drop_packet(SrsRtpHeader* h, int nn_bytes) +void SrsRtcPlayStream::simulate_drop_packet(SrsRtpHeader* h, int nn_bytes) { srs_warn("RTC NACK simulator #%d drop seq=%u, ssrc=%u/%s, ts=%u, %d bytes", nn_simulate_nack_drop, h->get_sequence(), h->get_ssrc(), (h->get_ssrc()==video_ssrc? "Video":"Audio"), h->get_timestamp(), @@ -625,7 +625,7 @@ void SrsRtcPlayer::simulate_drop_packet(SrsRtpHeader* h, int nn_bytes) nn_simulate_nack_drop--; } -srs_error_t SrsRtcPlayer::on_rtcp(char* data, int nb_data) +srs_error_t SrsRtcPlayStream::on_rtcp(char* data, int nb_data) { srs_error_t err = srs_success; @@ -690,21 +690,21 @@ srs_error_t SrsRtcPlayer::on_rtcp(char* data, int nb_data) return err; } -srs_error_t SrsRtcPlayer::on_rtcp_sr(char* buf, int nb_buf) +srs_error_t SrsRtcPlayStream::on_rtcp_sr(char* buf, int nb_buf) { srs_error_t err = srs_success; // TODO: FIXME: Implements it. return err; } -srs_error_t SrsRtcPlayer::on_rtcp_xr(char* buf, int nb_buf) +srs_error_t SrsRtcPlayStream::on_rtcp_xr(char* buf, int nb_buf) { srs_error_t err = srs_success; // TODO: FIXME: Implements it. return err; } -srs_error_t SrsRtcPlayer::on_rtcp_feedback(char* buf, int nb_buf) +srs_error_t SrsRtcPlayStream::on_rtcp_feedback(char* buf, int nb_buf) { srs_error_t err = srs_success; @@ -790,7 +790,7 @@ srs_error_t SrsRtcPlayer::on_rtcp_feedback(char* buf, int nb_buf) return err; } -srs_error_t SrsRtcPlayer::on_rtcp_ps_feedback(char* buf, int nb_buf) +srs_error_t SrsRtcPlayStream::on_rtcp_ps_feedback(char* buf, int nb_buf) { srs_error_t err = srs_success; @@ -840,14 +840,14 @@ srs_error_t SrsRtcPlayer::on_rtcp_ps_feedback(char* buf, int nb_buf) return err; } -srs_error_t SrsRtcPlayer::on_rtcp_rr(char* data, int nb_data) +srs_error_t SrsRtcPlayStream::on_rtcp_rr(char* data, int nb_data) { srs_error_t err = srs_success; // TODO: FIXME: Implements it. return err; } -SrsRtcPublisher::SrsRtcPublisher(SrsRtcConnection* session) +SrsRtcPublishStream::SrsRtcPublishStream(SrsRtcConnection* session) { report_timer = new SrsHourGlass(this, 200 * SRS_UTIME_MILLISECONDS); @@ -869,7 +869,7 @@ SrsRtcPublisher::SrsRtcPublisher(SrsRtcConnection* session) twcc_fb_count_ = 0; } -SrsRtcPublisher::~SrsRtcPublisher() +SrsRtcPublishStream::~SrsRtcPublishStream() { // TODO: FIXME: Do unpublish when session timeout. if (source) { @@ -884,7 +884,7 @@ SrsRtcPublisher::~SrsRtcPublisher() srs_freep(audio_queue_); } -srs_error_t SrsRtcPublisher::initialize(uint32_t vssrc, uint32_t assrc, int twcc_id, SrsRequest* r) +srs_error_t SrsRtcPublishStream::initialize(uint32_t vssrc, uint32_t assrc, int twcc_id, SrsRequest* r) { srs_error_t err = srs_success; @@ -934,7 +934,7 @@ srs_error_t SrsRtcPublisher::initialize(uint32_t vssrc, uint32_t assrc, int twcc return err; } -void SrsRtcPublisher::check_send_nacks(SrsRtpNackForReceiver* nack, uint32_t ssrc) +void SrsRtcPublishStream::check_send_nacks(SrsRtpNackForReceiver* nack, uint32_t ssrc) { // If DTLS is not OK, drop all messages. if (!session_->transport_) { @@ -984,7 +984,7 @@ void SrsRtcPublisher::check_send_nacks(SrsRtpNackForReceiver* nack, uint32_t ssr } } -srs_error_t SrsRtcPublisher::send_rtcp_rr(uint32_t ssrc, SrsRtpRingBuffer* rtp_queue) +srs_error_t SrsRtcPublishStream::send_rtcp_rr(uint32_t ssrc, SrsRtpRingBuffer* rtp_queue) { srs_error_t err = srs_success; @@ -1042,7 +1042,7 @@ srs_error_t SrsRtcPublisher::send_rtcp_rr(uint32_t ssrc, SrsRtpRingBuffer* rtp_q return err; } -srs_error_t SrsRtcPublisher::send_rtcp_xr_rrtr(uint32_t ssrc) +srs_error_t SrsRtcPublishStream::send_rtcp_xr_rrtr(uint32_t ssrc) { srs_error_t err = srs_success; @@ -1103,7 +1103,7 @@ srs_error_t SrsRtcPublisher::send_rtcp_xr_rrtr(uint32_t ssrc) return err; } -srs_error_t SrsRtcPublisher::send_rtcp_fb_pli(uint32_t ssrc) +srs_error_t SrsRtcPublishStream::send_rtcp_fb_pli(uint32_t ssrc) { srs_error_t err = srs_success; @@ -1140,12 +1140,12 @@ srs_error_t SrsRtcPublisher::send_rtcp_fb_pli(uint32_t ssrc) return err; } -srs_error_t SrsRtcPublisher::on_twcc(uint16_t sn) { +srs_error_t SrsRtcPublishStream::on_twcc(uint16_t sn) { srs_utime_t now = srs_get_system_time(); return rtcp_twcc_.recv_packet(sn, now); } -srs_error_t SrsRtcPublisher::on_rtp(char* data, int nb_data) +srs_error_t SrsRtcPublishStream::on_rtp(char* data, int nb_data) { srs_error_t err = srs_success; @@ -1254,7 +1254,7 @@ srs_error_t SrsRtcPublisher::on_rtp(char* data, int nb_data) return err; } -void SrsRtcPublisher::on_before_decode_payload(SrsRtpPacket2* pkt, SrsBuffer* buf, ISrsRtpPayloader** ppayload) +void SrsRtcPublishStream::on_before_decode_payload(SrsRtpPacket2* pkt, SrsBuffer* buf, ISrsRtpPayloader** ppayload) { // No payload, ignore. if (buf->empty()) { @@ -1276,7 +1276,7 @@ void SrsRtcPublisher::on_before_decode_payload(SrsRtpPacket2* pkt, SrsBuffer* bu } } -srs_error_t SrsRtcPublisher::on_audio(SrsRtpPacket2* pkt) +srs_error_t SrsRtcPublishStream::on_audio(SrsRtpPacket2* pkt) { srs_error_t err = srs_success; @@ -1288,7 +1288,7 @@ srs_error_t SrsRtcPublisher::on_audio(SrsRtpPacket2* pkt) return err; } -srs_error_t SrsRtcPublisher::on_video(SrsRtpPacket2* pkt) +srs_error_t SrsRtcPublishStream::on_video(SrsRtpPacket2* pkt) { srs_error_t err = srs_success; @@ -1307,7 +1307,7 @@ srs_error_t SrsRtcPublisher::on_video(SrsRtpPacket2* pkt) return err; } -srs_error_t SrsRtcPublisher::on_nack(SrsRtpPacket2* pkt) +srs_error_t SrsRtcPublishStream::on_nack(SrsRtpPacket2* pkt) { srs_error_t err = srs_success; @@ -1352,7 +1352,7 @@ srs_error_t SrsRtcPublisher::on_nack(SrsRtpPacket2* pkt) return err; } -srs_error_t SrsRtcPublisher::send_periodic_twcc() +srs_error_t SrsRtcPublishStream::send_periodic_twcc() { srs_error_t err = srs_success; srs_utime_t now = srs_get_system_time(); @@ -1381,7 +1381,7 @@ srs_error_t SrsRtcPublisher::send_periodic_twcc() return err; } -srs_error_t SrsRtcPublisher::on_rtcp(char* data, int nb_data) +srs_error_t SrsRtcPublishStream::on_rtcp(char* data, int nb_data) { srs_error_t err = srs_success; @@ -1446,7 +1446,7 @@ srs_error_t SrsRtcPublisher::on_rtcp(char* data, int nb_data) return err; } -srs_error_t SrsRtcPublisher::on_rtcp_sr(char* buf, int nb_buf) +srs_error_t SrsRtcPublishStream::on_rtcp_sr(char* buf, int nb_buf) { srs_error_t err = srs_success; @@ -1537,7 +1537,7 @@ block +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ return err; } -srs_error_t SrsRtcPublisher::on_rtcp_xr(char* buf, int nb_buf) +srs_error_t SrsRtcPublishStream::on_rtcp_xr(char* buf, int nb_buf) { srs_error_t err = srs_success; @@ -1601,14 +1601,14 @@ srs_error_t SrsRtcPublisher::on_rtcp_xr(char* buf, int nb_buf) return err; } -srs_error_t SrsRtcPublisher::on_rtcp_feedback(char* buf, int nb_buf) +srs_error_t SrsRtcPublishStream::on_rtcp_feedback(char* buf, int nb_buf) { srs_error_t err = srs_success; // TODO: FIXME: Implements it. return err; } -srs_error_t SrsRtcPublisher::on_rtcp_ps_feedback(char* buf, int nb_buf) +srs_error_t SrsRtcPublishStream::on_rtcp_ps_feedback(char* buf, int nb_buf) { srs_error_t err = srs_success; @@ -1654,7 +1654,7 @@ srs_error_t SrsRtcPublisher::on_rtcp_ps_feedback(char* buf, int nb_buf) return err; } -srs_error_t SrsRtcPublisher::on_rtcp_rr(char* buf, int nb_buf) +srs_error_t SrsRtcPublishStream::on_rtcp_rr(char* buf, int nb_buf) { srs_error_t err = srs_success; @@ -1723,7 +1723,7 @@ block +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ return err; } -void SrsRtcPublisher::request_keyframe() +void SrsRtcPublishStream::request_keyframe() { SrsContextId scid = _srs_context->get_id(); SrsContextId pcid = session_->context_id(); @@ -1732,7 +1732,7 @@ void SrsRtcPublisher::request_keyframe() request_keyframe_ = true; } -srs_error_t SrsRtcPublisher::notify(int type, srs_utime_t interval, srs_utime_t tick) +srs_error_t SrsRtcPublishStream::notify(int type, srs_utime_t interval, srs_utime_t tick) { srs_error_t err = srs_success; @@ -1750,12 +1750,12 @@ srs_error_t SrsRtcPublisher::notify(int type, srs_utime_t interval, srs_utime_t return err; } -void SrsRtcPublisher::simulate_nack_drop(int nn) +void SrsRtcPublishStream::simulate_nack_drop(int nn) { nn_simulate_nack_drop = nn; } -void SrsRtcPublisher::simulate_drop_packet(SrsRtpHeader* h, int nn_bytes) +void SrsRtcPublishStream::simulate_drop_packet(SrsRtpHeader* h, int nn_bytes) { srs_warn("RTC NACK simulator #%d drop seq=%u, ssrc=%u/%s, ts=%u, %d bytes", nn_simulate_nack_drop, h->get_sequence(), h->get_ssrc(), (h->get_ssrc()==video_ssrc? "Video":"Audio"), h->get_timestamp(), @@ -2019,7 +2019,7 @@ srs_error_t SrsRtcConnection::start_play() if (player_) { return err; } - player_ = new SrsRtcPlayer(this, _srs_context->get_id()); + player_ = new SrsRtcPlayStream(this, _srs_context->get_id()); uint32_t video_ssrc = 0; uint32_t audio_ssrc = 0; @@ -2037,11 +2037,11 @@ srs_error_t SrsRtcConnection::start_play() } if ((err = player_->initialize(video_ssrc, audio_ssrc, video_payload_type, audio_payload_type)) != srs_success) { - return srs_error_wrap(err, "SrsRtcPlayer init"); + return srs_error_wrap(err, "SrsRtcPlayStream init"); } if ((err = player_->start()) != srs_success) { - return srs_error_wrap(err, "start SrsRtcPlayer"); + return srs_error_wrap(err, "start SrsRtcPlayStream"); } return err; @@ -2056,7 +2056,7 @@ srs_error_t SrsRtcConnection::start_publish() if (publisher_) { return err; } - publisher_ = new SrsRtcPublisher(this); + publisher_ = new SrsRtcPublishStream(this); // Request PLI for exists players? //publisher_->request_keyframe(); diff --git a/trunk/src/app/srs_app_rtc_conn.hpp b/trunk/src/app/srs_app_rtc_conn.hpp index 53f91348b..d20958347 100644 --- a/trunk/src/app/srs_app_rtc_conn.hpp +++ b/trunk/src/app/srs_app_rtc_conn.hpp @@ -182,7 +182,8 @@ public: virtual ~SrsRtcOutgoingInfo(); }; -class SrsRtcPlayer : virtual public ISrsCoroutineHandler, virtual public ISrsReloadHandler +// A RTC play stream, client pull and play stream from SRS. +class SrsRtcPlayStream : virtual public ISrsCoroutineHandler, virtual public ISrsReloadHandler { protected: SrsContextId _parent_cid; @@ -208,8 +209,8 @@ private: // Whether enabled nack. bool nack_enabled_; public: - SrsRtcPlayer(SrsRtcConnection* s, SrsContextId parent_cid); - virtual ~SrsRtcPlayer(); + SrsRtcPlayStream(SrsRtcConnection* s, SrsContextId parent_cid); + virtual ~SrsRtcPlayStream(); public: srs_error_t initialize(uint32_t vssrc, uint32_t assrc, uint16_t v_pt, uint16_t a_pt); // interface ISrsReloadHandler @@ -242,7 +243,8 @@ private: srs_error_t on_rtcp_rr(char* data, int nb_data); }; -class SrsRtcPublisher : virtual public ISrsHourGlass, virtual public ISrsRtpPacketDecodeHandler, virtual public ISrsRtcPublishStream +// A RTC publish stream, client push and publish stream to SRS. +class SrsRtcPublishStream : virtual public ISrsHourGlass, virtual public ISrsRtpPacketDecodeHandler, virtual public ISrsRtcPublishStream { private: SrsHourGlass* report_timer; @@ -275,8 +277,8 @@ private: SrsRtcpTWCC rtcp_twcc_; SrsRtpExtensionTypes extension_types_; public: - SrsRtcPublisher(SrsRtcConnection* session); - virtual ~SrsRtcPublisher(); + SrsRtcPublishStream(SrsRtcConnection* session); + virtual ~SrsRtcPublishStream(); public: srs_error_t initialize(uint32_t vssrc, uint32_t assrc, int twcc_id, SrsRequest* req); private: @@ -317,16 +319,16 @@ private: class SrsRtcConnection { friend class SrsSecurityTransport; - friend class SrsRtcPlayer; - friend class SrsRtcPublisher; + friend class SrsRtcPlayStream; + friend class SrsRtcPublishStream; public: bool disposing_; private: SrsRtcServer* server_; SrsRtcConnectionStateType state_; SrsSecurityTransport* transport_; - SrsRtcPlayer* player_; - SrsRtcPublisher* publisher_; + SrsRtcPlayStream* player_; + SrsRtcPublishStream* publisher_; bool is_publisher_; private: SrsUdpMuxSocket* sendonly_skt; @@ -402,13 +404,13 @@ public: virtual ~ISrsRtcHijacker(); public: // When start publisher by RTC. - virtual srs_error_t on_start_publish(SrsRtcConnection* session, SrsRtcPublisher* publisher, SrsRequest* req) = 0; + virtual srs_error_t on_start_publish(SrsRtcConnection* session, SrsRtcPublishStream* publisher, SrsRequest* req) = 0; // When got RTP plaintext packet. - virtual srs_error_t on_rtp_packet(SrsRtcConnection* session, SrsRtcPublisher* publisher, SrsRequest* req, SrsRtpPacket2* pkt) = 0; + virtual srs_error_t on_rtp_packet(SrsRtcConnection* session, SrsRtcPublishStream* publisher, SrsRequest* req, SrsRtpPacket2* pkt) = 0; // When start player by RTC. - virtual srs_error_t on_start_play(SrsRtcConnection* session, SrsRtcPlayer* player, SrsRequest* req) = 0; + virtual srs_error_t on_start_play(SrsRtcConnection* session, SrsRtcPlayStream* player, SrsRequest* req) = 0; // When start consuming for player for RTC. - virtual srs_error_t on_start_consume(SrsRtcConnection* session, SrsRtcPlayer* player, SrsRequest* req, SrsRtcConsumer* consumer) = 0; + virtual srs_error_t on_start_consume(SrsRtcConnection* session, SrsRtcPlayStream* player, SrsRequest* req, SrsRtcConsumer* consumer) = 0; }; extern ISrsRtcHijacker* _srs_rtc_hijacker; diff --git a/trunk/src/app/srs_app_rtc_source.hpp b/trunk/src/app/srs_app_rtc_source.hpp index e7753b8f0..f66f69ea6 100644 --- a/trunk/src/app/srs_app_rtc_source.hpp +++ b/trunk/src/app/srs_app_rtc_source.hpp @@ -103,6 +103,7 @@ public: virtual void request_keyframe() = 0; }; +// A Source is a stream, to publish and to play with, binding to SrsRtcPublishStream and SrsRtcPlayStream. class SrsRtcSource { private: