add writePaddingTSPackets
This commit is contained in:
parent
12f2f28f55
commit
5b03e2383f
10
demuxer.go
10
demuxer.go
@ -45,7 +45,7 @@ func (self *Demuxer) ReadHeader() (err error) {
|
|||||||
if self.pmt != nil {
|
if self.pmt != nil {
|
||||||
n := 0
|
n := 0
|
||||||
for _, stream := range self.streams {
|
for _, stream := range self.streams {
|
||||||
if len(stream.pkts) > 0 {
|
if len(stream.CodecData()) > 0 {
|
||||||
n++
|
n++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -186,10 +186,6 @@ func (self *Stream) readPacket() (ret av.Packet, ok bool) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (self *Stream) payloadStart() {
|
func (self *Stream) payloadStart() {
|
||||||
if false {
|
|
||||||
fmt.Println("payloadStart:", self)
|
|
||||||
}
|
|
||||||
|
|
||||||
dts := self.peshdr.DTS
|
dts := self.peshdr.DTS
|
||||||
pts := self.peshdr.PTS
|
pts := self.peshdr.PTS
|
||||||
if dts == 0 {
|
if dts == 0 {
|
||||||
@ -218,10 +214,6 @@ func (self *Stream) payloadStart() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (self *Stream) payloadEnd() (err error) {
|
func (self *Stream) payloadEnd() (err error) {
|
||||||
if false {
|
|
||||||
fmt.Println("payloadEnd:", self)
|
|
||||||
}
|
|
||||||
|
|
||||||
payload := self.buf.Bytes()
|
payload := self.buf.Bytes()
|
||||||
|
|
||||||
curpkt := &self.pkts[len(self.pkts)-1]
|
curpkt := &self.pkts[len(self.pkts)-1]
|
||||||
|
33
muxer.go
33
muxer.go
@ -12,6 +12,10 @@ import (
|
|||||||
type Muxer struct {
|
type Muxer struct {
|
||||||
W io.Writer
|
W io.Writer
|
||||||
streams []*Stream
|
streams []*Stream
|
||||||
|
PaddingToMakeCounterCont bool
|
||||||
|
|
||||||
|
tswPAT *TSWriter
|
||||||
|
tswPMT *TSWriter
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *Muxer) NewStream() av.Stream {
|
func (self *Muxer) NewStream() av.Stream {
|
||||||
@ -26,7 +30,28 @@ func (self *Muxer) NewStream() av.Stream {
|
|||||||
return stream
|
return stream
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (self *Muxer) writePaddingTSPackets(tsw *TSWriter) (err error) {
|
||||||
|
for tsw.ContinuityCounter&0xf != 0x0 {
|
||||||
|
header := TSHeader{
|
||||||
|
PID: tsw.PID,
|
||||||
|
ContinuityCounter: tsw.ContinuityCounter,
|
||||||
|
}
|
||||||
|
if _, err = WriteTSHeader(self.W, header, 0); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
tsw.ContinuityCounter++
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func (self *Muxer) WriteTrailer() (err error) {
|
func (self *Muxer) WriteTrailer() (err error) {
|
||||||
|
if self.PaddingToMakeCounterCont {
|
||||||
|
for _, stream := range self.streams {
|
||||||
|
if err = self.writePaddingTSPackets(stream.tsw); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -57,18 +82,18 @@ func (self *Muxer) WriteHeader() (err error) {
|
|||||||
}
|
}
|
||||||
WritePMT(bufPMT, pmt)
|
WritePMT(bufPMT, pmt)
|
||||||
|
|
||||||
tswPMT := &TSWriter{
|
self.tswPMT = &TSWriter{
|
||||||
PID: 0x1000,
|
PID: 0x1000,
|
||||||
DiscontinuityIndicator: true,
|
DiscontinuityIndicator: true,
|
||||||
}
|
}
|
||||||
tswPAT := &TSWriter{
|
self.tswPAT = &TSWriter{
|
||||||
PID: 0,
|
PID: 0,
|
||||||
DiscontinuityIndicator: true,
|
DiscontinuityIndicator: true,
|
||||||
}
|
}
|
||||||
if err = tswPAT.WriteTo(self.W, bufPAT.Bytes()); err != nil {
|
if err = self.tswPAT.WriteTo(self.W, bufPAT.Bytes()); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if err = tswPMT.WriteTo(self.W, bufPMT.Bytes()); err != nil {
|
if err = self.tswPMT.WriteTo(self.W, bufPMT.Bytes()); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user