mp4: bugfix samplesize
This commit is contained in:
parent
6c3cd7a227
commit
53d1f9ef98
@ -324,12 +324,6 @@ var atoms = {
|
||||
|
||||
sampleSize: {
|
||||
cc4: 'stsz',
|
||||
fields: [
|
||||
['version', 'int8'],
|
||||
['flags', 'int24'],
|
||||
['sampleSize', 'int32'],
|
||||
['entries', '[int32]int32'],
|
||||
],
|
||||
},
|
||||
|
||||
chunkOffset: {
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user