/*
* @(#)AudioSystem.java 1.83 06/04/07
*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package javax.sound.sampled;
import java.io.File;
import java.io.InputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URL;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.Vector;
import java.util.ArrayList;
import javax.sound.sampled.spi.AudioFileWriter;
import javax.sound.sampled.spi.AudioFileReader;
import javax.sound.sampled.spi.FormatConversionProvider;
import javax.sound.sampled.spi.MixerProvider;
import com.sun.media.sound.JDK13Services;
/* $fb TODO:
* - consistent usage of (typed) collections
*/
/**
* The <code>AudioSystem</code> class acts as the entry point to the
* sampled-audio system resources. This class lets you query and
* access the mixers that are installed on the system.
* <code>AudioSystem</code> includes a number of
* methods for converting audio data between different formats, and for
* translating between audio files and streams. It also provides a method
* for obtaining a <code>{@link Line}</code> directly from the
* <code>AudioSystem</code> without dealing explicitly
* with mixers.
*
* <p>Properties can be used to specify the default mixer
* for specific line types.
* Both system properties and a properties file are considered.
* In the Sun reference implementation, the properties file is
* "lib/sound.properties" in the JRE
* directory. If a property exists both as a system property and in the
* properties file, the system property takes precedence. If none is
* specified, a suitable default is chosen among the available devices.
* The syntax of the properties file is specified in
* {@link java.util.Properties#load(InputStream) Properties.load}. The
* following table lists the available property keys and which methods
* consider them:
*
* <table border=0>
* <tr>
* <th>Property Key</th>
* <th>Interface</th>
* <th>Affected Method(s)</th>
* </tr>
* <tr>
* <td><code>javax.sound.sampled.Clip</code></td>
* <td>{@link Clip}</td>
* <td>{@link #getLine}, {@link #getClip}</td>
* </tr>
* <tr>
* <td><code>javax.sound.sampled.Port</code></td>
* <td>{@link Port}</td>
* <td>{@link #getLine}</td>
* </tr>
* <tr>
* <td><code>javax.sound.sampled.SourceDataLine</code></td>
* <td>{@link SourceDataLine}</td>
* <td>{@link #getLine}, {@link #getSourceDataLine}</td>
* </tr>
* <tr>
* <td><code>javax.sound.sampled.TargetDataLine</code></td>
* <td>{@link TargetDataLine}</td>
* <td>{@link #getLine}, {@link #getTargetDataLine}</td>
* </tr>
* </table>
*
* The property value consists of the provider class name
* and the mixer name, separated by the hash mark ("#").
* The provider class name is the fully-qualified
* name of a concrete {@link javax.sound.sampled.spi.MixerProvider
* mixer provider} class. The mixer name is matched against
* the <code>String</code> returned by the <code>getName</code>
* method of <code>Mixer.Info</code>.
* Either the class name, or the mixer name may be omitted.
* If only the class name is specified, the trailing hash mark
* is optional.
*
* <p>If the provider class is specified, and it can be
* successully retrieved from the installed providers, the list of
* <code>Mixer.Info</code> objects is retrieved
* from the provider. Otherwise, or when these mixers
=1= |