📄 wavaudioformat.java
字号:
package com.sun.media.format;import java.util.Hashtable;import javax.media.Format;import javax.media.format.AudioFormat;import net.sf.fmj.utility.FormatUtils;/** * Coding complete. * @author Ken Larson * */public class WavAudioFormat extends AudioFormat{ public static final int WAVE_FORMAT_PCM = 1; public static final int WAVE_FORMAT_ADPCM = 2; public static final int WAVE_FORMAT_ALAW = 6; public static final int WAVE_FORMAT_MULAW = 7; public static final int WAVE_FORMAT_OKI_ADPCM = 16; public static final int WAVE_FORMAT_DIGISTD = 21; public static final int WAVE_FORMAT_DIGIFIX = 22; public static final int WAVE_FORMAT_GSM610 = 49; public static final int WAVE_IBM_FORMAT_MULAW = 257; public static final int WAVE_IBM_FORMAT_ALAW = 258; public static final int WAVE_IBM_FORMAT_ADPCM = 259; public static final int WAVE_FORMAT_DVI_ADPCM = 17; public static final int WAVE_FORMAT_SX7383 = 7175; public static final int WAVE_FORMAT_DSPGROUP_TRUESPEECH = 34; public static final int WAVE_FORMAT_MSNAUDIO = 50; public static final int WAVE_FORMAT_MSG723 = 66; public static final int WAVE_FORMAT_MPEG_LAYER3 = 85; public static final int WAVE_FORMAT_VOXWARE_AC8 = 112; public static final int WAVE_FORMAT_VOXWARE_AC10 = 113; public static final int WAVE_FORMAT_VOXWARE_AC16 = 114; public static final int WAVE_FORMAT_VOXWARE_AC20 = 115; public static final int WAVE_FORMAT_VOXWARE_METAVOICE = 116; public static final int WAVE_FORMAT_VOXWARE_METASOUND = 117; public static final int WAVE_FORMAT_VOXWARE_RT29H = 118; public static final int WAVE_FORMAT_VOXWARE_VR12 = 119; public static final int WAVE_FORMAT_VOXWARE_VR18 = 120; public static final int WAVE_FORMAT_VOXWARE_TQ40 = 121; public static final int WAVE_FORMAT_VOXWARE_TQ60 = 129; public static final int WAVE_FORMAT_MSRT24 = 130; protected byte[] codecSpecificHeader; private int averageBytesPerSecond = NOT_SPECIFIED; public static final Hashtable formatMapper = new Hashtable(); public static final Hashtable reverseFormatMapper = new Hashtable(); public WavAudioFormat(String encoding) { super(encoding); } public WavAudioFormat(String encoding, double sampleRate, int sampleSizeInBits, int channels, int frameSizeInBits, int averageBytesPerSecond, byte[] codecSpecificHeader) { // averageBytesPerSecond seems to be substituted for frameRate. super(encoding, sampleRate, sampleSizeInBits, channels, NOT_SPECIFIED, NOT_SPECIFIED, frameSizeInBits, averageBytesPerSecond /*frameRate*/, byteArray); this.averageBytesPerSecond = averageBytesPerSecond; this.codecSpecificHeader = codecSpecificHeader; } public WavAudioFormat(String encoding, double sampleRate, int sampleSizeInBits, int channels, int frameSizeInBits, int averageBytesPerSecond, int endian, int signed, float frameRate, Class dataType, byte[] codecSpecificHeader) { // averageBytesPerSecond seems to be substituted for frameRate. super(encoding, sampleRate, sampleSizeInBits, channels, endian, signed, frameSizeInBits, averageBytesPerSecond /*frameRate*/, dataType); this.averageBytesPerSecond = averageBytesPerSecond; this.codecSpecificHeader = codecSpecificHeader; } public int getAverageBytesPerSecond() { return averageBytesPerSecond; } public byte[] getCodecSpecificHeader() { return codecSpecificHeader; } public boolean equals(Object format) { if (!super.equals(format)) return false; if (!(format instanceof WavAudioFormat)) { return false; } final WavAudioFormat oCast = (WavAudioFormat) format; return this.averageBytesPerSecond == oCast.averageBytesPerSecond && this.codecSpecificHeader == oCast.codecSpecificHeader; // TODO: equals or == } public boolean matches(Format format) { if (!super.matches(format)) return false; if (!(format instanceof WavAudioFormat)) return true; final WavAudioFormat oCast = (WavAudioFormat) format; return FormatUtils.matches(this.averageBytesPerSecond, oCast.averageBytesPerSecond) && FormatUtils.matches(this.codecSpecificHeader, oCast.codecSpecificHeader); } public Format intersects(Format other) { final Format result = super.intersects(other); if (other instanceof WavAudioFormat) { final WavAudioFormat resultCast = (WavAudioFormat) result; final WavAudioFormat oCast = (WavAudioFormat) other; if (getClass().isAssignableFrom(other.getClass())) { // "other" was cloned. if (FormatUtils.specified(this.averageBytesPerSecond)) resultCast.averageBytesPerSecond = this.averageBytesPerSecond; if (FormatUtils.specified(this.codecSpecificHeader)) resultCast.codecSpecificHeader = this.codecSpecificHeader; } else if (other.getClass().isAssignableFrom(getClass())) { // this was cloned if (!FormatUtils.specified(resultCast.averageBytesPerSecond)) resultCast.averageBytesPerSecond = oCast.averageBytesPerSecond; if (!FormatUtils.specified(resultCast.codecSpecificHeader)) resultCast.codecSpecificHeader = oCast.codecSpecificHeader; } } return result; } public Object clone() { return new WavAudioFormat(encoding, sampleRate, sampleSizeInBits, channels, frameSizeInBits, averageBytesPerSecond, endian, signed, (float) frameRate, dataType, codecSpecificHeader); } protected void copy(Format f) { super.copy(f); final WavAudioFormat oCast = (WavAudioFormat) f; // it has to be a WavAudioFormat, or ClassCastException will be thrown. this.averageBytesPerSecond = oCast.averageBytesPerSecond; this.codecSpecificHeader = oCast.codecSpecificHeader; } static { // TODO: what are these used for? formatMapper.put(new Integer(1), "LINEAR"); formatMapper.put(new Integer(2), "msadpcm"); formatMapper.put(new Integer(6), "alaw"); formatMapper.put(new Integer(7), "ULAW"); formatMapper.put(new Integer(17), "ima4/ms"); formatMapper.put(new Integer(34), "truespeech"); formatMapper.put(new Integer(49), "gsm/ms"); formatMapper.put(new Integer(50), "msnaudio"); formatMapper.put(new Integer(85), "mpeglayer3"); formatMapper.put(new Integer(112), "voxwareac8"); formatMapper.put(new Integer(113), "voxwareac10"); formatMapper.put(new Integer(114), "voxwareac16"); formatMapper.put(new Integer(115), "voxwareac20"); formatMapper.put(new Integer(116), "voxwaremetavoice"); formatMapper.put(new Integer(117), "voxwaremetasound"); formatMapper.put(new Integer(118), "voxwarert29h"); formatMapper.put(new Integer(119), "voxwarevr12"); formatMapper.put(new Integer(120), "voxwarevr18"); formatMapper.put(new Integer(121), "voxwaretq40"); formatMapper.put(new Integer(129), "voxwaretq60"); formatMapper.put(new Integer(130), "msrt24"); reverseFormatMapper.put("alaw", new Integer(6)); reverseFormatMapper.put("gsm/ms", new Integer(49)); reverseFormatMapper.put("ima4/ms", new Integer(17)); reverseFormatMapper.put("linear", new Integer(1)); reverseFormatMapper.put("mpeglayer3", new Integer(85)); reverseFormatMapper.put("msadpcm", new Integer(2)); reverseFormatMapper.put("msnaudio", new Integer(50)); reverseFormatMapper.put("msrt24", new Integer(130)); reverseFormatMapper.put("truespeech", new Integer(34)); reverseFormatMapper.put("ulaw", new Integer(7)); reverseFormatMapper.put("voxwareac10", new Integer(113)); reverseFormatMapper.put("voxwareac16", new Integer(114)); reverseFormatMapper.put("voxwareac20", new Integer(115)); reverseFormatMapper.put("voxwareac8", new Integer(112)); reverseFormatMapper.put("voxwaremetasound", new Integer(117)); reverseFormatMapper.put("voxwaremetavoice", new Integer(116)); reverseFormatMapper.put("voxwarert29h", new Integer(118)); reverseFormatMapper.put("voxwaretq40", new Integer(121)); reverseFormatMapper.put("voxwaretq60", new Integer(129)); reverseFormatMapper.put("voxwarevr12", new Integer(119)); reverseFormatMapper.put("voxwarevr18", new Integer(120)); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -