From 53d1f9ef9837dac3276214bfb829ce9ba9f34c5b Mon Sep 17 00:00:00 2001 From: nareix Date: Sun, 10 Jul 2016 23:31:12 +0800 Subject: [PATCH] mp4: bugfix samplesize --- format/mp4/atom/genStruct.js | 6 --- format/mp4/atom/struct.go | 83 ------------------------------------ format/mp4/demuxer.go | 1 + 3 files changed, 1 insertion(+), 89 deletions(-) diff --git a/format/mp4/atom/genStruct.js b/format/mp4/atom/genStruct.js index ef38ead..b2f268f 100644 --- a/format/mp4/atom/genStruct.js +++ b/format/mp4/atom/genStruct.js @@ -324,12 +324,6 @@ var atoms = { sampleSize: { cc4: 'stsz', - fields: [ - ['version', 'int8'], - ['flags', 'int24'], - ['sampleSize', 'int32'], - ['entries', '[int32]int32'], - ], }, chunkOffset: { diff --git a/format/mp4/atom/struct.go b/format/mp4/atom/struct.go index 573df51..2544c30 100644 --- a/format/mp4/atom/struct.go +++ b/format/mp4/atom/struct.go @@ -2335,89 +2335,6 @@ func WalkSyncSample(w Walker, self *SyncSample) { return } -type SampleSize struct { - Version int - Flags int - SampleSize int - Entries []int -} - -func ReadSampleSize(r *io.LimitedReader) (res *SampleSize, err error) { - - self := &SampleSize{} - if self.Version, err = ReadInt(r, 1); err != nil { - return - } - if self.Flags, err = ReadInt(r, 3); err != nil { - return - } - if self.SampleSize, err = ReadInt(r, 4); err != nil { - return - } - var count int - if count, err = ReadInt(r, 4); err != nil { - return - } - self.Entries = make([]int, count) - for i := 0; i < count; i++ { - if self.Entries[i], err = ReadInt(r, 4); err != nil { - return - } - } - res = self - return -} -func WriteSampleSize(w io.WriteSeeker, self *SampleSize) (err error) { - - var aw *Writer - if aw, err = WriteAtomHeader(w, "stsz"); err != nil { - return - } - w = aw - if err = WriteInt(w, self.Version, 1); err != nil { - return - } - if err = WriteInt(w, self.Flags, 3); err != nil { - return - } - if err = WriteInt(w, self.SampleSize, 4); err != nil { - return - } - if err = WriteInt(w, len(self.Entries), 4); err != nil { - return - } - for _, elem := range self.Entries { - if err = WriteInt(w, elem, 4); err != nil { - return - } - } - if err = aw.Close(); err != nil { - return - } - return -} -func WalkSampleSize(w Walker, self *SampleSize) { - - w.StartStruct("SampleSize") - w.Name("Version") - w.Int(self.Version) - w.Name("Flags") - w.Int(self.Flags) - w.Name("SampleSize") - w.Int(self.SampleSize) - for i, item := range self.Entries { - if w.FilterArrayItem("SampleSize", "Entries", i, len(self.Entries)) { - w.Name("Entries") - w.Int(item) - } else { - w.ArrayLeft(i, len(self.Entries)) - break - } - } - w.EndStruct() - return -} - type ChunkOffset struct { Version int Flags int diff --git a/format/mp4/demuxer.go b/format/mp4/demuxer.go index 3b59b50..a09c013 100644 --- a/format/mp4/demuxer.go +++ b/format/mp4/demuxer.go @@ -55,6 +55,7 @@ func (self *Demuxer) probe() (err error) { if cc4 == "moov" { if moov, err = atom.ReadMovie(ar); err != nil { + err = fmt.Errorf("mp4: moov invalid") return } }