Commit 1cc3add9 by xiongziliang

提升按需转协议性能与体验

parent 0f543518
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
*/ */
#include <math.h> #include <math.h>
#include "Common/config.h"
#include "MultiMediaSourceMuxer.h" #include "MultiMediaSourceMuxer.h"
namespace mediakit { namespace mediakit {
...@@ -450,11 +451,21 @@ void MultiMediaSourceMuxer::inputFrame(const Frame::Ptr &frame_in) { ...@@ -450,11 +451,21 @@ void MultiMediaSourceMuxer::inputFrame(const Frame::Ptr &frame_in) {
} }
bool MultiMediaSourceMuxer::isEnabled(){ bool MultiMediaSourceMuxer::isEnabled(){
GET_CONFIG(uint32_t, stream_none_reader_delay_ms, General::kStreamNoneReaderDelayMS);
if (!_is_enable || _last_check.elapsedTime() > stream_none_reader_delay_ms) {
//无人观看时,每次检查是否真的无人观看
//有人观看时,则延迟一定时间检查一遍是否无人观看了(节省性能)
#if defined(ENABLE_RTPPROXY) #if defined(ENABLE_RTPPROXY)
return (_muxer->isEnabled() || _rtp_sender); _is_enable = (_muxer->isEnabled() || _rtp_sender);
#else #else
return _muxer->isEnabled(); _is_enable = _muxer->isEnabled();
#endif //ENABLE_RTPPROXY #endif //ENABLE_RTPPROXY
if (_is_enable) {
//无人观看时,不刷新计时器,因为无人观看时每次都会检查一遍,所以刷新计数器无意义且浪费cpu
_last_check.resetTime();
}
}
return _is_enable;
} }
......
...@@ -183,6 +183,8 @@ public: ...@@ -183,6 +183,8 @@ public:
void onAllTrackReady() override; void onAllTrackReady() override;
private: private:
bool _is_enable = false;
Ticker _last_check;
Stamp _stamp[2]; Stamp _stamp[2];
MultiMuxerPrivate::Ptr _muxer; MultiMuxerPrivate::Ptr _muxer;
std::weak_ptr<MultiMuxerPrivate::Listener> _track_listener; std::weak_ptr<MultiMuxerPrivate::Listener> _track_listener;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论