修复rtmp内存池缓存失败问题

This commit is contained in:
yangjie
2023-11-26 20:28:14 +08:00
parent f932284313
commit e84df324bf
7 changed files with 139 additions and 43 deletions

View File

@@ -1,5 +1,7 @@
package stream
import "github.com/yangjiechina/avformat/utils"
type RingBuffer interface {
IsEmpty() bool
@@ -19,6 +21,7 @@ type RingBuffer interface {
}
func NewRingBuffer(capacity int) RingBuffer {
utils.Assert(capacity > 0)
r := &ringBuffer{
data: make([]interface{}, capacity),
head: 0,
@@ -71,7 +74,7 @@ func (r *ringBuffer) Head() interface{} {
}
func (r *ringBuffer) Tail() interface{} {
return r.data[r.tail]
return r.data[utils.MaxInt(0, r.tail-1)]
}
func (r *ringBuffer) Size() int {
@@ -80,8 +83,8 @@ func (r *ringBuffer) Size() int {
func (r *ringBuffer) All() ([]interface{}, []interface{}) {
if r.head < r.tail {
return r.data[r.head:r.tail], nil
} else {
return r.data[r.head:], r.data[:r.tail]
} else {
return r.data[r.head:], nil
}
}