Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (102)
JavaBeans (21)
JDBC (121)
JDK (426)
JSP (20)
Logging (108)
Mail (58)
Messaging (8)
Network (84)
PDF (97)
Report (7)
Scripting (84)
Security (32)
Server (121)
Servlet (26)
SOAP (24)
Testing (54)
Web (15)
XML (322)
Collections:
Other Resources:
JDK 17 java.desktop.jmod - Desktop Module
JDK 17 java.desktop.jmod is the JMOD file for JDK 17 Desktop module.
JDK 17 Desktop module compiled class files are stored in \fyicenter\jdk-17.0.5\jmods\java.desktop.jmod.
JDK 17 Desktop module compiled class files are also linked and stored in the \fyicenter\jdk-17.0.5\lib\modules JImage file.
JDK 17 Desktop module source code files are stored in \fyicenter\jdk-17.0.5\lib\src.zip\java.desktop.
You can click and view the content of each source code file in the list below.
✍: FYIcenter
⏎ com/sun/media/sound/AlawCodec.java
/*
* Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*/
package com.sun.media.sound;
import java.io.IOException;
import java.util.Objects;
import java.util.Vector;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioFormat.Encoding;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.spi.FormatConversionProvider;
/**
* A-law encodes linear data, and decodes a-law data to linear data.
*
* @author Kara Kytle
*/
public final class AlawCodec extends FormatConversionProvider {
/* Tables used for A-law decoding */
private static final byte[] ALAW_TABH = new byte[256];
private static final byte[] ALAW_TABL = new byte[256];
private static final short[] seg_end = {
0xFF, 0x1FF, 0x3FF, 0x7FF, 0xFFF, 0x1FFF, 0x3FFF, 0x7FFF
};
/**
* Initializes the decode tables.
*/
static {
for (int i=0;i<256;i++) {
int input = i ^ 0x55;
int mantissa = (input & 0xf ) << 4;
int segment = (input & 0x70) >> 4;
int value = mantissa+8;
if(segment>=1)
value+=0x100;
if(segment>1)
value <<= (segment -1);
if( (input & 0x80)==0 )
value = -value;
ALAW_TABL[i] = (byte)value;
ALAW_TABH[i] = (byte)(value>>8);
}
}
@Override
public AudioFormat.Encoding[] getSourceEncodings() {
return new Encoding[]{Encoding.ALAW, Encoding.PCM_SIGNED};
}
@Override
public AudioFormat.Encoding[] getTargetEncodings() {
return getSourceEncodings();
}
@Override
public AudioFormat.Encoding[] getTargetEncodings(AudioFormat sourceFormat){
if( sourceFormat.getEncoding().equals( AudioFormat.Encoding.PCM_SIGNED )) {
if( sourceFormat.getSampleSizeInBits() == 16 ) {
AudioFormat.Encoding[] enc = new AudioFormat.Encoding[1];
enc[0] = AudioFormat.Encoding.ALAW;
return enc;
} else {
return new AudioFormat.Encoding[0];
}
} else if( sourceFormat.getEncoding().equals( AudioFormat.Encoding.ALAW ) ) {
if( sourceFormat.getSampleSizeInBits() == 8 ) {
AudioFormat.Encoding[] enc = new AudioFormat.Encoding[1];
enc[0] = AudioFormat.Encoding.PCM_SIGNED;
return enc;
} else {
return new AudioFormat.Encoding[0];
}
} else {
return new AudioFormat.Encoding[0];
}
}
@Override
public AudioFormat[] getTargetFormats(AudioFormat.Encoding targetEncoding, AudioFormat sourceFormat){
Objects.requireNonNull(sourceFormat);
if( (targetEncoding.equals( AudioFormat.Encoding.PCM_SIGNED ) && sourceFormat.getEncoding().equals( AudioFormat.Encoding.ALAW)) ||
(targetEncoding.equals( AudioFormat.Encoding.ALAW) && sourceFormat.getEncoding().equals( AudioFormat.Encoding.PCM_SIGNED)) ) {
return getOutputFormats( sourceFormat );
} else {
return new AudioFormat[0];
}
}
@Override
public AudioInputStream getAudioInputStream(AudioFormat.Encoding targetEncoding, AudioInputStream sourceStream){
AudioFormat sourceFormat = sourceStream.getFormat();
AudioFormat.Encoding sourceEncoding = sourceFormat.getEncoding();
if( !isConversionSupported(targetEncoding,sourceStream.getFormat()) ) {
throw new IllegalArgumentException("Unsupported conversion: " + sourceStream.getFormat().toString() + " to " + targetEncoding.toString());
}
if( sourceEncoding.equals( targetEncoding ) ) {
return sourceStream;
}
AudioFormat targetFormat = null;
if( sourceEncoding.equals( AudioFormat.Encoding.ALAW ) &&
targetEncoding.equals( AudioFormat.Encoding.PCM_SIGNED ) ) {
targetFormat = new AudioFormat( targetEncoding,
sourceFormat.getSampleRate(),
16,
sourceFormat.getChannels(),
2*sourceFormat.getChannels(),
sourceFormat.getSampleRate(),
sourceFormat.isBigEndian());
} else if( sourceEncoding.equals( AudioFormat.Encoding.PCM_SIGNED ) &&
targetEncoding.equals( AudioFormat.Encoding.ALAW ) ) {
targetFormat = new AudioFormat( targetEncoding,
sourceFormat.getSampleRate(),
8,
sourceFormat.getChannels(),
sourceFormat.getChannels(),
sourceFormat.getSampleRate(),
false);
} else {
throw new IllegalArgumentException("Unsupported conversion: " + sourceStream.getFormat().toString() + " to " + targetEncoding.toString());
}
return getConvertedStream(targetFormat, sourceStream);
}
@Override
public AudioInputStream getAudioInputStream(AudioFormat targetFormat, AudioInputStream sourceStream){
if (!isConversionSupported(targetFormat, sourceStream.getFormat()))
throw new IllegalArgumentException("Unsupported conversion: "
+ sourceStream.getFormat().toString() + " to "
+ targetFormat.toString());
return getConvertedStream( targetFormat, sourceStream );
}
/**
* Opens the codec with the specified parameters.
* @param stream stream from which data to be processed should be read
* @param outputFormat desired data format of the stream after processing
* @return stream from which processed data may be read
* @throws IllegalArgumentException if the format combination supplied is
* not supported.
*/
private AudioInputStream getConvertedStream(AudioFormat outputFormat, AudioInputStream stream) {
AudioInputStream cs = null;
AudioFormat inputFormat = stream.getFormat();
if( inputFormat.matches(outputFormat) ) {
cs = stream;
} else {
cs = new AlawCodecStream(stream, outputFormat);
}
return cs;
}
/**
* Obtains the set of output formats supported by the codec
* given a particular input format.
* If no output formats are supported for this input format,
* returns an array of length 0.
* @return array of supported output formats.
*/
private AudioFormat[] getOutputFormats(AudioFormat inputFormat) {
Vector<AudioFormat> formats = new Vector<>();
AudioFormat format;
if (inputFormat.getSampleSizeInBits() == 16
&& AudioFormat.Encoding.PCM_SIGNED.equals(inputFormat.getEncoding())) {
format = new AudioFormat(AudioFormat.Encoding.ALAW,
inputFormat.getSampleRate(), 8,
inputFormat.getChannels(),
inputFormat.getChannels(),
inputFormat.getSampleRate(), false);
formats.addElement(format);
}
if (inputFormat.getSampleSizeInBits() == 8
&& AudioFormat.Encoding.ALAW.equals(inputFormat.getEncoding())) {
format = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,
inputFormat.getSampleRate(), 16,
inputFormat.getChannels(),
inputFormat.getChannels() * 2,
inputFormat.getSampleRate(), false);
formats.addElement(format);
format = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,
inputFormat.getSampleRate(), 16,
inputFormat.getChannels(),
inputFormat.getChannels() * 2,
inputFormat.getSampleRate(), true);
formats.addElement(format);
}
AudioFormat[] formatArray = new AudioFormat[formats.size()];
for (int i = 0; i < formatArray.length; i++) {
formatArray[i] = formats.elementAt(i);
}
return formatArray;
}
private final class AlawCodecStream extends AudioInputStream {
// tempBuffer required only for encoding (when encode is true)
private static final int tempBufferSize = 64;
private byte[] tempBuffer = null;
/**
* True to encode to a-law, false to decode to linear
*/
boolean encode = false;
AudioFormat encodeFormat;
AudioFormat decodeFormat;
byte[] tabByte1 = null;
byte[] tabByte2 = null;
int highByte = 0;
int lowByte = 1;
AlawCodecStream(AudioInputStream stream, AudioFormat outputFormat) {
super(stream, outputFormat, -1);
AudioFormat inputFormat = stream.getFormat();
// throw an IllegalArgumentException if not ok
if ( ! (isConversionSupported(outputFormat, inputFormat)) ) {
throw new IllegalArgumentException("Unsupported conversion: " + inputFormat.toString() + " to " + outputFormat.toString());
}
//$$fb 2002-07-18: fix for 4714846: JavaSound ULAW (8-bit) encoder erroneously depends on endian-ness
boolean PCMIsBigEndian;
// determine whether we are encoding or decoding
if (AudioFormat.Encoding.ALAW.equals(inputFormat.getEncoding())) {
encode = false;
encodeFormat = inputFormat;
decodeFormat = outputFormat;
PCMIsBigEndian = outputFormat.isBigEndian();
} else {
encode = true;
encodeFormat = outputFormat;
decodeFormat = inputFormat;
PCMIsBigEndian = inputFormat.isBigEndian();
tempBuffer = new byte[tempBufferSize];
}
if (PCMIsBigEndian) {
tabByte1 = ALAW_TABH;
tabByte2 = ALAW_TABL;
highByte = 0;
lowByte = 1;
} else {
tabByte1 = ALAW_TABL;
tabByte2 = ALAW_TABH;
highByte = 1;
lowByte = 0;
}
// set the AudioInputStream length in frames if we know it
if (stream instanceof AudioInputStream) {
frameLength = stream.getFrameLength();
}
// set framePos to zero
framePos = 0;
frameSize = inputFormat.getFrameSize();
if( frameSize==AudioSystem.NOT_SPECIFIED ) {
frameSize=1;
}
}
/*
* $$jb 2/23/99
* Used to determine segment number in aLaw encoding
*/
private short search(short val, short[] table, short size) {
for(short i = 0; i < size; i++) {
if (val <= table[i]) { return i; }
}
return size;
}
/**
* Note that this won't actually read anything; must read in
* two-byte units.
*/
@Override
public int read() throws IOException {
byte[] b = new byte[1];
return read(b, 0, b.length);
}
@Override
public int read(byte[] b) throws IOException {
return read(b, 0, b.length);
}
@Override
public int read(byte[] b, int off, int len) throws IOException {
// don't read fractional frames
if( len%frameSize != 0 ) {
len -= (len%frameSize);
}
if (encode) {
short QUANT_MASK = 0xF;
short SEG_SHIFT = 4;
short mask;
short seg;
int adj;
int i;
short sample;
byte enc;
int readCount = 0;
int currentPos = off;
int readLeft = len*2;
int readLen = ( (readLeft>tempBufferSize) ? tempBufferSize : readLeft );
while ((readCount = super.read(tempBuffer,0,readLen))>0) {
for (i = 0; i < readCount; i+=2) {
/* Get the sample from the tempBuffer */
sample = (short)(( (tempBuffer[i + highByte]) << 8) & 0xFF00);
sample |= (short)( (tempBuffer[i + lowByte]) & 0xFF);
if(sample >= 0) {
mask = 0xD5;
} else {
mask = 0x55;
sample = (short)(-sample - 8);
}
/* Convert the scaled magnitude to segment number. */
seg = search(sample, seg_end, (short) 8);
/*
* Combine the sign, segment, quantization bits
*/
if (seg >= 8) { /* out of range, return maximum value. */
enc = (byte) (0x7F ^ mask);
} else {
enc = (byte) (seg << SEG_SHIFT);
if(seg < 2) {
enc |= (byte) ( (sample >> 4) & QUANT_MASK);
} else {
enc |= (byte) ( (sample >> (seg + 3)) & QUANT_MASK );
}
enc ^= mask;
}
/* Now put the encoded sample where it belongs */
b[currentPos] = enc;
currentPos++;
}
/* And update pointers and counters for next iteration */
readLeft -= readCount;
readLen = ( (readLeft>tempBufferSize) ? tempBufferSize : readLeft );
}
if( currentPos==off && readCount<0 ) { // EOF or error
return readCount;
}
return (currentPos - off); /* Number of bytes written to new buffer */
} else {
int i;
int readLen = len/2;
int readOffset = off + len/2;
int readCount = super.read(b, readOffset, readLen);
for (i = off; i < (off + (readCount*2)); i+=2) {
b[i] = tabByte1[b[readOffset] & 0xFF];
b[i+1] = tabByte2[b[readOffset] & 0xFF];
readOffset++;
}
if( readCount<0 ) { // EOF or error
return readCount;
}
return (i - off);
}
}
@Override
public long skip(final long n) throws IOException {
// Implementation of this method assumes that we support
// encoding/decoding from/to 8/16 bits only
return encode ? super.skip(n * 2) / 2 : super.skip(n / 2) * 2;
}
} // end class AlawCodecStream
} // end class ALAW
⏎ com/sun/media/sound/AlawCodec.java
Or download all of them as a single archive file:
File name: java.desktop-17.0.5-src.zip File size: 9152233 bytes Release date: 2022-09-13 Download
⇒ JDK 17 java.instrument.jmod - Instrument Module
2023-09-16, ≈367🔥, 0💬
Popular Posts:
JRE 8 rt.jar is the JAR file for JRE 8 RT (Runtime) libraries. JRE (Java Runtime) 8 is the runtime e...
Apache BCEL Source Code Files are inside the Apache BCEL source package file like bcel-6.6.1-src.zip...
Apache Commons Codec library provides implementations of common encoders and decoders such as Base64...
What Is in Xerces-J-bin.2.12.2.zip? Xerces-J-bin.2.12.2.zip file is the distribution package ZIP fil...
JDK 17 jdk.compiler.jmod is the JMOD file for JDK 17 Compiler tool, which can be invoked by the "jav...