Commit 4143491c authored by David Symonds's avatar David Symonds

http: add more MPEG-4 MIME types to sniffer, and disable MP4 sniffing.

R=rsc
CC=golang-dev
https://golang.org/cl/4808056
parent 583f7243
...@@ -98,7 +98,8 @@ var sniffSignatures = []sniffSig{ ...@@ -98,7 +98,8 @@ var sniffSignatures = []sniffSig{
&exactSig{[]byte("\x50\x4B\x03\x04"), "application/zip"}, &exactSig{[]byte("\x50\x4B\x03\x04"), "application/zip"},
&exactSig{[]byte("\x1F\x8B\x08"), "application/x-gzip"}, &exactSig{[]byte("\x1F\x8B\x08"), "application/x-gzip"},
mp4Sig(0), // TODO(dsymonds): Re-enable this when the spec is sorted w.r.t. MP4.
//mp4Sig(0),
textSig(0), // should be last textSig(0), // should be last
} }
...@@ -179,8 +180,18 @@ func (mp4Sig) match(data []byte, firstNonWS int) string { ...@@ -179,8 +180,18 @@ func (mp4Sig) match(data []byte, firstNonWS int) string {
// minor version number // minor version number
continue continue
} }
if bytes.Equal(data[st:st+3], []byte("mp4")) { seg := string(data[st : st+3])
switch seg {
case "mp4", "iso", "M4V", "M4P", "M4B":
return "video/mp4" return "video/mp4"
/* The remainder are not in the spec.
case "M4A":
return "audio/mp4"
case "3gp":
return "video/3gpp"
case "jp2":
return "image/jp2" // JPEG 2000
*/
} }
} }
return "" return ""
......
...@@ -35,7 +35,9 @@ var sniffTests = []struct { ...@@ -35,7 +35,9 @@ var sniffTests = []struct {
{"GIF 87a", []byte(`GIF87a`), "image/gif"}, {"GIF 87a", []byte(`GIF87a`), "image/gif"},
{"GIF 89a", []byte(`GIF89a...`), "image/gif"}, {"GIF 89a", []byte(`GIF89a...`), "image/gif"},
{"MP4", []byte("\x00\x00\x00\x18ftypmp42\x00\x00\x00\x00mp42isom<\x06t\xbfmdat"), "video/mp4"}, // TODO(dsymonds): Re-enable this when the spec is sorted w.r.t. MP4.
//{"MP4 video", []byte("\x00\x00\x00\x18ftypmp42\x00\x00\x00\x00mp42isom<\x06t\xbfmdat"), "video/mp4"},
//{"MP4 audio", []byte("\x00\x00\x00\x20ftypM4A \x00\x00\x00\x00M4A mp42isom\x00\x00\x00\x00"), "audio/mp4"},
} }
func TestDetectContentType(t *testing.T) { func TestDetectContentType(t *testing.T) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment