mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
Refine shared fast timer. 4.0.105
This commit is contained in:
parent
f370259c9d
commit
2ad24b2313
5 changed files with 186 additions and 122 deletions
|
@ -66,6 +66,7 @@ class SrsPithyPrint;
|
|||
class SrsStatistic;
|
||||
class SrsRtcUserConfig;
|
||||
class SrsRtcSendTrack;
|
||||
class SrsRtcPublishStream;
|
||||
|
||||
const uint8_t kSR = 200;
|
||||
const uint8_t kRR = 201;
|
||||
|
@ -213,7 +214,7 @@ public:
|
|||
|
||||
// A RTC play stream, client pull and play stream from SRS.
|
||||
class SrsRtcPlayStream : public ISrsCoroutineHandler, public ISrsReloadHandler
|
||||
, public ISrsFastTimer, public ISrsRtcPLIWorkerHandler, public ISrsRtcStreamChangeCallback
|
||||
, public ISrsRtcPLIWorkerHandler, public ISrsRtcStreamChangeCallback
|
||||
{
|
||||
private:
|
||||
SrsContextId cid_;
|
||||
|
@ -269,9 +270,6 @@ private:
|
|||
public:
|
||||
// Directly set the status of track, generally for init to set the default value.
|
||||
void set_all_tracks_status(bool status);
|
||||
// interface ISrsFastTimer
|
||||
private:
|
||||
srs_error_t on_timer(srs_utime_t interval);
|
||||
public:
|
||||
srs_error_t on_rtcp(SrsRtcpCommon* rtcp);
|
||||
private:
|
||||
|
@ -285,10 +283,41 @@ public:
|
|||
virtual srs_error_t do_request_keyframe(uint32_t ssrc, SrsContextId cid);
|
||||
};
|
||||
|
||||
// A fast timer for publish stream, for RTCP feedback.
|
||||
class SrsRtcPublishRtcpTimer : public ISrsFastTimer
|
||||
{
|
||||
private:
|
||||
SrsRtcPublishStream* p_;
|
||||
public:
|
||||
SrsRtcPublishRtcpTimer(SrsRtcPublishStream* p);
|
||||
virtual ~SrsRtcPublishRtcpTimer();
|
||||
// interface ISrsFastTimer
|
||||
private:
|
||||
srs_error_t on_timer(srs_utime_t interval);
|
||||
};
|
||||
|
||||
// A fast timer for publish stream, for TWCC feedback.
|
||||
class SrsRtcPublishTwccTimer : public ISrsFastTimer
|
||||
{
|
||||
private:
|
||||
SrsRtcPublishStream* p_;
|
||||
public:
|
||||
SrsRtcPublishTwccTimer(SrsRtcPublishStream* p);
|
||||
virtual ~SrsRtcPublishTwccTimer();
|
||||
// interface ISrsFastTimer
|
||||
private:
|
||||
srs_error_t on_timer(srs_utime_t interval);
|
||||
};
|
||||
|
||||
// A RTC publish stream, client push and publish stream to SRS.
|
||||
class SrsRtcPublishStream : public ISrsFastTimer, public ISrsRtpPacketDecodeHandler
|
||||
class SrsRtcPublishStream : public ISrsRtpPacketDecodeHandler
|
||||
, public ISrsRtcPublishStream, public ISrsRtcPLIWorkerHandler
|
||||
{
|
||||
private:
|
||||
friend class SrsRtcPublishRtcpTimer;
|
||||
friend class SrsRtcPublishTwccTimer;
|
||||
SrsRtcPublishRtcpTimer* timer_rtcp_;
|
||||
SrsRtcPublishTwccTimer* timer_twcc_;
|
||||
private:
|
||||
SrsContextId cid_;
|
||||
uint64_t nn_audio_frames;
|
||||
|
@ -353,9 +382,6 @@ private:
|
|||
public:
|
||||
void request_keyframe(uint32_t ssrc);
|
||||
virtual srs_error_t do_request_keyframe(uint32_t ssrc, SrsContextId cid);
|
||||
// interface ISrsFastTimer
|
||||
private:
|
||||
srs_error_t on_timer(srs_utime_t interval);
|
||||
public:
|
||||
void simulate_nack_drop(int nn);
|
||||
private:
|
||||
|
@ -396,15 +422,31 @@ public:
|
|||
virtual srs_error_t on_dtls_done() = 0;
|
||||
};
|
||||
|
||||
// A fast timer for conntion, for NACK feedback.
|
||||
class SrsRtcConnectionNackTimer : public ISrsFastTimer
|
||||
{
|
||||
private:
|
||||
SrsRtcConnection* p_;
|
||||
public:
|
||||
SrsRtcConnectionNackTimer(SrsRtcConnection* p);
|
||||
virtual ~SrsRtcConnectionNackTimer();
|
||||
// interface ISrsFastTimer
|
||||
private:
|
||||
srs_error_t on_timer(srs_utime_t interval);
|
||||
};
|
||||
|
||||
// A RTC Peer Connection, SDP level object.
|
||||
//
|
||||
// For performance, we use non-virtual public from resource,
|
||||
// see https://stackoverflow.com/questions/3747066/c-cannot-convert-from-base-a-to-derived-type-b-via-virtual-base-a
|
||||
class SrsRtcConnection : public ISrsResource, public ISrsFastTimer, public ISrsDisposingHandler
|
||||
class SrsRtcConnection : public ISrsResource, public ISrsDisposingHandler
|
||||
{
|
||||
friend class SrsSecurityTransport;
|
||||
friend class SrsRtcPlayStream;
|
||||
friend class SrsRtcPublishStream;
|
||||
private:
|
||||
friend class SrsRtcConnectionNackTimer;
|
||||
SrsRtcConnectionNackTimer* timer_nack_;
|
||||
public:
|
||||
bool disposing_;
|
||||
SrsRtcConnectionStatistic* stat_;
|
||||
|
@ -513,9 +555,6 @@ public:
|
|||
bool is_alive();
|
||||
void alive();
|
||||
void update_sendonly_socket(SrsUdpMuxSocket* skt);
|
||||
// interface ISrsFastTimer
|
||||
private:
|
||||
srs_error_t on_timer(srs_utime_t interval);
|
||||
public:
|
||||
// send rtcp
|
||||
srs_error_t send_rtcp(char *data, int nb_data);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue