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>
|
||||
|
||||
<label></label>
|
||||
<video id="rtc_media_player" controls autoplay></video>
|
||||
<video id="rtc_media_player" autoplay muted></video>
|
||||
|
||||
<footer>
|
||||
<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)
|
||||
{
|
||||
rtc_server = s;
|
||||
session_state = INIT;
|
||||
|
||||
dtls_session = new SrsDtlsSession(this);
|
||||
// TODO: FIXME: Check error.
|
||||
dtls_session->initialize(req);
|
||||
|
||||
sender = NULL;
|
||||
|
||||
username = un;
|
||||
|
||||
last_stun_time = srs_get_system_time();
|
||||
|
||||
req = r->copy();
|
||||
source = NULL;
|
||||
|
||||
cid = context_id;
|
||||
encrypt = true;
|
||||
|
||||
// TODO: FIXME: Support reload.
|
||||
sessionStunTimeout = _srs_config->get_rtc_stun_timeout(req->vhost);
|
||||
|
||||
source = NULL;
|
||||
publisher = NULL;
|
||||
sender = NULL;
|
||||
rtc_server = s;
|
||||
dtls_session = new SrsDtlsSession(this);
|
||||
|
||||
session_state = INIT;
|
||||
last_stun_time = 0;
|
||||
sessionStunTimeout = 0;
|
||||
}
|
||||
|
||||
SrsRtcSession::~SrsRtcSession()
|
||||
|
@ -2188,6 +2179,21 @@ void SrsRtcSession::switch_to_context()
|
|||
_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 err = srs_success;
|
||||
|
@ -3110,7 +3116,13 @@ srs_error_t SrsRtcServer::create_rtc_session(
|
|||
|
||||
int cid = _srs_context->get_id();
|
||||
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));
|
||||
*psession = session;
|
||||
|
||||
local_sdp.set_ice_ufrag(local_ufrag);
|
||||
local_sdp.set_ice_pwd(local_pwd);
|
||||
|
@ -3132,8 +3144,6 @@ srs_error_t SrsRtcServer::create_rtc_session(
|
|||
|
||||
session->set_session_state(WAITING_STUN);
|
||||
|
||||
*psession = session;
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
|
|
@ -354,6 +354,7 @@ public:
|
|||
|
||||
void switch_to_context();
|
||||
public:
|
||||
srs_error_t initialize();
|
||||
srs_error_t on_stun(SrsUdpMuxSocket* skt, SrsStunPacket* stun_req);
|
||||
srs_error_t on_dtls(SrsUdpMuxSocket* skt);
|
||||
srs_error_t on_rtcp(SrsUdpMuxSocket* skt);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue