| 
 | Java™ Platform Standard Ed. 6 | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectjavax.sound.sampled.AudioFormat
public class AudioFormat
AudioFormat is the class that specifies a particular arrangement of data in a sound stream.
 By examing the information stored in the audio format, you can discover how to interpret the bits in the
 binary sound data.
 
 Every data line has an audio format associated with its data stream. The audio format of a source (playback) data line indicates
 what kind of data the data line expects to receive for output.  For a target (capture) data line, the audio format specifies the kind
 of the data that can be read from the line.
 Sound files also have audio formats, of course.  The AudioFileFormatAudioFormat in addition to other,
 file-specific information.  Similarly, an AudioInputStreamAudioFormat.
 
 The AudioFormat class accommodates a number of common sound-file encoding techniques, including
 pulse-code modulation (PCM), mu-law encoding, and a-law encoding.  These encoding techniques are predefined,
 but service providers can create new encoding types.
 The encoding that a specific format uses is named by its encoding field.
In addition to the encoding, the audio format includes other properties that further specify the exact arrangement of the data. These include the number of channels, sample rate, sample size, byte order, frame rate, and frame size. Sounds may have different numbers of audio channels: one for mono, two for stereo. The sample rate measures how many "snapshots" (samples) of the sound pressure are taken per second, per channel. (If the sound is stereo rather than mono, two samples are actually measured at each instant of time: one for the left channel, and another for the right channel; however, the sample rate still measures the number per channel, so the rate is the same regardless of the number of channels. This is the standard use of the term.) The sample size indicates how many bits are used to store each snapshot; 8 and 16 are typical values. For 16-bit samples (or any other sample size larger than a byte), byte order is important; the bytes in each sample are arranged in either the "little-endian" or "big-endian" style. For encodings like PCM, a frame consists of the set of samples for all channels at a given point in time, and so the size of a frame (in bytes) is always equal to the size of a sample (in bytes) times the number of channels. However, with some other sorts of encodings a frame can contain a bundle of compressed data for a whole series of samples, as well as additional, non-sample data. For such encodings, the sample rate and sample size refer to the data after it is decoded into PCM, and so they are completely different from the frame rate and frame size.
An AudioFormat object can include a set of
 properties. A property is a pair of key and value: the key
 is of type String, the associated property
 value is an arbitrary object. Properties specify
 additional format specifications, like the bit rate for
 compressed formats. Properties are mainly used as a means
 to transport additional information of the audio format
 to and from the service providers. Therefore, properties
 are ignored in the matches(AudioFormat) method.
 However, methods which rely on the installed service
 providers, like (AudioFormat, AudioFormat) isConversionSupported may consider
 properties, depending on the respective service provider
 implementation.
 
The following table lists some common properties which service providers should use, if applicable:
| Property key | Value type | Description | 
|---|---|---|
| "bitrate" | Integer | average bit rate in bits per second | 
| "vbr" | Boolean | true, if the file is encoded in variable bit
       rate (VBR) | 
| "quality" | Integer | encoding/conversion quality, 1..100 | 
Vendors of service providers (plugins) are encouraged to seek information about other already established properties in third party plugins, and follow the same conventions.
DataLine.getFormat(), 
AudioInputStream.getFormat(), 
AudioFileFormat, 
FormatConversionProvider| Nested Class Summary | |
|---|---|
| static class | AudioFormat.EncodingThe Encodingclass  names the  specific type of data representation
 used for an audio stream. | 
