mirror of https://bitbucket.org/ausocean/av.git
Session.inChunkSize, outChunkSize, nBytesIn, nBytesInSent, serverBW, clientBW and clientBW2 now all uint32 to avoid needless conversions.
This commit is contained in:
parent
b680e3e164
commit
e778488aba
|
@ -205,7 +205,7 @@ func (pkt *packet) readFrom(s *Session) error {
|
|||
pkt.resize(pkt.bodySize, (hbuf[0]&0xc0)>>6)
|
||||
}
|
||||
|
||||
toRead := int32(pkt.bodySize - pkt.bytesRead)
|
||||
toRead := pkt.bodySize - pkt.bytesRead
|
||||
chunkSize := s.inChunkSize
|
||||
|
||||
if toRead < chunkSize {
|
||||
|
@ -376,12 +376,12 @@ func (pkt *packet) writeTo(s *Session, queue bool) error {
|
|||
if ts > 0xffffff {
|
||||
tmp = 0xffffff
|
||||
}
|
||||
amf.EncodeInt24(headBytes[headerIdx:], int32(tmp))
|
||||
amf.EncodeInt24(headBytes[headerIdx:], tmp)
|
||||
headerIdx += 3 // 24bits
|
||||
}
|
||||
|
||||
if headerSizes[pkt.headerType] > 4 {
|
||||
amf.EncodeInt24(headBytes[headerIdx:], int32(pkt.bodySize))
|
||||
amf.EncodeInt24(headBytes[headerIdx:], pkt.bodySize)
|
||||
headerIdx += 3 // 24bits
|
||||
headBytes[headerIdx] = pkt.packetType
|
||||
headerIdx++
|
||||
|
@ -393,7 +393,7 @@ func (pkt *packet) writeTo(s *Session, queue bool) error {
|
|||
}
|
||||
|
||||
if ts >= 0xffffff {
|
||||
amf.EncodeInt32(headBytes[headerIdx:], int32(ts))
|
||||
amf.EncodeInt32(headBytes[headerIdx:], ts)
|
||||
headerIdx += 4 // 32bits
|
||||
}
|
||||
|
||||
|
@ -463,7 +463,7 @@ func (pkt *packet) writeTo(s *Session, queue bool) error {
|
|||
}
|
||||
if ts >= 0xffffff {
|
||||
extendedTimestamp := headBytes[origIdx+1+cSize:]
|
||||
amf.EncodeInt32(extendedTimestamp[:4], int32(ts))
|
||||
amf.EncodeInt32(extendedTimestamp[:4], ts)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
10
rtmp/rtmp.go
10
rtmp/rtmp.go
|
@ -249,18 +249,18 @@ func handlePacket(s *Session, pkt *packet) error {
|
|||
|
||||
switch pkt.packetType {
|
||||
case packetTypeChunkSize:
|
||||
s.inChunkSize = int32(amf.DecodeInt32(pkt.body[:4]))
|
||||
s.inChunkSize = amf.DecodeInt32(pkt.body[:4])
|
||||
|
||||
case packetTypeBytesReadReport:
|
||||
s.serverBW = int32(amf.DecodeInt32(pkt.body[:4]))
|
||||
s.serverBW = amf.DecodeInt32(pkt.body[:4])
|
||||
|
||||
case packetTypeServerBW:
|
||||
s.serverBW = int32(amf.DecodeInt32(pkt.body[:4]))
|
||||
s.serverBW = amf.DecodeInt32(pkt.body[:4])
|
||||
|
||||
case packetTypeClientBW:
|
||||
s.clientBW = int32(amf.DecodeInt32(pkt.body[:4]))
|
||||
s.clientBW = amf.DecodeInt32(pkt.body[:4])
|
||||
if pkt.bodySize > 4 {
|
||||
s.clientBW2 = pkt.body[4]
|
||||
s.clientBW2 = uint32(pkt.body[4])
|
||||
} else {
|
||||
s.clientBW2 = 0xff
|
||||
}
|
||||
|
|
|
@ -44,14 +44,14 @@ import (
|
|||
// Session holds the state for an RTMP session.
|
||||
type Session struct {
|
||||
url string
|
||||
inChunkSize int32
|
||||
outChunkSize int32
|
||||
nBytesIn int32
|
||||
nBytesInSent int32
|
||||
inChunkSize uint32
|
||||
outChunkSize uint32
|
||||
nBytesIn uint32
|
||||
nBytesInSent uint32
|
||||
streamID int32
|
||||
serverBW int32
|
||||
clientBW int32
|
||||
clientBW2 uint8
|
||||
serverBW uint32
|
||||
clientBW uint32
|
||||
clientBW2 uint32
|
||||
isPlaying bool
|
||||
numInvokes int32
|
||||
methodCalls []method
|
||||
|
@ -207,7 +207,7 @@ func (s *Session) read(buf []byte) (int, error) {
|
|||
s.log(DebugLevel, pkg+"read failed", "error", err.Error())
|
||||
return 0, err
|
||||
}
|
||||
s.nBytesIn += int32(n)
|
||||
s.nBytesIn += uint32(n)
|
||||
if s.nBytesIn > (s.nBytesInSent + s.clientBW/10) {
|
||||
err := sendBytesReceived(s)
|
||||
if err != nil {
|
||||
|
|
Loading…
Reference in New Issue