Check Pulseaudio server availability

This commit is contained in:
Iwan Timmer
2016-01-16 15:55:49 +01:00
parent 7e73b65797
commit cfddc233d1
3 changed files with 21 additions and 1 deletions

View File

@@ -17,6 +17,8 @@
* along with Moonlight; if not, see <http://www.gnu.org/licenses/>.
*/
#include <stdbool.h>
#include "limelight-common/Limelight.h"
extern const char* audio_device;
@@ -27,4 +29,5 @@ extern AUDIO_RENDERER_CALLBACKS audio_callbacks_sdl;
#endif
#ifdef HAVE_PULSE
extern AUDIO_RENDERER_CALLBACKS audio_callbacks_pulse;
bool audio_pulse_init();
#endif

View File

@@ -34,6 +34,22 @@ static pa_simple *dev = NULL;
static short pcmBuffer[FRAME_SIZE * MAX_CHANNEL_COUNT];
static int channelCount;
bool audio_pulse_init() {
pa_sample_spec spec = {
.format = PA_SAMPLE_S16LE,
.rate = 44000,
.channels = 2
};
int error;
dev = pa_simple_new(NULL, "Moonlight Embedded", PA_STREAM_PLAYBACK, NULL, "Streaming", &spec, NULL, NULL, &error);
if (dev) {
pa_simple_free(dev);
return true;
} else
return false;
}
static void pulse_renderer_init(int audioConfiguration, POPUS_MULTISTREAM_CONFIGURATION opusConfig) {
int rc, error;
unsigned char alsaMapping[6];

View File

@@ -89,7 +89,8 @@ AUDIO_RENDERER_CALLBACKS* platform_get_audio(enum platform system) {
#endif
default:
#ifdef HAVE_PULSE
return &audio_callbacks_pulse;
if (audio_pulse_init())
return &audio_callbacks_pulse;
#endif
return &audio_callbacks_alsa;
}