@@ -2,10 +2,10 @@ package main
2
2
3
3
import (
4
4
"encoding/binary"
5
- "fmt"
6
5
"io"
7
6
"log"
8
7
"os"
8
+ "fmt"
9
9
)
10
10
11
11
// atomName => padding size
@@ -17,10 +17,9 @@ var boxAtomPaddings = map[string]int64{
17
17
"stsd" : 8 ,
18
18
"stbl" : 0 ,
19
19
"mp4a" : 28 ,
20
-
21
- // --- in pinf
22
- "pinf" : 0 ,
23
- "schi" : 0 ,
20
+ "udta" : 0 ,
21
+ "meta" : 4 ,
22
+ "ilst" : 0 ,
24
23
}
25
24
26
25
func main () {
@@ -29,13 +28,13 @@ func main() {
29
28
}
30
29
31
30
for _ , fname := range os .Args [1 :] {
32
- if err := erasePinf (fname ); err != nil {
31
+ if err := erase (fname ); err != nil {
33
32
log .Fatalln (err )
34
33
}
35
34
}
36
35
}
37
36
38
- func erasePinf (filename string ) error {
37
+ func erase (filename string ) error {
39
38
f , err := os .OpenFile (filename , os .O_RDWR , 0644 )
40
39
if err != nil {
41
40
return err
@@ -47,12 +46,24 @@ func erasePinf(filename string) error {
47
46
return err
48
47
}
49
48
50
- pinf , err := searchAtom (atoms , "pinf" )
49
+ for _ , an := range []string {"pinf" , "apID" , "purd" , "ownr" } {
50
+ if err := eraseAtom (an , atoms , f ); err != nil {
51
+ return err
52
+ }
53
+ }
54
+
55
+ return nil
56
+ }
57
+
58
+ func eraseAtom (atomName string , atoms map [string ]* Atom , w io.WriteSeeker ) error {
59
+ atom , err := searchAtom (atoms , atomName )
51
60
if err != nil {
52
61
return err
53
62
}
54
-
55
- return pinf .destroy (f )
63
+ if atom == nil {
64
+ return fmt .Errorf ("atom not found: %s" , atomName )
65
+ }
66
+ return atom .destroy (w )
56
67
}
57
68
58
69
func searchAtom (atoms map [string ]* Atom , target string ) (* Atom , error ) {
@@ -61,10 +72,16 @@ func searchAtom(atoms map[string]*Atom, target string) (*Atom, error) {
61
72
return atom , nil
62
73
}
63
74
if len (atom .Children ) > 0 {
64
- return searchAtom (atom .Children , target )
75
+ atom , err := searchAtom (atom .Children , target )
76
+ if err != nil {
77
+ return nil , err
78
+ }
79
+ if atom != nil {
80
+ return atom , nil
81
+ }
65
82
}
66
83
}
67
- return nil , fmt . Errorf ( "atom not found: %s" , target )
84
+ return nil , nil
68
85
}
69
86
70
87
type Atom struct {
0 commit comments