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