mirror of
https://github.com/moonlight-stream/moonlight-embedded.git
synced 2026-04-03 06:26:04 +00:00
46 lines
1.0 KiB
Java
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;
|
|
}
|
|
|
|
}
|