/* Copyright 2015 The Chromium OS Authors. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef _CRAS_HELPERS_H #define _CRAS_HELPERS_H #ifdef __cplusplus extern "C" { #endif /* Creates and connects a client to the running server asynchronously. * * When the connection has been established the connection_cb is executed * with the appropriate state. See cras_connection_status_cb_t for more * information. * * Args: * client - Filled with a pointer to the new client. * connection_cb - The connection status callback function. * user_arg - Argument passed to the connection status callback. * Returns: * 0 on success, or a negative error code on failure (from errno.h). */ int cras_helper_create_connect_async(struct cras_client **client, cras_connection_status_cb_t connection_cb, void *user_arg); /* Creates and connects a client to the running server. * * Waits forever (or interrupt) for the server to be available. * * Args: * client - Filled with a pointer to the new client. * Returns: * 0 on success, or a negative error code on failure (from errno.h). */ int cras_helper_create_connect(struct cras_client **client); /* Adds a stream with the given parameters, no flags and a buffer size of 2048 * Args: * client - The client to add the stream to (from cras_client_create). * direction - playback(CRAS_STREAM_OUTPUT) or capture(CRAS_STREAM_INPUT) or * loopback(CRAS_STREAM_POST_MIX_PRE_DSP). * user_data - Pointer that will be passed to the callback. * unified_cb - Called for streams that do simultaneous input/output. * err_cb - Called when there is an error with the stream. * format - The type of the samples, ex. S16_LE. * frame_rate - Sample rate. * num_channels - Number of channels in the stream, should be 1 or 2 when * using this API, for > 2 channel streams see cras_client.h. * dev_idx - Set this to a negative number to play to the default device, if * positive it is the index of the device to pin the stream to. * stream_id_out - On success will be filled with the new stream id. * Guaranteed to be set before any callbacks are made. * Returns: * 0 on success, negative error code on failure (from errno.h). */ int cras_helper_add_stream_simple(struct cras_client *client, enum CRAS_STREAM_DIRECTION direction, void *user_data, cras_unified_cb_t unified_cb, cras_error_cb_t err_cb, snd_pcm_format_t format, unsigned int frame_rate, unsigned int num_channels, int dev_idx, cras_stream_id_t *stream_id_out); /* Plays the given buffer at a default latency. * Args: * client - The client to add the stream to (from cras_client_create). * buffer - The audio samples. * num_frames - The size of the buffer in number of samples. * format - The type of the samples, ex. S16_LE. * frame_rate - Sample rate. * num_channels - Number of channels in the stream. * dev_idx - Set this to a negative number to play to the default device, if * positive it is the index of the device to pin the stream to. * Returns: * 0 on success, negative error code on failure (from errno.h). */ int cras_helper_play_buffer(struct cras_client *client, const void *buffer, unsigned int num_frames, snd_pcm_format_t format, unsigned int frame_rate, unsigned int num_channels, int dev_idx); #ifdef __cplusplus } /* extern "C" */ #endif #endif /* _CRAS_HELPERS_H */