| 53 | } |
| 54 | |
| 55 | func (r *AVRingReader) readFrame() (err error) { |
| 56 | err = r.ReadNext() |
| 57 | if err != nil { |
| 58 | return err |
| 59 | } |
| 60 | // 超过一半的缓冲区大小,说明Reader太慢,需要丢帧 |
| 61 | if r.mode != SUBMODE_BUFFER && r.State == READSTATE_NORMAL && r.Track.LastValue.Sequence-r.Value.Sequence > uint32(r.Track.Size/2) && r.Track.IDRing != nil && r.Track.IDRing.Value.Sequence > r.Value.Sequence { |
| 62 | r.Warn("reader too slow", zap.Uint32("lastSeq", r.Track.LastValue.Sequence), zap.Uint32("seq", r.Value.Sequence)) |
| 63 | return r.Read(r.Track.IDRing) |
| 64 | } |
| 65 | return |
| 66 | } |
| 67 | |
| 68 | func (r *AVRingReader) ReadFrame(mode int) (err error) { |
| 69 | r.mode = mode |