Package com.sun.media.format

Source Code of com.sun.media.format.WavAudioFormat

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));

  }

}
TOP

Related Classes of com.sun.media.format.WavAudioFormat

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.