Skip to content

Commit f18bfaf

Browse files
committed
Fix searchAtom bug
1 parent 03215d9 commit f18bfaf

File tree

2 files changed

+30
-13
lines changed

2 files changed

+30
-13
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
erasepinf
22
==============
3-
Erasing pinf atom in mp4
3+
Erasing pinf (+ extra metadata) atom in mp4
44

55
## Install
66

erasepinf.go

+29-12
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ package main
22

33
import (
44
"encoding/binary"
5-
"fmt"
65
"io"
76
"log"
87
"os"
8+
"fmt"
99
)
1010

1111
// atomName => padding size
@@ -17,10 +17,9 @@ var boxAtomPaddings = map[string]int64{
1717
"stsd": 8,
1818
"stbl": 0,
1919
"mp4a": 28,
20-
21-
// --- in pinf
22-
"pinf": 0,
23-
"schi": 0,
20+
"udta": 0,
21+
"meta": 4,
22+
"ilst": 0,
2423
}
2524

2625
func main() {
@@ -29,13 +28,13 @@ func main() {
2928
}
3029

3130
for _, fname := range os.Args[1:] {
32-
if err := erasePinf(fname); err != nil {
31+
if err := erase(fname); err != nil {
3332
log.Fatalln(err)
3433
}
3534
}
3635
}
3736

38-
func erasePinf(filename string) error {
37+
func erase(filename string) error {
3938
f, err := os.OpenFile(filename, os.O_RDWR, 0644)
4039
if err != nil {
4140
return err
@@ -47,12 +46,24 @@ func erasePinf(filename string) error {
4746
return err
4847
}
4948

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)
5160
if err != nil {
5261
return err
5362
}
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)
5667
}
5768

5869
func searchAtom(atoms map[string]*Atom, target string) (*Atom, error) {
@@ -61,10 +72,16 @@ func searchAtom(atoms map[string]*Atom, target string) (*Atom, error) {
6172
return atom, nil
6273
}
6374
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+
}
6582
}
6683
}
67-
return nil, fmt.Errorf("atom not found: %s", target)
84+
return nil, nil
6885
}
6986

7087
type Atom struct {

0 commit comments

Comments
 (0)