rtp级联(ps/ts/es)新增支持gop缓存功能 (#2395)

该修改主要解决rtp级联(调用startSendRtp接口)未做gop缓存导致上级无法秒开的问题。
同时通过RingBuffer对象线程隔离的特性,实现了在断连续推场景下归属线程切换导致的线程安全问题。
用户如未使用rtp级联功能,请修改配置文件关闭GOP缓存(rtp_proxy.gop_cache=0)以便节省内存。

---------

Co-authored-by: 夏楚 <771730766@qq.com>
This commit is contained in:
Dw9
2023-04-17 12:19:24 +08:00
committed by GitHub
parent 6841ad3306
commit 978143c86d
10 changed files with 115 additions and 84 deletions

View File

@@ -63,6 +63,7 @@ bool MediaSink::addTrack(const Track::Ptr &track_in) {
void MediaSink::resetTracks() {
_all_track_ready = false;
_have_video = false;
_track_map.clear();
_track_ready_callback.clear();
_ticker.resetTime();
@@ -186,6 +187,7 @@ void MediaSink::onAllTrackReady_l() {
}
onAllTrackReady();
_all_track_ready = true;
_have_video = (bool)getTrack(TrackVideo);
}
vector<Track::Ptr> MediaSink::getTracks(bool ready) const{
@@ -292,6 +294,10 @@ void MediaSink::enableMuteAudio(bool flag) {
_add_mute_audio = flag;
}
bool MediaSink::haveVideo() const {
return _have_video;
}
///////////////////////////DemuxerSink//////////////////////////////
void MediaSinkDelegate::setTrackListener(TrackListener *listener) {