Skip to content

Commit b2a783c

Browse files
author
Timur Nurutdinov
committed
strange boxes udta and name
1 parent 72d9775 commit b2a783c

File tree

4 files changed

+84
-2
lines changed

4 files changed

+84
-2
lines changed

box.go

+1
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ func init() {
4949
"meta": DecodeMeta,
5050
"mdat": DecodeMdat,
5151
"free": DecodeFree,
52+
"name": DecodeName,
5253
}
5354
}
5455

name.go

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package mp4
2+
3+
import (
4+
"io"
5+
"io/ioutil"
6+
)
7+
8+
// Name Box
9+
//
10+
// Status: not decoded
11+
type NameBox struct {
12+
notDecoded []byte
13+
}
14+
15+
func DecodeName(r io.Reader) (Box, error) {
16+
data, err := ioutil.ReadAll(r)
17+
if err != nil {
18+
return nil, err
19+
}
20+
return &NameBox{
21+
notDecoded: data[:],
22+
}, nil
23+
}
24+
25+
func (b *NameBox) Type() string {
26+
return "name"
27+
}
28+
29+
func (b *NameBox) Size() int {
30+
return BoxHeaderSize + 4 + len(b.notDecoded)
31+
}
32+
33+
func (b *NameBox) Encode(w io.Writer) error {
34+
err := EncodeHeader(b, w)
35+
if err != nil {
36+
return err
37+
}
38+
buf := makebuf(b)
39+
copy(buf[:], b.notDecoded)
40+
_, err = w.Write(buf)
41+
return err
42+
}

trak.go

+15
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ type TrakBox struct {
1111
Tkhd *TkhdBox
1212
Mdia *MdiaBox
1313
Edts *EdtsBox
14+
Udta *UdtaBox
1415
}
1516

1617
func DecodeTrak(r io.Reader) (Box, error) {
@@ -27,6 +28,8 @@ func DecodeTrak(r io.Reader) (Box, error) {
2728
t.Mdia = b.(*MdiaBox)
2829
case "edts":
2930
t.Edts = b.(*EdtsBox)
31+
case "udta":
32+
t.Udta = b.(*UdtaBox)
3033
default:
3134
return nil, ErrBadFormat
3235
}
@@ -44,6 +47,9 @@ func (b *TrakBox) Size() int {
4447
if b.Edts != nil {
4548
sz += b.Edts.Size()
4649
}
50+
if b.Udta != nil {
51+
sz += b.Udta.Size()
52+
}
4753
return sz + BoxHeaderSize
4854
}
4955

@@ -52,6 +58,9 @@ func (b *TrakBox) Dump() {
5258
if b.Edts != nil {
5359
b.Edts.Dump()
5460
}
61+
// if b.Udta != nil {
62+
// b.Udta.Dump()
63+
// }
5564
b.Mdia.Dump()
5665
}
5766

@@ -70,5 +79,11 @@ func (b *TrakBox) Encode(w io.Writer) error {
7079
return err
7180
}
7281
}
82+
if b.Udta != nil {
83+
err = b.Udta.Encode(w)
84+
if err != nil {
85+
return err
86+
}
87+
}
7388
return b.Mdia.Encode(w)
7489
}

udta.go

+26-2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import "io"
77
// Contained in: Movie Box (moov) or Track Box (trak)
88
type UdtaBox struct {
99
Meta *MetaBox
10+
Name *NameBox
1011
}
1112

1213
func DecodeUdta(r io.Reader) (Box, error) {
@@ -19,6 +20,8 @@ func DecodeUdta(r io.Reader) (Box, error) {
1920
switch b.Type() {
2021
case "meta":
2122
u.Meta = b.(*MetaBox)
23+
case "name":
24+
u.Name = b.(*NameBox)
2225
default:
2326
return nil, ErrBadFormat
2427
}
@@ -31,13 +34,34 @@ func (b *UdtaBox) Type() string {
3134
}
3235

3336
func (b *UdtaBox) Size() int {
34-
return BoxHeaderSize + b.Meta.Size()
37+
sz := BoxHeaderSize
38+
if b.Meta != nil {
39+
sz += b.Meta.Size()
40+
}
41+
if b.Name != nil {
42+
sz += b.Name.Size()
43+
}
44+
return sz
3545
}
3646

3747
func (b *UdtaBox) Encode(w io.Writer) error {
3848
err := EncodeHeader(b, w)
3949
if err != nil {
4050
return err
4151
}
42-
return b.Meta.Encode(w)
52+
if b.Meta != nil {
53+
err = b.Meta.Encode(w)
54+
if err != nil {
55+
return err
56+
}
57+
58+
}
59+
if b.Name != nil {
60+
err = b.Name.Encode(w)
61+
if err != nil {
62+
return err
63+
}
64+
65+
}
66+
return nil
4367
}

0 commit comments

Comments
 (0)