add iods
This commit is contained in:
parent
0a8a72ae7d
commit
60176b7f50
@ -10,11 +10,19 @@ var atoms = {
|
||||
fields: [
|
||||
['$atoms', [
|
||||
['header', '*movieHeader'],
|
||||
['iods', '*iods'],
|
||||
['tracks', '[]*track'],
|
||||
]],
|
||||
],
|
||||
},
|
||||
|
||||
iods: {
|
||||
cc4: 'iods',
|
||||
fields: [
|
||||
['data', '[]byte'],
|
||||
],
|
||||
},
|
||||
|
||||
movieHeader: {
|
||||
cc4: 'mvhd',
|
||||
fields: [
|
||||
|
@ -7,6 +7,7 @@ import (
|
||||
|
||||
type Movie struct {
|
||||
Header *MovieHeader
|
||||
Iods *Iods
|
||||
Tracks []*Track
|
||||
}
|
||||
|
||||
@ -26,6 +27,12 @@ func ReadMovie(r *io.LimitedReader) (res *Movie, err error) {
|
||||
return
|
||||
}
|
||||
}
|
||||
case "iods":
|
||||
{
|
||||
if self.Iods, err = ReadIods(ar); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
case "trak":
|
||||
{
|
||||
var item *Track
|
||||
@ -55,6 +62,11 @@ func WriteMovie(w io.WriteSeeker, self *Movie) (err error) {
|
||||
return
|
||||
}
|
||||
}
|
||||
if self.Iods != nil {
|
||||
if err = WriteIods(w, self.Iods); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
if self.Tracks != nil {
|
||||
for _, elem := range self.Tracks {
|
||||
if err = WriteTrack(w, elem); err != nil {
|
||||
@ -68,6 +80,35 @@ func WriteMovie(w io.WriteSeeker, self *Movie) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
type Iods struct {
|
||||
Data []byte
|
||||
}
|
||||
|
||||
func ReadIods(r *io.LimitedReader) (res *Iods, err error) {
|
||||
|
||||
self := &Iods{}
|
||||
if self.Data, err = ReadBytes(r, int(r.N)); err != nil {
|
||||
return
|
||||
}
|
||||
res = self
|
||||
return
|
||||
}
|
||||
func WriteIods(w io.WriteSeeker, self *Iods) (err error) {
|
||||
|
||||
var aw *Writer
|
||||
if aw, err = WriteAtomHeader(w, "iods"); err != nil {
|
||||
return
|
||||
}
|
||||
w = aw
|
||||
if err = WriteBytes(w, self.Data, len(self.Data)); err != nil {
|
||||
return
|
||||
}
|
||||
if err = aw.Close(); err != nil {
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
type MovieHeader struct {
|
||||
Version int
|
||||
Flags int
|
||||
|
Loading…
x
Reference in New Issue
Block a user