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 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
} }