1 package magic
2
3 import "bytes"
4
5 var (
6
7
8
9 AVIF = ftyp([]byte("avif"), []byte("avis"))
10
11 Mp4 = ftyp(
12 []byte("avc1"), []byte("dash"), []byte("iso2"), []byte("iso3"),
13 []byte("iso4"), []byte("iso5"), []byte("iso6"), []byte("isom"),
14 []byte("mmp4"), []byte("mp41"), []byte("mp42"), []byte("mp4v"),
15 []byte("mp71"), []byte("MSNV"), []byte("NDAS"), []byte("NDSC"),
16 []byte("NSDC"), []byte("NSDH"), []byte("NDSM"), []byte("NDSP"),
17 []byte("NDSS"), []byte("NDXC"), []byte("NDXH"), []byte("NDXM"),
18 []byte("NDXP"), []byte("NDXS"), []byte("F4V "), []byte("F4P "),
19 )
20
21 ThreeGP = ftyp(
22 []byte("3gp1"), []byte("3gp2"), []byte("3gp3"), []byte("3gp4"),
23 []byte("3gp5"), []byte("3gp6"), []byte("3gp7"), []byte("3gs7"),
24 []byte("3ge6"), []byte("3ge7"), []byte("3gg6"),
25 )
26
27 ThreeG2 = ftyp(
28 []byte("3g24"), []byte("3g25"), []byte("3g26"), []byte("3g2a"),
29 []byte("3g2b"), []byte("3g2c"), []byte("KDDI"),
30 )
31
32 AMp4 = ftyp(
33
34 []byte("F4A "), []byte("F4B "),
35
36 []byte("M4B "), []byte("M4P "),
37
38 []byte("MSNV"),
39
40 []byte("NDAS"),
41 )
42
43 Mqv = ftyp([]byte("mqt "))
44
45 M4a = ftyp([]byte("M4A "))
46
47 M4v = ftyp([]byte("M4V "), []byte("M4VH"), []byte("M4VP"))
48
49 Heic = ftyp([]byte("heic"), []byte("heix"))
50
51 HeicSequence = ftyp([]byte("hevc"), []byte("hevx"))
52
53 Heif = ftyp([]byte("mif1"), []byte("heim"), []byte("heis"), []byte("avic"))
54
55 HeifSequence = ftyp([]byte("msf1"), []byte("hevm"), []byte("hevs"), []byte("avcs"))
56
57 )
58
59
60
61
62
63 func QuickTime(raw []byte, _ uint32) bool {
64 if len(raw) < 12 {
65 return false
66 }
67
68
69
70
71 if bytes.Equal(raw[4:12], []byte("ftypqt ")) ||
72 bytes.Equal(raw[4:12], []byte("ftypmoov")) {
73 return raw[0] == 0x00
74 }
75 basicAtomTypes := [][]byte{
76 []byte("moov\x00"),
77 []byte("mdat\x00"),
78 []byte("free\x00"),
79 []byte("skip\x00"),
80 []byte("pnot\x00"),
81 }
82 for _, a := range basicAtomTypes {
83 if bytes.Equal(raw[4:9], a) {
84 return true
85 }
86 }
87 return bytes.Equal(raw[:8], []byte("\x00\x00\x00\x08wide"))
88 }
89
View as plain text