Actually receive data.
This commit is contained in:
parent
8bbd28d9c9
commit
83a575d7b9
@ -41,19 +41,88 @@
|
||||
|
||||
#include "client.h"
|
||||
|
||||
static void __stream_read_callback(pa_stream* stream, size_t length,
|
||||
void* data) {
|
||||
|
||||
guac_client* client = (guac_client*) data;
|
||||
const void* buffer;
|
||||
|
||||
/* Read data */
|
||||
pa_stream_peek(stream, &buffer, &length);
|
||||
|
||||
guac_client_log_info(client, "STUB: Received %i bytes", length);
|
||||
|
||||
/* Advance buffer */
|
||||
pa_stream_drop(stream);
|
||||
|
||||
}
|
||||
|
||||
static void __stream_state_callback(pa_stream* stream, void* data) {
|
||||
|
||||
guac_client* client = (guac_client*) data;
|
||||
|
||||
switch (pa_stream_get_state(stream)) {
|
||||
|
||||
case PA_STREAM_UNCONNECTED:
|
||||
guac_client_log_info(client,
|
||||
"PulseAudio stream currently unconnected");
|
||||
break;
|
||||
|
||||
case PA_STREAM_CREATING:
|
||||
guac_client_log_info(client, "PulseAudio stream being created...");
|
||||
break;
|
||||
|
||||
case PA_STREAM_READY:
|
||||
guac_client_log_info(client, "PulseAudio stream now ready");
|
||||
break;
|
||||
|
||||
case PA_STREAM_FAILED:
|
||||
guac_client_log_info(client, "PulseAudio stream connection failed");
|
||||
break;
|
||||
|
||||
case PA_STREAM_TERMINATED:
|
||||
guac_client_log_info(client, "PulseAudio stream terminated");
|
||||
break;
|
||||
|
||||
default:
|
||||
guac_client_log_info(client,
|
||||
"Unknown PulseAudio stream state: 0x%x",
|
||||
pa_stream_get_state(stream));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static void __context_get_sink_info_callback(pa_context* context,
|
||||
const pa_sink_info* info, int is_last, void* data) {
|
||||
|
||||
guac_client* client = (guac_client*) data;
|
||||
pa_stream* stream;
|
||||
pa_sample_spec spec;
|
||||
|
||||
/* If information retrieval failed, stop */
|
||||
if (is_last < 0) {
|
||||
guac_client_log_error(client, "Unable to retrieve sink information");
|
||||
/* Stop if end of list reached */
|
||||
if (is_last)
|
||||
return;
|
||||
}
|
||||
|
||||
guac_client_log_info(client, "Starting streaming from \"%s\"",
|
||||
info->description);
|
||||
|
||||
/* Set format */
|
||||
spec.format = PA_SAMPLE_S16LE;
|
||||
spec.rate = info->sample_spec.rate;
|
||||
spec.channels = info->sample_spec.channels;
|
||||
|
||||
/* Create stream */
|
||||
stream = pa_stream_new(context, "Guacamole Audio", &spec,
|
||||
&(info->channel_map));
|
||||
|
||||
/* Set stream callbacks */
|
||||
pa_stream_set_state_callback(stream, __stream_state_callback, client);
|
||||
pa_stream_set_read_callback(stream, __stream_read_callback, client);
|
||||
|
||||
/* Start stream */
|
||||
guac_client_log_info(client, "Starting stream (STUB)");
|
||||
pa_stream_connect_record(stream, info->monitor_source_name, NULL,
|
||||
0 /* FIXME: PA_STREAM_DONT_INHIBIT_AUTO_SUSPEND */);
|
||||
|
||||
}
|
||||
|
||||
@ -139,7 +208,7 @@ void guac_pa_start_stream(guac_client* client) {
|
||||
/* Create context */
|
||||
context = pa_context_new(
|
||||
pa_threaded_mainloop_get_api(client_data->pa_mainloop),
|
||||
"Guacamole");
|
||||
"Guacamole Audio");
|
||||
|
||||
/* Set up context */
|
||||
pa_context_set_state_callback(context, __context_state_callback, client);
|
||||
|
Loading…
Reference in New Issue
Block a user