mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
Refactor RTC, create source once
This commit is contained in:
parent
cef1ba9385
commit
e4329fd1a0
3 changed files with 31 additions and 20 deletions
|
@ -46,7 +46,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<label></label>
|
<label></label>
|
||||||
<video id="rtc_media_player" controls autoplay></video>
|
<video id="rtc_media_player" autoplay muted></video>
|
||||||
|
|
||||||
<footer>
|
<footer>
|
||||||
<p></p>
|
<p></p>
|
||||||
|
|
|
@ -2145,29 +2145,20 @@ srs_error_t SrsRtcPublisher::notify(int type, srs_utime_t interval, srs_utime_t
|
||||||
|
|
||||||
SrsRtcSession::SrsRtcSession(SrsRtcServer* s, SrsRequest* r, const std::string& un, int context_id)
|
SrsRtcSession::SrsRtcSession(SrsRtcServer* s, SrsRequest* r, const std::string& un, int context_id)
|
||||||
{
|
{
|
||||||
rtc_server = s;
|
|
||||||
session_state = INIT;
|
|
||||||
|
|
||||||
dtls_session = new SrsDtlsSession(this);
|
|
||||||
// TODO: FIXME: Check error.
|
|
||||||
dtls_session->initialize(req);
|
|
||||||
|
|
||||||
sender = NULL;
|
|
||||||
|
|
||||||
username = un;
|
username = un;
|
||||||
|
|
||||||
last_stun_time = srs_get_system_time();
|
|
||||||
|
|
||||||
req = r->copy();
|
req = r->copy();
|
||||||
source = NULL;
|
|
||||||
|
|
||||||
cid = context_id;
|
cid = context_id;
|
||||||
encrypt = true;
|
encrypt = true;
|
||||||
|
|
||||||
// TODO: FIXME: Support reload.
|
source = NULL;
|
||||||
sessionStunTimeout = _srs_config->get_rtc_stun_timeout(req->vhost);
|
|
||||||
|
|
||||||
publisher = NULL;
|
publisher = NULL;
|
||||||
|
sender = NULL;
|
||||||
|
rtc_server = s;
|
||||||
|
dtls_session = new SrsDtlsSession(this);
|
||||||
|
|
||||||
|
session_state = INIT;
|
||||||
|
last_stun_time = 0;
|
||||||
|
sessionStunTimeout = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
SrsRtcSession::~SrsRtcSession()
|
SrsRtcSession::~SrsRtcSession()
|
||||||
|
@ -2188,6 +2179,21 @@ void SrsRtcSession::switch_to_context()
|
||||||
_srs_context->set_id(cid);
|
_srs_context->set_id(cid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
srs_error_t SrsRtcSession::initialize()
|
||||||
|
{
|
||||||
|
srs_error_t err = srs_success;
|
||||||
|
|
||||||
|
if ((err = dtls_session->initialize(req)) != srs_success) {
|
||||||
|
return srs_error_wrap(err, "init");
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: FIXME: Support reload.
|
||||||
|
sessionStunTimeout = _srs_config->get_rtc_stun_timeout(req->vhost);
|
||||||
|
last_stun_time = srs_get_system_time();
|
||||||
|
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
srs_error_t SrsRtcSession::on_stun(SrsUdpMuxSocket* skt, SrsStunPacket* stun_req)
|
srs_error_t SrsRtcSession::on_stun(SrsUdpMuxSocket* skt, SrsStunPacket* stun_req)
|
||||||
{
|
{
|
||||||
srs_error_t err = srs_success;
|
srs_error_t err = srs_success;
|
||||||
|
@ -3110,7 +3116,13 @@ srs_error_t SrsRtcServer::create_rtc_session(
|
||||||
|
|
||||||
int cid = _srs_context->get_id();
|
int cid = _srs_context->get_id();
|
||||||
SrsRtcSession* session = new SrsRtcSession(this, req, username, cid);
|
SrsRtcSession* session = new SrsRtcSession(this, req, username, cid);
|
||||||
|
if ((err = session->initialize()) != srs_success) {
|
||||||
|
srs_freep(session);
|
||||||
|
return srs_error_wrap(err, "init");
|
||||||
|
}
|
||||||
|
|
||||||
map_username_session.insert(make_pair(username, session));
|
map_username_session.insert(make_pair(username, session));
|
||||||
|
*psession = session;
|
||||||
|
|
||||||
local_sdp.set_ice_ufrag(local_ufrag);
|
local_sdp.set_ice_ufrag(local_ufrag);
|
||||||
local_sdp.set_ice_pwd(local_pwd);
|
local_sdp.set_ice_pwd(local_pwd);
|
||||||
|
@ -3132,8 +3144,6 @@ srs_error_t SrsRtcServer::create_rtc_session(
|
||||||
|
|
||||||
session->set_session_state(WAITING_STUN);
|
session->set_session_state(WAITING_STUN);
|
||||||
|
|
||||||
*psession = session;
|
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -354,6 +354,7 @@ public:
|
||||||
|
|
||||||
void switch_to_context();
|
void switch_to_context();
|
||||||
public:
|
public:
|
||||||
|
srs_error_t initialize();
|
||||||
srs_error_t on_stun(SrsUdpMuxSocket* skt, SrsStunPacket* stun_req);
|
srs_error_t on_stun(SrsUdpMuxSocket* skt, SrsStunPacket* stun_req);
|
||||||
srs_error_t on_dtls(SrsUdpMuxSocket* skt);
|
srs_error_t on_dtls(SrsUdpMuxSocket* skt);
|
||||||
srs_error_t on_rtcp(SrsUdpMuxSocket* skt);
|
srs_error_t on_rtcp(SrsUdpMuxSocket* skt);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue