mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2026-06-21 16:32:22 +08:00
非rtsp协议减少一帧延时
This commit is contained in:
@@ -342,7 +342,8 @@ public:
|
||||
virtual ~PacketCache() = default;
|
||||
|
||||
void inputPacket(uint64_t stamp, bool is_video, std::shared_ptr<packet> pkt, bool key_pos) {
|
||||
if (_policy.isFlushAble(is_video, key_pos, stamp, _cache->size())) {
|
||||
bool flush = flushImmediatelyWhenCloseMerge();
|
||||
if (!flush && _policy.isFlushAble(is_video, key_pos, stamp, _cache->size())) {
|
||||
flushAll();
|
||||
}
|
||||
|
||||
@@ -351,6 +352,10 @@ public:
|
||||
if (key_pos) {
|
||||
_key_pos = key_pos;
|
||||
}
|
||||
|
||||
if (flush) {
|
||||
flushAll();
|
||||
}
|
||||
}
|
||||
|
||||
virtual void clearCache() {
|
||||
@@ -369,6 +374,12 @@ private:
|
||||
_key_pos = false;
|
||||
}
|
||||
|
||||
bool flushImmediatelyWhenCloseMerge() {
|
||||
//一般的协议关闭合并写时,立即刷新缓存,这样可以减少一帧的延时,但是rtp例外,请看相应的模板特例化函数
|
||||
GET_CONFIG(int, mergeWriteMS, General::kMergeWriteMS);
|
||||
return mergeWriteMS <= 0;
|
||||
}
|
||||
|
||||
private:
|
||||
bool _key_pos = false;
|
||||
policy _policy;
|
||||
|
||||
Reference in New Issue
Block a user