put HandlerRefer into struct.go
This commit is contained in:
parent
e5ed771fcd
commit
8cbf203548
@ -5,6 +5,15 @@ Array.prototype.nonull = function () {
|
||||
};
|
||||
|
||||
var atoms = {
|
||||
test: {
|
||||
cc4: 'sbss',
|
||||
fields: [
|
||||
['version', 'int8'],
|
||||
['flags', 'int24'],
|
||||
['left', '[]char'],
|
||||
],
|
||||
},
|
||||
|
||||
movie: {
|
||||
cc4: 'moov',
|
||||
fields: [
|
||||
@ -71,6 +80,13 @@ var atoms = {
|
||||
|
||||
handlerRefer: {
|
||||
cc4: 'hdlr',
|
||||
fields: [
|
||||
['version', 'int8'],
|
||||
['flags', 'int24'],
|
||||
['type', '[4]char'],
|
||||
['subType', '[4]char'],
|
||||
['name', '[]char'],
|
||||
],
|
||||
},
|
||||
|
||||
media: {
|
||||
@ -299,7 +315,7 @@ var DeclReadFunc = (opts) => {
|
||||
return [
|
||||
//DebugStmt(type),
|
||||
CallCheckAssign(
|
||||
'Read'+type.fn, ['r', type.len].nonull(), [name]),
|
||||
'Read'+type.fn, ['r', type.len||'int(r.N)'], [name]),
|
||||
]
|
||||
};
|
||||
|
||||
@ -368,7 +384,7 @@ var DeclWriteFunc = (opts) => {
|
||||
'Write'+type.Struct, ['w', name], []);
|
||||
return [
|
||||
CallCheckAssign(
|
||||
'Write'+type.fn, ['w', name, type.len].nonull(), []),
|
||||
'Write'+type.fn, ['w', name, type.len||`len(${name})`], []),
|
||||
]
|
||||
};
|
||||
|
||||
|
@ -109,65 +109,3 @@ func WriteSampleDescEntry(w io.WriteSeeker, self *SampleDescEntry) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
type HandlerRefer struct {
|
||||
Version int
|
||||
Flags int
|
||||
Type string
|
||||
SubType string
|
||||
Name string
|
||||
}
|
||||
|
||||
func ReadHandlerRefer(r *io.LimitedReader) (res *HandlerRefer, err error) {
|
||||
self := &HandlerRefer{}
|
||||
if self.Version, err = ReadInt(r, 3); err != nil {
|
||||
return
|
||||
}
|
||||
if self.Flags, err = ReadInt(r, 1); err != nil {
|
||||
return
|
||||
}
|
||||
if self.Type, err = ReadString(r, 4); err != nil {
|
||||
return
|
||||
}
|
||||
if self.SubType, err = ReadString(r, 4); err != nil {
|
||||
return
|
||||
}
|
||||
if _, err = ReadDummy(r, 12); err != nil {
|
||||
return
|
||||
}
|
||||
if self.Name, err = ReadString(r, int(r.N)); err != nil {
|
||||
return
|
||||
}
|
||||
res = self
|
||||
return
|
||||
}
|
||||
|
||||
func WriteHandlerRefer(w io.WriteSeeker, self *HandlerRefer) (err error) {
|
||||
var aw *Writer
|
||||
if aw, err = WriteAtomHeader(w, "hdlr"); err != nil {
|
||||
return
|
||||
}
|
||||
w = aw
|
||||
if err = WriteInt(w, self.Version, 3); err != nil {
|
||||
return
|
||||
}
|
||||
if err = WriteInt(w, self.Flags, 1); err != nil {
|
||||
return
|
||||
}
|
||||
if err = WriteString(w, self.Type, 4); err != nil {
|
||||
return
|
||||
}
|
||||
if err = WriteString(w, self.SubType, 4); err != nil {
|
||||
return
|
||||
}
|
||||
if err = WriteDummy(w, 12); err != nil {
|
||||
return
|
||||
}
|
||||
if err = WriteString(w, self.Name, len(self.Name)); err != nil {
|
||||
return
|
||||
}
|
||||
if err = aw.Close(); err != nil {
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
100
atom/struct.go
100
atom/struct.go
@ -5,6 +5,49 @@ import (
|
||||
"io"
|
||||
)
|
||||
|
||||
type Test struct {
|
||||
Version int
|
||||
Flags int
|
||||
Left string
|
||||
}
|
||||
|
||||
func ReadTest(r *io.LimitedReader) (res *Test, err error) {
|
||||
|
||||
self := &Test{}
|
||||
if self.Version, err = ReadInt(r, 1); err != nil {
|
||||
return
|
||||
}
|
||||
if self.Flags, err = ReadInt(r, 3); err != nil {
|
||||
return
|
||||
}
|
||||
if self.Left, err = ReadString(r, int(r.N)); err != nil {
|
||||
return
|
||||
}
|
||||
res = self
|
||||
return
|
||||
}
|
||||
func WriteTest(w io.WriteSeeker, self *Test) (err error) {
|
||||
|
||||
var aw *Writer
|
||||
if aw, err = WriteAtomHeader(w, "sbss"); 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 = WriteString(w, self.Left, len(self.Left)); err != nil {
|
||||
return
|
||||
}
|
||||
if err = aw.Close(); err != nil {
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
type Movie struct {
|
||||
Header *MovieHeader
|
||||
Tracks []*Track
|
||||
@ -399,6 +442,63 @@ func WriteTrackHeader(w io.WriteSeeker, self *TrackHeader) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
type HandlerRefer struct {
|
||||
Version int
|
||||
Flags int
|
||||
Type string
|
||||
SubType string
|
||||
Name string
|
||||
}
|
||||
|
||||
func ReadHandlerRefer(r *io.LimitedReader) (res *HandlerRefer, err error) {
|
||||
|
||||
self := &HandlerRefer{}
|
||||
if self.Version, err = ReadInt(r, 1); err != nil {
|
||||
return
|
||||
}
|
||||
if self.Flags, err = ReadInt(r, 3); err != nil {
|
||||
return
|
||||
}
|
||||
if self.Type, err = ReadString(r, 4); err != nil {
|
||||
return
|
||||
}
|
||||
if self.SubType, err = ReadString(r, 4); err != nil {
|
||||
return
|
||||
}
|
||||
if self.Name, err = ReadString(r, int(r.N)); err != nil {
|
||||
return
|
||||
}
|
||||
res = self
|
||||
return
|
||||
}
|
||||
func WriteHandlerRefer(w io.WriteSeeker, self *HandlerRefer) (err error) {
|
||||
|
||||
var aw *Writer
|
||||
if aw, err = WriteAtomHeader(w, "hdlr"); 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 = WriteString(w, self.Type, 4); err != nil {
|
||||
return
|
||||
}
|
||||
if err = WriteString(w, self.SubType, 4); err != nil {
|
||||
return
|
||||
}
|
||||
if err = WriteString(w, self.Name, len(self.Name)); err != nil {
|
||||
return
|
||||
}
|
||||
if err = aw.Close(); err != nil {
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
type Media struct {
|
||||
Header *MediaHeader
|
||||
Info *MediaInfo
|
||||
|
Loading…
x
Reference in New Issue
Block a user