From 9fee0ec4ca0c5b7a334cc29dbb58e76c7a4c736e Mon Sep 17 00:00:00 2001 From: Michiel Van Der Kolk Date: Mon, 11 Jul 2005 15:42:37 +0000 Subject: Songdb java version, source. only 1.5 compatible git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7101 a1c6a512-1295-4272-9138-f99709370657 --- .../share/sampled/convert/TAudioInputStream.java | 120 +++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 songdbj/org/tritonus/share/sampled/convert/TAudioInputStream.java (limited to 'songdbj/org/tritonus/share/sampled/convert/TAudioInputStream.java') diff --git a/songdbj/org/tritonus/share/sampled/convert/TAudioInputStream.java b/songdbj/org/tritonus/share/sampled/convert/TAudioInputStream.java new file mode 100644 index 0000000000..d84530e115 --- /dev/null +++ b/songdbj/org/tritonus/share/sampled/convert/TAudioInputStream.java @@ -0,0 +1,120 @@ +/* + * TAudioInputStream.java + * + * This file is part of Tritonus: http://www.tritonus.org/ + */ + +/* + * Copyright (c) 2003 by Matthias Pfisterer + * + * 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. + */ + +/* +|<--- this code is formatted to fit into 80 columns --->| +*/ + +package org.tritonus.share.sampled.convert; + +import java.io.InputStream; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +import javax.sound.sampled.AudioFormat; +import javax.sound.sampled.AudioInputStream; + + +/** AudioInputStream base class. This class implements "dynamic" + properties. "Dynamic" properties are properties that may change + during the life time of the objects. This is typically used to + pass information like the current frame number, volume of subbands + and similar values. "Dynamic" properties are different from + properties in AudioFormat and AudioFileFormat, which are + considered "static", as they aren't allowed to change after + creating of the object, thereby maintaining the immutable + character of these classes. +*/ + +public class TAudioInputStream +extends AudioInputStream +{ + private Map m_properties; + private Map m_unmodifiableProperties; + + + /** Constructor without properties. + Creates an empty properties map. + */ + public TAudioInputStream(InputStream inputStream, + AudioFormat audioFormat, + long lLengthInFrames) + { + super(inputStream, audioFormat, lLengthInFrames); + initMaps(new HashMap()); + } + + + /** Constructor with properties. + The passed properties map is not copied. This allows subclasses + to change values in the map after creation, and the changes are + reflected in the map the application program can obtain. + */ + public TAudioInputStream(InputStream inputStream, + AudioFormat audioFormat, + long lLengthInFrames, + Map properties) + { + super(inputStream, audioFormat, lLengthInFrames); + initMaps(properties); + } + + + private void initMaps(Map properties) + { + /* Here, we make a shallow copy of the map. It's unclear if this + is sufficient (of if a deep copy should be made). + */ + m_properties = properties; + m_unmodifiableProperties = Collections.unmodifiableMap(m_properties); + } + + + /** Obtain a Map containing the properties. This method returns a + Map that cannot be modified by the application program, but + reflects changes to the map made by the implementation. + + @return a map containing the properties. + */ + public Map properties() + { + return m_unmodifiableProperties; + } + + + /** Set a property. Unlike in AudioFormat and AudioFileFormat, + this method may be used anywhere by subclasses - it is not + restricted to be used in the constructor. + */ + protected void setProperty(String key, Object value) + { + m_properties.put(key, value); + } +} + + + +/*** TAudioInputStream.java ***/ -- cgit v1.2.3