flv/rtmp: packet read logic bugfix
This commit is contained in:
parent
e1f6aa15fe
commit
4b5f50e03f
@ -312,9 +312,9 @@ func (self *Muxer) WriteHeader(streams []av.CodecData) (err error) {
|
|||||||
|
|
||||||
func (self *Muxer) WritePacket(pkt av.Packet) (err error) {
|
func (self *Muxer) WritePacket(pkt av.Packet) (err error) {
|
||||||
stream := self.streams[pkt.Idx]
|
stream := self.streams[pkt.Idx]
|
||||||
tag, ts := PacketToTag(pkt, stream)
|
tag, timestamp := PacketToTag(pkt, stream)
|
||||||
|
|
||||||
if err = flvio.WriteTag(self.pw, tag, ts); err != nil {
|
if err = flvio.WriteTag(self.pw, tag, timestamp); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -361,7 +361,7 @@ func (self *Demuxer) prepare() (err error) {
|
|||||||
for !self.prober.Probed() {
|
for !self.prober.Probed() {
|
||||||
var tag flvio.Tag
|
var tag flvio.Tag
|
||||||
var timestamp int32
|
var timestamp int32
|
||||||
if tag, _, err = flvio.ReadTag(self.pr); err != nil {
|
if tag, timestamp, err = flvio.ReadTag(self.pr); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if err = self.prober.PushTag(tag, timestamp); err != nil {
|
if err = self.prober.PushTag(tag, timestamp); err != nil {
|
||||||
@ -374,6 +374,12 @@ func (self *Demuxer) prepare() (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func dumptag(_tag flvio.Tag, timestamp int32) {
|
||||||
|
if tag, ok := _tag.(*flvio.Videodata); ok {
|
||||||
|
fmt.Printf("video ts=%d cts=%d FrameType=%d AVCPacketType=%d\n", timestamp, tag.CompositionTime, tag.FrameType, tag.AVCPacketType)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (self *Demuxer) Streams() (streams []av.CodecData, err error) {
|
func (self *Demuxer) Streams() (streams []av.CodecData, err error) {
|
||||||
if err = self.prepare(); err != nil {
|
if err = self.prepare(); err != nil {
|
||||||
return
|
return
|
||||||
|
@ -247,7 +247,6 @@ type Videodata struct {
|
|||||||
AVCPacketType uint8
|
AVCPacketType uint8
|
||||||
|
|
||||||
Data []byte
|
Data []byte
|
||||||
Datav [][]byte
|
|
||||||
CompositionTime int32
|
CompositionTime int32
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -256,7 +255,7 @@ func (self Videodata) Type() uint8 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (self Videodata) Len() int {
|
func (self Videodata) Len() int {
|
||||||
return 5 + len(self.Data) + pio.VecLen(self.Datav)
|
return 5 + len(self.Data)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *Videodata) Unmarshal(r *pio.Reader) (err error) {
|
func (self *Videodata) Unmarshal(r *pio.Reader) (err error) {
|
||||||
@ -297,11 +296,6 @@ func (self Videodata) Marshal(w *pio.Writer) (err error) {
|
|||||||
if _, err = w.Write(self.Data); err != nil {
|
if _, err = w.Write(self.Data); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
for _, data := range self.Datav {
|
|
||||||
if _, err = w.Write(data); err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -715,12 +715,10 @@ func (self *Conn) ReadPacket() (pkt av.Packet, err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
if !self.prober.Empty() {
|
if !self.prober.Empty() {
|
||||||
pkt = self.prober.PopPacket()
|
pkt = self.prober.PopPacket()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
for {
|
for {
|
||||||
var tag flvio.Tag
|
var tag flvio.Tag
|
||||||
|
Loading…
x
Reference in New Issue
Block a user