@@ -75,6 +75,17 @@ class SrsNtp
75
75
static uint64_t kMagicNtpFractionalUnit ;
76
76
};
77
77
78
+ // When RTC stream publish and re-publish.
79
+ class ISrsRtcStreamChangeCallback
80
+ {
81
+ public:
82
+ ISrsRtcStreamChangeCallback ();
83
+ virtual ~ISrsRtcStreamChangeCallback ();
84
+ public:
85
+ virtual void on_stream_change (SrsRtcStreamDescription* desc) = 0;
86
+ };
87
+
88
+ // The RTC stream consumer, consume packets from RTC stream source.
78
89
class SrsRtcConsumer
79
90
{
80
91
private:
@@ -87,6 +98,9 @@ class SrsRtcConsumer
87
98
srs_cond_t mw_wait;
88
99
bool mw_waiting;
89
100
int mw_min_msgs;
101
+ private:
102
+ // The callback for stream change event.
103
+ ISrsRtcStreamChangeCallback* handler_;
90
104
public:
91
105
SrsRtcConsumer (SrsRtcStream* s);
92
106
virtual ~SrsRtcConsumer ();
@@ -100,6 +114,9 @@ class SrsRtcConsumer
100
114
virtual srs_error_t dump_packet (SrsRtpPacket2** ppkt);
101
115
// Wait for at-least some messages incoming in queue.
102
116
virtual void wait (int nb_msgs);
117
+ public:
118
+ void set_handler (ISrsRtcStreamChangeCallback* h) { handler_ = h; } // SrsRtcConsumer::set_handler()
119
+ void on_stream_change (SrsRtcStreamDescription* desc);
103
120
};
104
121
105
122
class SrsRtcStreamManager
@@ -154,7 +171,7 @@ class SrsRtcStream
154
171
// For publish, it's the publish client id.
155
172
// For edge, it's the edge ingest id.
156
173
// when source id changed, for example, the edge reconnect,
157
- // invoke the on_source_id_changed () to let all clients know.
174
+ // invoke the on_source_changed () to let all clients know.
158
175
SrsContextId _source_id;
159
176
// previous source id.
160
177
SrsContextId _pre_source_id;
@@ -180,8 +197,10 @@ class SrsRtcStream
180
197
virtual srs_error_t initialize (SrsRequest* r);
181
198
// Update the authentication information in request.
182
199
virtual void update_auth (SrsRequest* r);
183
- // The source id changed.
184
- virtual srs_error_t on_source_id_changed (SrsContextId id);
200
+ private:
201
+ // The stream source changed.
202
+ virtual srs_error_t on_source_changed ();
203
+ public:
185
204
// Get current source id.
186
205
virtual SrsContextId source_id ();
187
206
virtual SrsContextId pre_source_id ();
0 commit comments