handlerMuxer: add stage control
This commit is contained in:
parent
975080658c
commit
ff7d24c845
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user