src/java.desktop/share/classes/com/sun/media/sound/UlawCodec.java

Print this page




  26 package com.sun.media.sound;
  27 
  28 import java.io.IOException;
  29 
  30 import java.util.Vector;
  31 
  32 import javax.sound.sampled.AudioFormat;
  33 import javax.sound.sampled.AudioSystem;
  34 import javax.sound.sampled.AudioInputStream;
  35 
  36 
  37 /**
  38  * U-law encodes linear data, and decodes u-law data to linear data.
  39  *
  40  * @author Kara Kytle
  41  */
  42 public final class UlawCodec extends SunCodec {
  43 
  44     /* Tables used for U-law decoding */
  45 
  46     private final static byte[] ULAW_TABH = new byte[256];
  47     private final static byte[] ULAW_TABL = new byte[256];
  48 
  49     private static final AudioFormat.Encoding[] ulawEncodings = {AudioFormat.Encoding.ULAW,
  50                                                                  AudioFormat.Encoding.PCM_SIGNED};
  51 
  52     private static final short seg_end [] = {0xFF, 0x1FF, 0x3FF,
  53                                              0x7FF, 0xFFF, 0x1FFF, 0x3FFF, 0x7FFF};
  54 
  55     /**
  56      * Initializes the decode tables
  57      */
  58     static {
  59         for (int i=0;i<256;i++) {
  60             int ulaw = ~i;
  61             int t;
  62 
  63             ulaw &= 0xFF;
  64             t = ((ulaw & 0xf)<<3) + 132;
  65             t <<= ((ulaw & 0x70) >> 4);
  66             t = ( (ulaw&0x80) != 0 ) ? (132-t) : (t-132);
  67 




  26 package com.sun.media.sound;
  27 
  28 import java.io.IOException;
  29 
  30 import java.util.Vector;
  31 
  32 import javax.sound.sampled.AudioFormat;
  33 import javax.sound.sampled.AudioSystem;
  34 import javax.sound.sampled.AudioInputStream;
  35 
  36 
  37 /**
  38  * U-law encodes linear data, and decodes u-law data to linear data.
  39  *
  40  * @author Kara Kytle
  41  */
  42 public final class UlawCodec extends SunCodec {
  43 
  44     /* Tables used for U-law decoding */
  45 
  46     private static final byte[] ULAW_TABH = new byte[256];
  47     private static final byte[] ULAW_TABL = new byte[256];
  48 
  49     private static final AudioFormat.Encoding[] ulawEncodings = {AudioFormat.Encoding.ULAW,
  50                                                                  AudioFormat.Encoding.PCM_SIGNED};
  51 
  52     private static final short seg_end [] = {0xFF, 0x1FF, 0x3FF,
  53                                              0x7FF, 0xFFF, 0x1FFF, 0x3FFF, 0x7FFF};
  54 
  55     /**
  56      * Initializes the decode tables
  57      */
  58     static {
  59         for (int i=0;i<256;i++) {
  60             int ulaw = ~i;
  61             int t;
  62 
  63             ulaw &= 0xFF;
  64             t = ((ulaw & 0xf)<<3) + 132;
  65             t <<= ((ulaw & 0x70) >> 4);
  66             t = ( (ulaw&0x80) != 0 ) ? (132-t) : (t-132);
  67