| Field Summary | |
|---|---|
| protected  boolean | bigEndianIndicates whether the audio data is stored in big-endian or little-endian order. | 
| protected  int | channelsThe number of audio channels in this format (1 for mono, 2 for stereo). | 
| protected  AudioFormat.Encoding | encodingThe audio encoding technique used by this format. | 
| protected  float | frameRateThe number of frames played or recorded per second, for sounds that have this format. | 
| protected  int | frameSizeThe number of bytes in each frame of a sound that has this format. | 
| protected  float | sampleRateThe number of samples played or recorded per second, for sounds that have this format. | 
| protected  int | sampleSizeInBitsThe number of bits in each sample of a sound that has this format. | 
| Constructor Summary | |
|---|---|
| AudioFormat(AudioFormat.Encoding encoding,
            float sampleRate,
            int sampleSizeInBits,
            int channels,
            int frameSize,
            float frameRate,
            boolean bigEndian)Constructs an AudioFormatwith the given parameters. | |
| AudioFormat(AudioFormat.Encoding encoding,
            float sampleRate,
            int sampleSizeInBits,
            int channels,
            int frameSize,
            float frameRate,
            boolean bigEndian,
            Map<String,Object> properties)Constructs an AudioFormatwith the given parameters. | |
| AudioFormat(float sampleRate,
            int sampleSizeInBits,
            int channels,
            boolean signed,
            boolean bigEndian)Constructs an AudioFormatwith a linear PCM encoding and
 the given parameters. | |
| Method Summary | |
|---|---|
|  int | getChannels()Obtains the number of channels. | 
|  AudioFormat.Encoding | getEncoding()Obtains the type of encoding for sounds in this format. | 
|  float | getFrameRate()Obtains the frame rate in frames per second. | 
|  int | getFrameSize()Obtains the frame size in bytes. | 
|  Object | getProperty(String key)Obtain the property value specified by the key. | 
|  float | getSampleRate()Obtains the sample rate. | 
|  int | getSampleSizeInBits()Obtains the size of a sample. | 
|  boolean | isBigEndian()Indicates whether the audio data is stored in big-endian or little-endian byte order. | 
|  boolean | matches(AudioFormat format)Indicates whether this format matches the one specified. | 
|  Map<String,Object> | properties()Obtain an unmodifiable map of properties. | 
|  String | toString()Returns a string that describes the format, such as: "PCM SIGNED 22050 Hz 16 bit mono big-endian". | 
| Methods inherited from class java.lang.Object | 
|---|
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | 
| Field Detail | 
|---|
protected AudioFormat.Encoding encoding
protected float sampleRate
protected int sampleSizeInBits
protected int channels
protected int frameSize
protected float frameRate
protected boolean bigEndian
| Constructor Detail | 
|---|
public AudioFormat(AudioFormat.Encoding encoding,
                   float sampleRate,
                   int sampleSizeInBits,
                   int channels,
                   int frameSize,
                   float frameRate,
                   boolean bigEndian)
AudioFormat with the given parameters.
 The encoding specifies the convention used to represent the data.
 The other parameters are further explained in the class description.
encoding - the audio encoding techniquesampleRate - the number of samples per secondsampleSizeInBits - the number of bits in each samplechannels - the number of channels (1 for mono, 2 for stereo, and so on)frameSize - the number of bytes in each frameframeRate - the number of frames per secondbigEndian - indicates whether the data for a single sample
                                                        is stored in big-endian byte order (false
                                                        means little-endian)
public AudioFormat(AudioFormat.Encoding encoding,
                   float sampleRate,
                   int sampleSizeInBits,
                   int channels,
                   int frameSize,
                   float frameRate,
                   boolean bigEndian,
                   Map<String,Object> properties)
AudioFormat with the given parameters.
 The encoding specifies the convention used to represent the data.
 The other parameters are further explained in the class description.
encoding - the audio encoding techniquesampleRate - the number of samples per secondsampleSizeInBits - the number of bits in each samplechannels - the number of channels (1 for mono, 2 for
                         stereo, and so on)frameSize - the number of bytes in each frameframeRate - the number of frames per secondbigEndian - indicates whether the data for a single sample
                         is stored in big-endian byte order
                         (false means little-endian)properties - a Map<String,Object> object
                         containing format properties
public AudioFormat(float sampleRate,
                   int sampleSizeInBits,
                   int channels,
                   boolean signed,
                   boolean bigEndian)
