shithub: patch

ref: 801c6e1167653f01779b5643a3e3870e2de56dee
dir: patch/file-opus

View raw version
diff -r 19baa5600a90 sys/src/cmd/file.c
--- a/sys/src/cmd/file.c	Mon Apr 06 01:31:35 2020 +0200
+++ b/sys/src/cmd/file.c	Mon Apr 06 04:34:43 2020 +0200
@@ -153,6 +153,8 @@
 int	istga(void);
 int	ismp3(void);
 int	ismp4(void);
+int	isoggvorbis(void);
+int	isoggopus(void);
 int	ismung(void);
 int	isp9bit(void);
 int	isp9font(void);
@@ -201,6 +203,8 @@
 	isicocur,		/* windows icon or cursor file */
 	isface,		/* ascii face file */
 	istga,
+	isoggvorbis,
+	isoggopus,
 	ismp4,
 	ismp3,
 
@@ -838,7 +842,6 @@
 	"\033%-12345X",		"HPJCL file",		9,	"application/hpjcl",
 	"\033Lua",		"Lua bytecode",		4,	OCTET,
 	"ID3",			"mp3 audio with id3",	3,	"audio/mpeg",
-	"OggS",			"ogg audio",		4,	"audio/ogg",
 	".snd",			"sun audio",		4,	"audio/basic",
 	"\211PNG",		"PNG image",		4,	"image/png",
 	"P1\n",			"ppm",			3,	"image/ppm",
@@ -1262,6 +1265,28 @@
 	return 0;
 }
 
+int
+isoggvorbis(void)
+{
+	if(memcmp(&buf[0], "OggS", 4) != 0)
+		return 0;
+	if(memcmp(&buf[29], "vorbis", 6) != 0)
+		return 0;
+	print("%s\n", mime ? "audio/ogg;codecs=vorbis" : "ogg audio");
+	return 1;
+}
+
+int
+isoggopus(void)
+{
+	if(memcmp(&buf[0], "OggS", 4) != 0)
+		return 0;
+	if(memcmp(&buf[28], "OpusHead", 8) != 0)
+		return 0;
+	print("%s\n", mime ? "audio/ogg;codecs=opus" : "ogg audio");
+	return 1;
+}
+
 /*
  * low entropy means encrypted
  */