package cn.org.hentai.jtt1078.util; public class G711Util { // 优化的G.711A解码方法 public static byte[] decodeG711AFast(byte[] alawData) { byte[] pcmData = new byte[alawData.length * 2]; for (int i = 0; i < alawData.length; i++) { short pcm = ALAW_TABLE[alawData[i] & 0xFF]; pcmData[i * 2] = (byte) (pcm & 0xFF); pcmData[i * 2 + 1] = (byte) (pcm >> 8); } return pcmData; } // A-law解码查找表 private static final short[] ALAW_TABLE = new short[256]; static { for (int i = 0; i < 256; i++) { int alaw = i ^ 0x55; int sign = alaw & 0x80; int exponent = (alaw & 0x70) >> 4; int data = alaw & 0x0F; data = (data << 4) + 8; if (exponent != 0) data += 0x100; if (exponent > 1) data <<= (exponent - 1); ALAW_TABLE[i] = (short) (sign == 0 ? data : -data); } } }