diff options
| author | Björn Stenberg <bjorn@haxx.se> | 2007-01-08 23:53:00 +0000 |
|---|---|---|
| committer | Björn Stenberg <bjorn@haxx.se> | 2007-01-08 23:53:00 +0000 |
| commit | 7039a05147b8bbfc829babea1c65bd436450b505 (patch) | |
| tree | 4ba555eb84ed97b72b0575034d5b0530a393713e /songdbj/MpegInfo.java | |
| parent | 6d4c19707ef95942e323cbdc89fbbfdbe45e7cc5 (diff) | |
| download | rockbox-7039a05147b8bbfc829babea1c65bd436450b505.zip rockbox-7039a05147b8bbfc829babea1c65bd436450b505.tar.gz rockbox-7039a05147b8bbfc829babea1c65bd436450b505.tar.bz2 rockbox-7039a05147b8bbfc829babea1c65bd436450b505.tar.xz | |
Splitting out songdbj
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11953 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'songdbj/MpegInfo.java')
| -rw-r--r-- | songdbj/MpegInfo.java | 367 |
1 files changed, 0 insertions, 367 deletions
diff --git a/songdbj/MpegInfo.java b/songdbj/MpegInfo.java deleted file mode 100644 index 6f57879..0000000 --- a/songdbj/MpegInfo.java +++ /dev/null @@ -1,367 +0,0 @@ -/* - * MpegInfo. - * - * JavaZOOM : jlgui@javazoom.net - * http://www.javazoom.net - * - *----------------------------------------------------------------------- - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as published - * by the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - *---------------------------------------------------------------------- - */ - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; -import java.util.Iterator; -import java.util.Map; -import java.util.Vector; -import java.io.FileInputStream; -import java.io.BufferedInputStream; -import javax.sound.sampled.AudioFileFormat; -import javax.sound.sampled.AudioSystem; -import javax.sound.sampled.UnsupportedAudioFileException; - -import org.tritonus.share.sampled.file.TAudioFileFormat; - -/** - * This class gives information (audio format and comments) about MPEG file or URL. - */ -public class MpegInfo implements TagInfo -{ - protected int channels = -1; - protected String channelsMode = null; - protected String version = null; - protected int rate = 0; - protected String layer = null; - protected String emphasis = null; - protected int nominalbitrate = 0; - protected long total = 0; - protected String vendor = null; - protected String location = null; - protected long size = 0; - protected boolean copyright = false; - protected boolean crc = false; - protected boolean original = false; - protected boolean priv = false; - protected boolean vbr = false; - protected int track = -1; - protected int offset = 0; - protected String year = null; - protected String genre = null; - protected String title = null; - protected String artist = null; - protected String album = null; - protected Vector comments = null; - - /** - * Constructor. - */ - public MpegInfo() - { - super(); - } - - /** - * Load and parse MPEG info from File. - * @param input - * @throws IOException - */ - public void load(File input) throws IOException, UnsupportedAudioFileException - { - size = input.length(); - location = input.getPath(); - loadInfo(input); - } - - /** - * Load and parse MPEG info from URL. - * @param input - * @throws IOException - * @throws UnsupportedAudioFileException - */ - public void load(URL input) throws IOException, UnsupportedAudioFileException - { - location = input.toString(); - loadInfo(input); - } - - /** - * Load and parse MPEG info from InputStream. - * @param input - * @throws IOException - * @throws UnsupportedAudioFileException - */ - public void load(InputStream input) throws IOException, UnsupportedAudioFileException - { - loadInfo(input); - } - - /** - * Load info from input stream. - * @param input - * @throws IOException - * @throws UnsupportedAudioFileException - */ - protected void loadInfo(InputStream input) throws IOException, UnsupportedAudioFileException - { - AudioFileFormat aff = AudioSystem.getAudioFileFormat(input); - loadInfo(aff); - } - - /** - * Load MP3 info from file. - * @param file - * @throws IOException - * @throws UnsupportedAudioFileException - */ - protected void loadInfo(File file) throws IOException, UnsupportedAudioFileException - { - InputStream in = new BufferedInputStream(new FileInputStream(file)); - loadInfo(in); - in.close(); - } - - /** - * Load info from AudioFileFormat. - * @param aff - */ - protected void loadInfo(AudioFileFormat aff) throws UnsupportedAudioFileException - { - String type = aff.getType().toString(); - if (!type.equalsIgnoreCase("mp3")) throw new UnsupportedAudioFileException("Not MP3 audio format"); - if (aff instanceof TAudioFileFormat) - { - Map props = ((TAudioFileFormat) aff).properties(); - if (props.containsKey("mp3.channels")) channels = ((Integer)props.get("mp3.channels")).intValue(); - if (props.containsKey("mp3.frequency.hz")) rate = ((Integer)props.get("mp3.frequency.hz")).intValue(); - if (props.containsKey("mp3.bitrate.nominal.bps")) nominalbitrate = ((Integer)props.get("mp3.bitrate.nominal.bps")).intValue(); - if (props.containsKey("mp3.version.layer")) layer = "Layer "+(String)props.get("mp3.version.layer"); - if (props.containsKey("mp3.version.mpeg")) - { - version = (String)props.get("mp3.version.mpeg"); - if (version.equals("1")) version = "MPEG1"; - else if (version.equals("2")) version = "MPEG2-LSF"; - else if (version.equals("2.5")) version = "MPEG2.5-LSF"; - } - if (props.containsKey("mp3.mode")) - { - int mode = ((Integer)props.get("mp3.mode")).intValue(); - if (mode==0) channelsMode = "Stereo"; - else if (mode==1) channelsMode = "Joint Stereo"; - else if (mode==2) channelsMode = "Dual Channel"; - else if (mode==3) channelsMode = "Single Channel"; - } - if (props.containsKey("mp3.crc")) crc = ((Boolean)props.get("mp3.crc")).booleanValue(); - if (props.containsKey("mp3.vbr")) vbr = ((Boolean)props.get("mp3.vbr")).booleanValue(); - if (props.containsKey("mp3.copyright")) copyright = ((Boolean)props.get("mp3.copyright")).booleanValue(); - if (props.containsKey("mp3.original")) original = ((Boolean)props.get("mp3.original")).booleanValue(); - emphasis="none"; - - if (props.containsKey("title")) title = (String)props.get("title"); - if (props.containsKey("author")) artist = (String)props.get("author"); - if (props.containsKey("album")) album = (String)props.get("album"); - if (props.containsKey("date")) year = (String)props.get("date"); - if (props.containsKey("duration")) total = (long) Math.round((((Long)props.get("duration")).longValue())/1000000); - if (props.containsKey("mp3.id3tag.genre")) genre = (String)props.get("mp3.id3tag.genre"); - - if (props.containsKey("mp3.header.pos")) { - offset = ((Integer)props.get("mp3.header.pos")).intValue(); - } - else - offset = 0; - if (props.containsKey("mp3.id3tag.track")) - { - try - { - track = Integer.parseInt((String)props.get("mp3.id3tag.track")); - } - catch (NumberFormatException e1) - { - // Not a number - } - } - } - } - - /** - * Load MP3 info from URL. - * @param input - * @throws IOException - * @throws UnsupportedAudioFileException - */ - protected void loadInfo(URL input) throws IOException, UnsupportedAudioFileException - { - AudioFileFormat aff = AudioSystem.getAudioFileFormat(input); - loadInfo(aff); - loadShoutastInfo(aff); - } - - /** - * Load Shoutcast info from AudioFileFormat. - * @param aff - * @throws IOException - * @throws UnsupportedAudioFileException - */ - protected void loadShoutastInfo(AudioFileFormat aff) throws IOException, UnsupportedAudioFileException - { - String type = aff.getType().toString(); - if (!type.equalsIgnoreCase("mp3")) throw new UnsupportedAudioFileException("Not MP3 audio format"); - if (aff instanceof TAudioFileFormat) - { - Map props = ((TAudioFileFormat) aff).properties(); - // Try shoutcast meta data (if any). - Iterator it = props.keySet().iterator(); - comments = new Vector(); - while (it.hasNext()) - { - String key = (String) it.next(); - if (key.startsWith("mp3.shoutcast.metadata.")) - { - String value = (String) props.get(key); - key = key.substring(23,key.length()); - if (key.equalsIgnoreCase("icy-name")) - { - title = value; - } - else if (key.equalsIgnoreCase("icy-genre")) - { - genre = value; - } - else - { - comments.add(key+"="+value); - } - } - } - } - } - - public boolean getVBR() - { - return vbr; - } - - public int getChannels() - { - return channels; - } - - public String getVersion() - { - return version; - } - - public String getEmphasis() - { - return emphasis; - } - - public boolean getCopyright() - { - return copyright; - } - - public boolean getCRC() - { - return crc; - } - - public boolean getOriginal() - { - return original; - } - - public String getLayer() - { - return layer; - } - - public long getSize() - { - return size; - } - - public String getLocation() - { - return location; - } - - /*-- TagInfo Implementation --*/ - - public int getSamplingRate() - { - return rate; - } - - public int getBitRate() - { - return nominalbitrate; - } - - public long getPlayTime() - { - return total; - } - - public String getTitle() - { - return title; - } - - public String getArtist() - { - return artist; - } - - public String getAlbum() - { - return album; - } - - public int getTrack() - { - return track; - } - - public String getGenre() - { - return genre; - } - - public Vector getComment() - { - return comments; - } - - public String getYear() - { - return year; - } - - /** - * Get channels mode. - * @return - */ - public String getChannelsMode() - { - return channelsMode; - } - - public int getFirstFrameOffset() { - return offset; - } - -}
\ No newline at end of file |