diff options
Diffstat (limited to 'lib/igt_chamelium.c')
-rw-r--r-- | lib/igt_chamelium.c | 80 |
1 files changed, 53 insertions, 27 deletions
diff --git a/lib/igt_chamelium.c b/lib/igt_chamelium.c index 6ac7b722..ffc68f35 100644 --- a/lib/igt_chamelium.c +++ b/lib/igt_chamelium.c @@ -964,31 +964,6 @@ void chamelium_get_audio_channel_mapping(struct chamelium *chamelium, xmlrpc_DECREF(res); } -/** - * chamelium_start_capturing_audio: - * @chamelium: the Chamelium instance - * @port: the port to capture audio from (it must support audio) - * @save_to_file: whether the captured audio data should be saved to a file on - * the Chamelium device - * - * Starts capturing audio from a Chamelium port. To stop the capture, use - * #chamelium_stop_capturing_audio. To retrieve the audio data, either use the - * stream server or enable @save_to_file (the latter is mainly useful for - * debugging purposes). - * - * It isn't possible to capture audio from multiple ports at the same time. - */ -void chamelium_start_capturing_audio(struct chamelium *chamelium, - struct chamelium_port *port, - bool save_to_file) -{ - xmlrpc_value *res; - - res = chamelium_rpc(chamelium, port, "StartCapturingAudio", "(ib)", - port->id, save_to_file); - xmlrpc_DECREF(res); -} - static void audio_format_from_xml(struct chamelium *chamelium, xmlrpc_value *res, int *rate, int *channels) { @@ -1008,8 +983,10 @@ static void audio_format_from_xml(struct chamelium *chamelium, igt_assert(strcmp(sample_format, "S32_LE") == 0); free(sample_format); - xmlrpc_read_int(&chamelium->env, res_rate, rate); - xmlrpc_read_int(&chamelium->env, res_channel, channels); + if (rate) + xmlrpc_read_int(&chamelium->env, res_rate, rate); + if (channels) + xmlrpc_read_int(&chamelium->env, res_channel, channels); xmlrpc_DECREF(res_channel); xmlrpc_DECREF(res_sample_format); @@ -1018,6 +995,55 @@ static void audio_format_from_xml(struct chamelium *chamelium, } /** + * chamelium_get_audio_format: + * @chamelium: the Chamelium instance + * @port: the audio port + * @rate: if non-NULL, will be set to the sample rate in Hz + * @channels: if non-NULL, will be set to the number of channels + * + * Obtains the audio format of the captured data. Users should start sending an + * audio signal to the Chamelium device prior to calling this function. + * + * The captured data is guaranteed to be in the S32_LE format. + */ +void chamelium_get_audio_format(struct chamelium *chamelium, + struct chamelium_port *port, + int *rate, int *channels) +{ + xmlrpc_value *res; + + res = chamelium_rpc(chamelium, port, "GetAudioFormat", "(i)", + port->id); + audio_format_from_xml(chamelium, res, rate, channels); + xmlrpc_DECREF(res); +} + +/** + * chamelium_start_capturing_audio: + * @chamelium: the Chamelium instance + * @port: the port to capture audio from (it must support audio) + * @save_to_file: whether the captured audio data should be saved to a file on + * the Chamelium device + * + * Starts capturing audio from a Chamelium port. To stop the capture, use + * #chamelium_stop_capturing_audio. To retrieve the audio data, either use the + * stream server or enable @save_to_file (the latter is mainly useful for + * debugging purposes). + * + * It isn't possible to capture audio from multiple ports at the same time. + */ +void chamelium_start_capturing_audio(struct chamelium *chamelium, + struct chamelium_port *port, + bool save_to_file) +{ + xmlrpc_value *res; + + res = chamelium_rpc(chamelium, port, "StartCapturingAudio", "(ib)", + port->id, save_to_file); + xmlrpc_DECREF(res); +} + +/** * chamelium_stop_capturing_audio: * @chamelium: the Chamelium instance * @port: the port from which audio is being captured |