rtsp: add DebugRtp default options; fix findRTSP block locate bug
This commit is contained in:
parent
8c9fc95dfc
commit
d193138644
@ -26,6 +26,10 @@ import (
|
|||||||
|
|
||||||
var ErrCodecDataChange = fmt.Errorf("rtsp: codec data change, please call HandleCodecDataChange()")
|
var ErrCodecDataChange = fmt.Errorf("rtsp: codec data change, please call HandleCodecDataChange()")
|
||||||
|
|
||||||
|
var DebugRtp = false
|
||||||
|
var DebugRtsp = false
|
||||||
|
var SkipErrRtpBlock = false
|
||||||
|
|
||||||
const (
|
const (
|
||||||
stageDescribeDone = iota+1
|
stageDescribeDone = iota+1
|
||||||
stageSetupDone
|
stageSetupDone
|
||||||
@ -105,6 +109,9 @@ func DialTimeout(uri string, timeout time.Duration) (self *Client, err error) {
|
|||||||
brconn: bufio.NewReaderSize(connt, 256),
|
brconn: bufio.NewReaderSize(connt, 256),
|
||||||
url: URL,
|
url: URL,
|
||||||
requestUri: u2.String(),
|
requestUri: u2.String(),
|
||||||
|
DebugRtp: DebugRtp,
|
||||||
|
DebugRtsp: DebugRtsp,
|
||||||
|
SkipErrRtpBlock: SkipErrRtpBlock,
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -374,7 +381,7 @@ func (self *Client) findRTSP() (block []byte, data []byte, err error) {
|
|||||||
peek := _peek[0:0]
|
peek := _peek[0:0]
|
||||||
stat := 0
|
stat := 0
|
||||||
|
|
||||||
for {
|
for i := 0;; i++ {
|
||||||
var b byte
|
var b byte
|
||||||
if b, err = self.brconn.ReadByte(); err != nil {
|
if b, err = self.brconn.ReadByte(); err != nil {
|
||||||
return
|
return
|
||||||
@ -397,8 +404,10 @@ func (self *Client) findRTSP() (block []byte, data []byte, err error) {
|
|||||||
stat = Header
|
stat = Header
|
||||||
}
|
}
|
||||||
case '$':
|
case '$':
|
||||||
stat = Dollar
|
if stat != Dollar {
|
||||||
peek = _peek[0:0]
|
stat = Dollar
|
||||||
|
peek = _peek[0:0]
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
if stat != Dollar {
|
if stat != Dollar {
|
||||||
stat = 0
|
stat = 0
|
||||||
@ -406,6 +415,10 @@ func (self *Client) findRTSP() (block []byte, data []byte, err error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if self.DebugRtp {
|
||||||
|
fmt.Println("rtsp: findRTSP", i, b)
|
||||||
|
}
|
||||||
|
|
||||||
if stat != 0 {
|
if stat != 0 {
|
||||||
peek = append(peek, b)
|
peek = append(peek, b)
|
||||||
}
|
}
|
||||||
@ -415,6 +428,9 @@ func (self *Client) findRTSP() (block []byte, data []byte, err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if stat == Dollar && len(peek) >= 12 {
|
if stat == Dollar && len(peek) >= 12 {
|
||||||
|
if self.DebugRtp {
|
||||||
|
fmt.Println("rtsp: dollar at", i, len(peek))
|
||||||
|
}
|
||||||
if blocklen, _, ok := self.parseBlockHeader(peek); ok {
|
if blocklen, _, ok := self.parseBlockHeader(peek); ok {
|
||||||
left := blocklen+4-len(peek)
|
left := blocklen+4-len(peek)
|
||||||
block = append(peek, make([]byte, left)...)
|
block = append(peek, make([]byte, left)...)
|
||||||
@ -828,7 +844,7 @@ func (self *Stream) handleH264Payload(timestamp uint32, packet []byte) (err erro
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
case naluType == 6: // SEI ignored
|
//case naluType == 6: // SEI ignored
|
||||||
|
|
||||||
case naluType == 7: // sps
|
case naluType == 7: // sps
|
||||||
if self.client != nil && self.client.DebugRtp {
|
if self.client != nil && self.client.DebugRtp {
|
||||||
@ -974,7 +990,7 @@ func (self *Stream) handleRtpPacket(packet []byte) (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if self.client != nil && self.client.DebugRtp {
|
if self.client != nil && self.client.DebugRtp {
|
||||||
fmt.Println("rtp: packet len", len(packet))
|
fmt.Println("rtp: packet", self.CodecData.Type(), "len", len(packet))
|
||||||
dumpsize := len(packet)
|
dumpsize := len(packet)
|
||||||
if dumpsize > 32 {
|
if dumpsize > 32 {
|
||||||
dumpsize = 32
|
dumpsize = 32
|
||||||
@ -1114,6 +1130,9 @@ func (self *Client) Close() (err error) {
|
|||||||
func (self *Client) handleBlock(block []byte) (pkt av.Packet, ok bool, err error) {
|
func (self *Client) handleBlock(block []byte) (pkt av.Packet, ok bool, err error) {
|
||||||
_, blockno, _ := self.parseBlockHeader(block)
|
_, blockno, _ := self.parseBlockHeader(block)
|
||||||
if blockno%2 != 0 {
|
if blockno%2 != 0 {
|
||||||
|
if self.DebugRtp {
|
||||||
|
fmt.Println("rtsp: rtcp block len", len(block)-4)
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user