From 99cf6fe8734e6d7b983c7ce6f32ebb4143335cf0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20=E2=80=98Bombe=E2=80=99=20Roden?= Date: Mon, 30 Jul 2012 12:02:04 +0200 Subject: [PATCH] Add method that tries to automatically detect the audio codec from the filename. --- .../demoscenemusic/utils/AudioCodecs.java | 29 ++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/main/java/net/pterodactylus/demoscenemusic/utils/AudioCodecs.java b/src/main/java/net/pterodactylus/demoscenemusic/utils/AudioCodecs.java index f09e79f..4ec19e8 100644 --- a/src/main/java/net/pterodactylus/demoscenemusic/utils/AudioCodecs.java +++ b/src/main/java/net/pterodactylus/demoscenemusic/utils/AudioCodecs.java @@ -41,6 +41,35 @@ public class AudioCodecs { } /** + * 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. -- 2.7.4