ringbuffer: force size to be a power of 2

otherwise buffer is used partially when writeIndex overflows.
This commit is contained in:
aler9
2022-07-05 19:25:53 +02:00
parent ef900359ce
commit 18005a9cde
6 changed files with 41 additions and 18 deletions

View File

@@ -824,7 +824,7 @@ func (ss *ServerSession) handleRequest(sc *ServerConn, req *base.Request) (*base
// inside the callback.
if ss.state != ServerSessionStatePlay &&
*ss.setuppedTransport != TransportUDPMulticast {
ss.writeBuffer = ringbuffer.New(uint64(ss.s.WriteBufferCount))
ss.writeBuffer, _ = ringbuffer.New(uint64(ss.s.WriteBufferCount))
}
res, err := sc.s.Handler.(ServerHandlerOnPlay).OnPlay(&ServerHandlerOnPlayCtx{
@@ -956,7 +956,7 @@ func (ss *ServerSession) handleRequest(sc *ServerConn, req *base.Request) (*base
// when recording, writeBuffer is only used to send RTCP receiver reports,
// that are much smaller than RTP packets and are sent at a fixed interval.
// decrease RAM consumption by allocating less buffers.
ss.writeBuffer = ringbuffer.New(uint64(8))
ss.writeBuffer, _ = ringbuffer.New(uint64(8))
res, err := ss.s.Handler.(ServerHandlerOnRecord).OnRecord(&ServerHandlerOnRecordCtx{
Session: ss,