}
/**
+ * Tries to automatically detect the audio codec from the filename. In most
+ * cases this will match the {@link AudioCodecDescription#code} of the codec
+ * but in some cases other extensions are possible, too. Also, on Amiga
+ * filenames usually start with the extension (mod files are often named
+ * “mod.somethingsomethingsomethingdarkside”).
+ *
+ * @param filename
+ * The name of the file
+ * @return The audio codec of the file, or {@code null} if no codec could be
+ * detected
+ */
+ public static AudioCodecDescription detect(String filename) {
+ String extension = filename.substring(filename.lastIndexOf('.') + 1).toLowerCase();
+ if (codecDescriptions.containsKey(extension)) {
+ return codecDescriptions.get(extension);
+ }
+ if (extension.equals("ogg")) {
+ return codecDescriptions.get("vorbis");
+ }
+ if (extension.equals("mp4")) {
+ return codecDescriptions.get("aac");
+ }
+ if (extension.equals("xm")) {
+ return codecDescriptions.get("ft2");
+ }
+ return null;
+ }
+
+ /**
* Bundles descriptions for various audio codecs. For simplicity reasons,
* file formats such as MOD, IT, or SID are also treated as audio codecs
* even though they are not.