From fa3dcea44be564014e8425cc8c8f86cad68da163 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Fri, 9 Aug 2013 17:01:06 -0700 Subject: [PATCH] Working sound --- src/protocols/vnc/pulse.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/protocols/vnc/pulse.c b/src/protocols/vnc/pulse.c index f0f57423..e9ce0ebf 100644 --- a/src/protocols/vnc/pulse.c +++ b/src/protocols/vnc/pulse.c @@ -35,6 +35,7 @@ * * ***** END LICENSE BLOCK ***** */ +#include #include #include @@ -45,12 +46,22 @@ static void __stream_read_callback(pa_stream* stream, size_t length, void* data) { guac_client* client = (guac_client*) data; + vnc_guac_client_data* client_data = (vnc_guac_client_data*) client->data; + guac_audio_stream* audio = client_data->audio; + const void* buffer; /* Read data */ pa_stream_peek(stream, &buffer, &length); - guac_client_log_info(client, "STUB: Received %i bytes", length); + /* Write data */ + guac_audio_stream_write_pcm(audio, buffer, length); + + /* Flush occasionally */ + if (audio->pcm_bytes_written > 10000) { + guac_audio_stream_end(audio); + guac_audio_stream_begin(client_data->audio, 44100, 2, 16); + } /* Advance buffer */ pa_stream_drop(stream); @@ -121,7 +132,7 @@ static void __context_get_sink_info_callback(pa_context* context, /* Start stream */ pa_stream_connect_record(stream, info->monitor_source_name, NULL, - PA_STREAM_DONT_INHIBIT_AUTO_SUSPEND); + PA_STREAM_DONT_INHIBIT_AUTO_SUSPEND); } @@ -200,6 +211,7 @@ void guac_pa_start_stream(guac_client* client) { pa_context* context; guac_client_log_info(client, "Starting audio stream"); + guac_audio_stream_begin(client_data->audio, 44100, 2, 16); /* Init main loop */ client_data->pa_mainloop = pa_threaded_mainloop_new();