ts: add packet size check
This commit is contained in:
parent
78e9ae4e38
commit
ab8f020f63
@ -2,6 +2,7 @@ package ts
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
"github.com/nareix/pio"
|
"github.com/nareix/pio"
|
||||||
"github.com/nareix/joy4/av"
|
"github.com/nareix/joy4/av"
|
||||||
@ -207,6 +208,11 @@ func (self *Stream) payloadEnd() (n int, err error) {
|
|||||||
if payload == nil {
|
if payload == nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if self.datalen != 0 && len(payload) != self.datalen {
|
||||||
|
err = fmt.Errorf("ts: packet size mismatch size=%d correct=%d", len(payload), self.datalen)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
self.data = nil
|
||||||
|
|
||||||
switch self.streamType {
|
switch self.streamType {
|
||||||
case ElementaryStreamTypeAdtsAAC:
|
case ElementaryStreamTypeAdtsAAC:
|
||||||
@ -258,8 +264,6 @@ func (self *Stream) payloadEnd() (n int, err error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self.data = nil
|
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -269,15 +273,14 @@ func (self *Stream) handleTSPacket(start bool, iskeyframe bool, payload []byte)
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
var hdrlen int
|
var hdrlen int
|
||||||
var datalen int
|
if hdrlen, _, self.datalen, self.pts, self.dts, err = tsio.ParsePESHeader(payload); err != nil {
|
||||||
if hdrlen, _, datalen, self.pts, self.dts, err = tsio.ParsePESHeader(payload); err != nil {
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
self.iskeyframe = iskeyframe
|
self.iskeyframe = iskeyframe
|
||||||
if datalen == 0 {
|
if self.datalen == 0 {
|
||||||
self.data = make([]byte, 0, 16000)
|
self.data = make([]byte, 0, 4096)
|
||||||
} else {
|
} else {
|
||||||
self.data = make([]byte, 0, datalen)
|
self.data = make([]byte, 0, self.datalen)
|
||||||
}
|
}
|
||||||
self.data = append(self.data, payload[hdrlen:]...)
|
self.data = append(self.data, payload[hdrlen:]...)
|
||||||
} else {
|
} else {
|
||||||
|
@ -24,6 +24,7 @@ type Stream struct {
|
|||||||
iskeyframe bool
|
iskeyframe bool
|
||||||
pts, dts time.Duration
|
pts, dts time.Duration
|
||||||
data []byte
|
data []byte
|
||||||
|
datalen int
|
||||||
}
|
}
|
||||||
|
|
||||||
func timeToPesTs(tm time.Duration) uint64 {
|
func timeToPesTs(tm time.Duration) uint64 {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user