From ff7d24c845d019b63597101f287ce19f3677c269 Mon Sep 17 00:00:00 2001 From: nareix Date: Wed, 13 Jul 2016 17:56:09 +0800 Subject: [PATCH] handlerMuxer: add stage control --- av/avutil/avutil.go | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/av/avutil/avutil.go b/av/avutil/avutil.go index 48659ba..a9a86f4 100644 --- a/av/avutil/avutil.go +++ b/av/avutil/avutil.go @@ -23,17 +23,26 @@ func (self *handlerDemuxer) Close() error { type handlerMuxer struct { av.Muxer 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) { - if self.trailerwritten { - return + if self.stage == 1 { + if err = self.Muxer.WriteTrailer(); err != nil { + return + } + self.stage++ } - if err = self.Muxer.WriteTrailer(); err != nil { - return - } - self.trailerwritten = true return }