AudioFormat with a linear PCM encoding and
 the given parameters.  The frame size is set to the number of bytes
 required to contain one sample from each channel, and the frame rate
 is set to the sample rate.
sampleRate - the number of samples per secondsampleSizeInBits - the number of bits in each samplechannels - the number of channels (1 for mono, 2 for stereo, and so on)signed - indicates whether the data is signed or unsignedbigEndian - indicates whether the data for a single sample
                                                        is stored in big-endian byte order (false
                                                        means little-endian)| Method Detail | 
|---|
public AudioFormat.Encoding getEncoding()
AudioFormat.Encoding.PCM_SIGNED, 
AudioFormat.Encoding.PCM_UNSIGNED, 
AudioFormat.Encoding.ULAW, 
AudioFormat.Encoding.ALAWpublic float getSampleRate()
AudioSystem.isConversionSupported) or capabilities (e.g. DataLine.Info.getFormats), a sample rate of
 AudioSystem.NOT_SPECIFIED means that any sample rate is
 acceptable. AudioSystem.NOT_SPECIFIED is also returned when
 the sample rate is not defined for this audio format.
AudioSystem.NOT_SPECIFIEDgetFrameRate(), 
AudioSystem.NOT_SPECIFIEDpublic int getSampleSizeInBits()
AudioSystem.isConversionSupported) or capabilities (e.g. DataLine.Info.getFormats), a sample size of
 AudioSystem.NOT_SPECIFIED means that any sample size is
 acceptable. AudioSystem.NOT_SPECIFIED is also returned when
 the sample size is not defined for this audio format.
AudioSystem.NOT_SPECIFIEDgetFrameSize(), 
AudioSystem.NOT_SPECIFIEDpublic int getChannels()
AudioSystem.isConversionSupported) or capabilities (e.g. DataLine.Info.getFormats), a return value of
 AudioSystem.NOT_SPECIFIED means that any (positive) number of channels is
 acceptable.
AudioSystem.NOT_SPECIFIEDAudioSystem.NOT_SPECIFIEDpublic int getFrameSize()
AudioSystem.isConversionSupported) or capabilities (e.g. DataLine.Info.getFormats), a frame size of
 AudioSystem.NOT_SPECIFIED means that any frame size is
 acceptable. AudioSystem.NOT_SPECIFIED is also returned when
 the frame size is not defined for this audio format.
AudioSystem.NOT_SPECIFIEDgetSampleSizeInBits(), 
AudioSystem.NOT_SPECIFIEDpublic float getFrameRate()
AudioSystem.isConversionSupported) or capabilities (e.g. DataLine.Info.getFormats), a frame rate of
 AudioSystem.NOT_SPECIFIED means that any frame rate is
 acceptable. AudioSystem.NOT_SPECIFIED is also returned when
 the frame rate is not defined for this audio format.
AudioSystem.NOT_SPECIFIEDgetSampleRate(), 
AudioSystem.NOT_SPECIFIEDpublic boolean isBigEndian()
true if the data is stored in big-endian byte order,
 false if little-endianpublic Map<String,Object> properties()
class description.
Map<String,Object> object containing
         all properties. If no properties are recognized, an empty map is
         returned.getProperty(String)public Object getProperty(String key)
class description.
 If the specified property is not defined for a
 particular file format, this method returns
 null.
key - the key of the desired property
null if the property does not exist.propertiespublic boolean matches(AudioFormat format)
AudioSystem.NOT_SPECIFIED,
 which any sample rate will match.  The frame rates must
 similarly be equal, unless the specified format has the frame rate
 value AudioSystem.NOT_SPECIFIED.  The byte order (big-endian or little-endian)
 must match if the sample size is greater than one byte.
format - format to test for match
true if this format matches the one specified,
 false otherwise.public String toString()
toString in class Object| 
 | Java™ Platform Standard Ed. 6 | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
Copyright © 1993, 2010, Oracle and/or its affiliates. All rights reserved.