![JAR search and dependency download from the Maven repository](/logo.png)
net.pms.util.PCMAudioOutputStream Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of pms Show documentation
Show all versions of pms Show documentation
PS3 Media Server is a cross-platform DLNA-compliant UPnP Media Server.
Originally written to support the PlayStation 3, PS3 Media Server has been
expanded to support a range of other media renderers, including smartphones,
televisions, music players and more.
The newest version!
package net.pms.util;
import java.io.IOException;
import java.io.OutputStream;
public class PCMAudioOutputStream extends FlowParserOutputStream {
protected int nbchannels;
protected int sampleFrequency;
protected int bitsperSample;
protected int blocksize;
protected byte payload[];
public PCMAudioOutputStream(OutputStream source, int nbchannels, int sampleFrequency, int bitsperSample) {
super(source, 600000);
this.nbchannels = nbchannels;
this.sampleFrequency = sampleFrequency;
this.bitsperSample = bitsperSample;
swapOrderBits = 2; // swap endian
init();
}
protected void init() {
blocksize = (2 * ((nbchannels + 1) / 2)) * sampleFrequency * bitsperSample / 1600;
payload = new byte[4];
switch (nbchannels) {
case 1:
payload[2] = 17;
break;
case 2:
payload[2] = 49;
break;
case 3:
payload[2] = 65;
break;
case 4:
payload[2] = 113;
break;
case 5:
payload[2] = -127;
break;
case 6:
payload[2] = -111;
break;
case 7:
payload[2] = -95;
break;
case 8:
payload[2] = -79;
break;
}
payload[0] = (byte) ((blocksize >> 8) & 0xff);
payload[1] = (byte) ((blocksize + 256) % 256);
if (sampleFrequency == 96000) {
payload[2] = (byte) (payload[2] + 3);
}
if (sampleFrequency == 192000) {
payload[2] = (byte) (payload[2] + 4);
}
payload[3] = (byte) (16 * (bitsperSample - 12));
}
@Override
protected void afterChunkSend() throws IOException {
}
@Override
protected void analyzeBuffer(byte[] data, int off, int len) {
streamableByteNumber = blocksize;
}
@Override
protected void beforeChunkSend() throws IOException {
writePayload(payload);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy