mirror of https://bitbucket.org/ausocean/av.git
codec/h265: removed unnecessary allocation in handle fragmentation
This commit is contained in:
parent
abd41d9f01
commit
0567a81757
|
@ -63,7 +63,8 @@ type Lexer struct {
|
||||||
func NewLexer(donl bool) *Lexer {
|
func NewLexer(donl bool) *Lexer {
|
||||||
return &Lexer{
|
return &Lexer{
|
||||||
donl: donl,
|
donl: donl,
|
||||||
buf: bytes.NewBuffer(make([]byte, 0, maxAUSize))}
|
buf: bytes.NewBuffer(make([]byte, 0, maxAUSize)),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Lex continually reads RTP packets from the io.Reader src and lexes into
|
// Lex continually reads RTP packets from the io.Reader src and lexes into
|
||||||
|
@ -150,21 +151,25 @@ func (l *Lexer) handleFragmentation(d []byte) {
|
||||||
start := d[2]&0x80 != 0
|
start := d[2]&0x80 != 0
|
||||||
end := d[2]&0x40 != 0
|
end := d[2]&0x40 != 0
|
||||||
|
|
||||||
var head []byte
|
old := d
|
||||||
if start {
|
if start {
|
||||||
head = []byte{(d[0] & 0x81) | ((d[2] & 0x3f) << 1), d[1]}
|
d = d[1:]
|
||||||
}
|
if l.donl {
|
||||||
|
d = d[2:]
|
||||||
d = d[3:]
|
}
|
||||||
if l.donl {
|
d[0] = (old[0] & 0x81) | ((old[2] & 0x3f) << 1)
|
||||||
d = d[2:]
|
d[1] = old[1]
|
||||||
|
} else {
|
||||||
|
d = d[3:]
|
||||||
|
if l.donl {
|
||||||
|
d = d[2:]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch {
|
switch {
|
||||||
case start && !end:
|
case start && !end:
|
||||||
l.frag = true
|
l.frag = true
|
||||||
_d := append(head, d...)
|
l.writeWithPrefix(d)
|
||||||
l.writeWithPrefix(_d)
|
|
||||||
case !start && end:
|
case !start && end:
|
||||||
l.frag = false
|
l.frag = false
|
||||||
fallthrough
|
fallthrough
|
||||||
|
|
Loading…
Reference in New Issue