mp4: bugfix samplesize
This commit is contained in:
parent
6c3cd7a227
commit
53d1f9ef98
@ -324,12 +324,6 @@ var atoms = {
|
|||||||
|
|
||||||
sampleSize: {
|
sampleSize: {
|
||||||
cc4: 'stsz',
|
cc4: 'stsz',
|
||||||
fields: [
|
|
||||||
['version', 'int8'],
|
|
||||||
['flags', 'int24'],
|
|
||||||
['sampleSize', 'int32'],
|
|
||||||
['entries', '[int32]int32'],
|
|
||||||
],
|
|
||||||
},
|
},
|
||||||
|
|
||||||
chunkOffset: {
|
chunkOffset: {
|
||||||
|
@ -2335,89 +2335,6 @@ func WalkSyncSample(w Walker, self *SyncSample) {
|
|||||||
return
|
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 {
|
type ChunkOffset struct {
|
||||||
Version int
|
Version int
|
||||||
Flags int
|
Flags int
|
||||||
|
@ -55,6 +55,7 @@ func (self *Demuxer) probe() (err error) {
|
|||||||
|
|
||||||
if cc4 == "moov" {
|
if cc4 == "moov" {
|
||||||
if moov, err = atom.ReadMovie(ar); err != nil {
|
if moov, err = atom.ReadMovie(ar); err != nil {
|
||||||
|
err = fmt.Errorf("mp4: moov invalid")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user