[opt] http-api: fps字段获取后不要清空,还能再次获取

pull/358/head
q191201771 6 months ago
parent 28d9c3e4c7
commit 23ad4b4fde

@ -112,25 +112,36 @@ func Session2StatPull(session ISession) StatPull {
//
// @note result s.Fps is not ordered
func (s *StatGroup) GetFpsFrom(p *PeriodRecord, nowUnixSec int64) {
// s.Fps 是输出p 是输入
// p.nRecord 是有数据的元素个数,但是如果 nowUnixSec 和元素的 UnixSec 相等,那么这个元素的数据还没有完全记录,这个元素需要被忽略
// 当前的实现,把 p.nRecord 和 元素的 UnixSec 重置了也就是被GetFpsFrom获取过的元素下次将不被获取
//
// 新的要解决的问题:
// 1 获取过的,还可以再次获取
// 2 数据是排序好的
// 3 增加字段最近1秒5秒10秒等时间段的fps
// 4 考虑和bitrate等字段语义统一详细的数据可以是detail样式的字段
if s.Fps == nil || cap(s.Fps) < p.nRecord {
s.Fps = make([]RecordPerSec, p.nRecord)
} else {
s.Fps = s.Fps[0:p.nRecord]
}
nRecord := 0
p.nRecord = 0
for idx, record := range p.ringBuf {
//p.nRecord = 0
for _, record := range p.ringBuf {
if record.UnixSec == 0 {
continue
}
if record.UnixSec == nowUnixSec {
// value at nowUnixSec not completely recorded
p.nRecord++
//p.nRecord++
continue
}
s.Fps[nRecord] = record
nRecord++
p.ringBuf[idx].UnixSec = 0
//p.ringBuf[idx].UnixSec = 0
}
s.Fps = s.Fps[0:nRecord]
}

Loading…
Cancel
Save