fmt; ts: fix crc32 bug

This commit is contained in:
nareix 2016-09-25 17:06:39 +08:00
parent b3b189ca28
commit 00d8696937

View File

@ -1,21 +1,19 @@
package ts
import (
"time"
"bufio"
"fmt"
"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/h264parser"
"github.com/nareix/joy4/format/ts/tsio"
"io"
"time"
)
var CodecTypes = []av.CodecType{av.H264, av.AAC}
type Muxer struct {
w writeFlusher
w io.Writer
streams []*Stream
PaddingToMakeCounterCont bool
@ -29,12 +27,7 @@ type Muxer struct {
tswpat, tswpmt *tsio.TSWriter
}
type writeFlusher interface {
io.Writer
Flush() error
}
func NewMuxerWriteFlusher(w writeFlusher) *Muxer {
func NewMuxer(w io.Writer) *Muxer {
return &Muxer{
w: w,
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) {
ok := false
for _, c := range CodecTypes {
@ -93,14 +82,11 @@ func (self *Muxer) WriteTrailer() (err error) {
}
}
}
if err = self.w.Flush(); err != nil {
return
}
return
}
func (self *Muxer) ChangeWriter(w io.Writer) (err error) {
func (self *Muxer) SetWriter(w io.Writer) {
self.w = w
return
}
@ -111,8 +97,8 @@ func (self *Muxer) WritePATPMT() (err error) {
},
}
patlen := pat.Marshal(self.psidata[tsio.PSIHeaderLength:])
tsio.FillPSI(self.psidata, tsio.TableIdPAT, tsio.TableExtPAT, patlen)
self.datav[0] = self.psidata[:tsio.PSIHeaderLength+patlen]
n := tsio.FillPSI(self.psidata, tsio.TableIdPAT, tsio.TableExtPAT, patlen)
self.datav[0] = self.psidata[:n]
if err = self.tswpat.WritePackets(self.w, self.datav[:1], 0, false, true); err != nil {
return
}
@ -143,8 +129,8 @@ func (self *Muxer) WritePATPMT() (err error) {
return
}
pmt.Marshal(self.psidata[tsio.PSIHeaderLength:])
tsio.FillPSI(self.psidata, tsio.TableIdPMT, tsio.TableExtPMT, pmtlen)
self.datav[0] = self.psidata[:tsio.PSIHeaderLength+pmtlen]
n = tsio.FillPSI(self.psidata, tsio.TableIdPMT, tsio.TableExtPMT, pmtlen)
self.datav[0] = self.psidata[:n]
if err = self.tswpmt.WritePackets(self.w, self.datav[:1], 0, false, true); err != nil {
return
}