handlerMuxer: add stage control

This commit is contained in:
nareix 2016-07-13 17:56:09 +08:00
parent 975080658c
commit ff7d24c845

View File

@ -23,17 +23,26 @@ func (self *handlerDemuxer) Close() error {
type handlerMuxer struct { type handlerMuxer struct {
av.Muxer av.Muxer
w io.WriteCloser w io.WriteCloser
trailerwritten bool stage int
}
func (self *handlerMuxer) WriteHeader(streams []av.CodecData) (err error) {
if self.stage == 0 {
if err = self.Muxer.WriteHeader(streams); err != nil {
return
}
self.stage++
}
return
} }
func (self *handlerMuxer) WriteTrailer() (err error) { func (self *handlerMuxer) WriteTrailer() (err error) {
if self.trailerwritten { if self.stage == 1 {
return if err = self.Muxer.WriteTrailer(); err != nil {
return
}
self.stage++
} }
if err = self.Muxer.WriteTrailer(); err != nil {
return
}
self.trailerwritten = true
return return
} }