From 6ceb48ab20d069ac08b506ce147d40386573f592 Mon Sep 17 00:00:00 2001 From: nareix Date: Fri, 1 Jul 2016 18:17:37 +0800 Subject: [PATCH] muxer: use h264parser.CheckNALUsType instead of SplitNALUs --- muxer.go | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/muxer.go b/muxer.go index 72c10b1..70ef9f2 100644 --- a/muxer.go +++ b/muxer.go @@ -5,6 +5,7 @@ import ( "fmt" "time" "github.com/nareix/av" + "github.com/nareix/pio" "github.com/nareix/codec/aacparser" "github.com/nareix/codec/h264parser" "github.com/nareix/mp4/atom" @@ -190,12 +191,17 @@ func (self *Stream) writePacket(pkt av.Packet) (err error) { } if self.Type() == av.H264 { - nalus, _ := h264parser.SplitNALUs(pkt.Data) - h264parser.WalkNALUsAVCC(nalus, func(b []byte) { - sampleSize += len(b) - _, err = self.muxer.mdatWriter.Write(b) - }) - if err != nil { + if typ := h264parser.CheckNALUsType(pkt.Data); typ != h264parser.NALU_RAW { + err = fmt.Errorf("mp4: nalu format=%d is not raw", typ) + return + } + var b [4]byte + pio.PutU32BE(b[:], uint32(len(pkt.Data))) + sampleSize += len(pkt.Data)+4 + if _, err = self.muxer.mdatWriter.Write(b[:]); err != nil { + return + } + if _, err = self.muxer.mdatWriter.Write(pkt.Data); err != nil { return } } else {