fmt; ts: fix crc32 bug
This commit is contained in:
parent
b3b189ca28
commit
00d8696937
@ -1,21 +1,19 @@
|
|||||||
package ts
|
package ts
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"time"
|
|
||||||
"bufio"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/nareix/joy4/av"
|
"github.com/nareix/joy4/av"
|
||||||
"github.com/nareix/joy4/format/ts/tsio"
|
|
||||||
"github.com/nareix/bits/pio"
|
|
||||||
"github.com/nareix/joy4/codec/aacparser"
|
"github.com/nareix/joy4/codec/aacparser"
|
||||||
"github.com/nareix/joy4/codec/h264parser"
|
"github.com/nareix/joy4/codec/h264parser"
|
||||||
|
"github.com/nareix/joy4/format/ts/tsio"
|
||||||
"io"
|
"io"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
var CodecTypes = []av.CodecType{av.H264, av.AAC}
|
var CodecTypes = []av.CodecType{av.H264, av.AAC}
|
||||||
|
|
||||||
type Muxer struct {
|
type Muxer struct {
|
||||||
w writeFlusher
|
w io.Writer
|
||||||
streams []*Stream
|
streams []*Stream
|
||||||
PaddingToMakeCounterCont bool
|
PaddingToMakeCounterCont bool
|
||||||
|
|
||||||
@ -29,12 +27,7 @@ type Muxer struct {
|
|||||||
tswpat, tswpmt *tsio.TSWriter
|
tswpat, tswpmt *tsio.TSWriter
|
||||||
}
|
}
|
||||||
|
|
||||||
type writeFlusher interface {
|
func NewMuxer(w io.Writer) *Muxer {
|
||||||
io.Writer
|
|
||||||
Flush() error
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewMuxerWriteFlusher(w writeFlusher) *Muxer {
|
|
||||||
return &Muxer{
|
return &Muxer{
|
||||||
w: w,
|
w: w,
|
||||||
psidata: make([]byte, 188),
|
psidata: make([]byte, 188),
|
||||||
@ -48,10 +41,6 @@ func NewMuxerWriteFlusher(w writeFlusher) *Muxer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewMuxer(w io.Writer) *Muxer {
|
|
||||||
return NewMuxerWriteFlusher(bufio.NewWriterSize(w, pio.RecommendBufioSize))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (self *Muxer) newStream(codec av.CodecData) (err error) {
|
func (self *Muxer) newStream(codec av.CodecData) (err error) {
|
||||||
ok := false
|
ok := false
|
||||||
for _, c := range CodecTypes {
|
for _, c := range CodecTypes {
|
||||||
@ -93,14 +82,11 @@ func (self *Muxer) WriteTrailer() (err error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = self.w.Flush(); err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *Muxer) ChangeWriter(w io.Writer) (err error) {
|
func (self *Muxer) SetWriter(w io.Writer) {
|
||||||
|
self.w = w
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -111,8 +97,8 @@ func (self *Muxer) WritePATPMT() (err error) {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
patlen := pat.Marshal(self.psidata[tsio.PSIHeaderLength:])
|
patlen := pat.Marshal(self.psidata[tsio.PSIHeaderLength:])
|
||||||
tsio.FillPSI(self.psidata, tsio.TableIdPAT, tsio.TableExtPAT, patlen)
|
n := tsio.FillPSI(self.psidata, tsio.TableIdPAT, tsio.TableExtPAT, patlen)
|
||||||
self.datav[0] = self.psidata[:tsio.PSIHeaderLength+patlen]
|
self.datav[0] = self.psidata[:n]
|
||||||
if err = self.tswpat.WritePackets(self.w, self.datav[:1], 0, false, true); err != nil {
|
if err = self.tswpat.WritePackets(self.w, self.datav[:1], 0, false, true); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -143,8 +129,8 @@ func (self *Muxer) WritePATPMT() (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
pmt.Marshal(self.psidata[tsio.PSIHeaderLength:])
|
pmt.Marshal(self.psidata[tsio.PSIHeaderLength:])
|
||||||
tsio.FillPSI(self.psidata, tsio.TableIdPMT, tsio.TableExtPMT, pmtlen)
|
n = tsio.FillPSI(self.psidata, tsio.TableIdPMT, tsio.TableExtPMT, pmtlen)
|
||||||
self.datav[0] = self.psidata[:tsio.PSIHeaderLength+pmtlen]
|
self.datav[0] = self.psidata[:n]
|
||||||
if err = self.tswpmt.WritePackets(self.w, self.datav[:1], 0, false, true); err != nil {
|
if err = self.tswpmt.WritePackets(self.w, self.datav[:1], 0, false, true); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user