Files
moonlight-embedded/src/com/limelight/binding/audio/AlsaAudioRenderer.java
2014-03-12 02:07:06 +01:00

46 lines
1.0 KiB
Java

package com.limelight.binding.audio;
import com.limelight.LimeLog;
import com.limelight.nvstream.av.audio.AudioRenderer;
/**
* Audio renderer implementation
* @author Iwan Timmer
*/
public class AlsaAudioRenderer implements AudioRenderer {
private String device;
public AlsaAudioRenderer(String device) {
this.device = device;
}
@Override
public void streamInitialized(int channelCount, int sampleRate) {
int ret = AlsaAudio.init(channelCount, sampleRate, device);
if (ret != 0)
throw new IllegalStateException("Alsa renderer initialization failure: "+ret);
}
@Override
public void playDecodedAudio(byte[] bytes, int offset, int length) {
int rc = AlsaAudio.play(bytes, offset, length);
if (rc<0)
LimeLog.warning("Alsa error from writei: "+rc);
else if (rc!=length/4)
LimeLog.warning("Alsa short write, write "+rc+" frames");
}
@Override
public void streamClosing() {
AlsaAudio.close();
}
@Override
public int getCapabilities() {
return CAPABILITY_DIRECT_SUBMIT;
}
}