105 lines
3.1 KiB
Java
105 lines
3.1 KiB
Java
package com.mojang.blaze3d.audio;
|
|
|
|
import org.apache.logging.log4j.LogManager;
|
|
import javax.sound.sampled.AudioFormat;
|
|
import org.lwjgl.openal.ALC10;
|
|
import org.lwjgl.openal.AL10;
|
|
import org.apache.logging.log4j.Logger;
|
|
|
|
public class OpenAlUtil {
|
|
private static final Logger LOGGER;
|
|
|
|
private static String alErrorToString(final int integer) {
|
|
switch (integer) {
|
|
case 40961: {
|
|
return "Invalid name parameter.";
|
|
}
|
|
case 40962: {
|
|
return "Invalid enumerated parameter value.";
|
|
}
|
|
case 40963: {
|
|
return "Invalid parameter parameter value.";
|
|
}
|
|
case 40964: {
|
|
return "Invalid operation.";
|
|
}
|
|
case 40965: {
|
|
return "Unable to allocate memory.";
|
|
}
|
|
default: {
|
|
return "An unrecognized error occurred.";
|
|
}
|
|
}
|
|
}
|
|
|
|
static boolean checkALError(final String string) {
|
|
final int integer2 = AL10.alGetError();
|
|
if (integer2 != 0) {
|
|
OpenAlUtil.LOGGER.error("{}: {}", string, alErrorToString(integer2));
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
private static String alcErrorToString(final int integer) {
|
|
switch (integer) {
|
|
case 40961: {
|
|
return "Invalid device.";
|
|
}
|
|
case 40962: {
|
|
return "Invalid context.";
|
|
}
|
|
case 40964: {
|
|
return "Invalid value.";
|
|
}
|
|
case 40963: {
|
|
return "Illegal enum.";
|
|
}
|
|
case 40965: {
|
|
return "Unable to allocate memory.";
|
|
}
|
|
default: {
|
|
return "An unrecognized error occurred.";
|
|
}
|
|
}
|
|
}
|
|
|
|
static boolean checkALCError(final long long1, final String string) {
|
|
final int integer4 = ALC10.alcGetError(long1);
|
|
if (integer4 != 0) {
|
|
OpenAlUtil.LOGGER.error("{}{}: {}", string, long1, alcErrorToString(integer4));
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
static int audioFormatToOpenAl(final AudioFormat audioFormat) {
|
|
final AudioFormat.Encoding encoding2 = audioFormat.getEncoding();
|
|
final int integer3 = audioFormat.getChannels();
|
|
final int integer4 = audioFormat.getSampleSizeInBits();
|
|
if (encoding2.equals(AudioFormat.Encoding.PCM_UNSIGNED) || encoding2.equals(AudioFormat.Encoding.PCM_SIGNED)) {
|
|
if (integer3 == 1) {
|
|
if (integer4 == 8) {
|
|
return 4352;
|
|
}
|
|
if (integer4 == 16) {
|
|
return 4353;
|
|
}
|
|
}
|
|
else if (integer3 == 2) {
|
|
if (integer4 == 8) {
|
|
return 4354;
|
|
}
|
|
if (integer4 == 16) {
|
|
return 4355;
|
|
}
|
|
}
|
|
}
|
|
throw new IllegalArgumentException("Invalid audio format: " + audioFormat);
|
|
}
|
|
|
|
static {
|
|
LOGGER = LogManager.getLogger();
|
|
}
|
|
}
|