diff options
Diffstat (limited to 'rtaudio_c.h')
| -rw-r--r-- | rtaudio_c.h | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/rtaudio_c.h b/rtaudio_c.h new file mode 100644 index 0000000..d92107e --- /dev/null +++ b/rtaudio_c.h @@ -0,0 +1,144 @@ +#ifndef RTAUDIO_C_H +#define RTAUDIO_C_H + +#if defined(RTAUDIO_EXPORT) +#define RTAUDIOAPI __declspec(dllexport) +#else +#define RTAUDIOAPI //__declspec(dllimport) +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef unsigned long rtaudio_format_t; + +#define RTAUDIO_FORMAT_SINT8 0x01 +#define RTAUDIO_FORMAT_SINT16 0x02 +#define RTAUDIO_FORMAT_SINT24 0x04 +#define RTAUDIO_FORMAT_SINT32 0x08 +#define RTAUDIO_FORMAT_FLOAT32 0x10 +#define RTAUDIO_FORMAT_FLOAT64 0x20 + +typedef unsigned int rtaudio_stream_flags_t; + +#define RTAUDIO_FLAGS_NONINTERLEAVED 0x1 +#define RTAUDIO_FLAGS_MINIMIZE_LATENCY 0x2 +#define RTAUDIO_FLAGS_HOG_DEVICE 0x4 +#define RTAUDIO_FLAGS_SCHEDULE_REALTIME 0x8 +#define RTAUDIO_FLAGS_ALSA_USE_DEFAULT 0x10 + +typedef unsigned int rtaudio_stream_status_t; + +#define RTAUDIO_STATUS_INPUT_OVERFLOW 0x1 +#define RTAUDIO_STATUS_OUTPUT_UNDERFLOW 0x2 + +typedef int (*rtaudio_cb_t)(void *out, void *in, unsigned int nFrames, + double stream_time, rtaudio_stream_status_t status, + void *userdata); + +typedef enum rtaudio_error { + RTAUDIO_ERROR_WARNING, + RTAUDIO_ERROR_DEBUG_WARNING, + RTAUDIO_ERROR_UNSPECIFIED, + RTAUDIO_ERROR_NO_DEVICES_FOUND, + RTAUDIO_ERROR_INVALID_DEVICE, + RTAUDIO_ERROR_MEMORY_ERROR, + RTAUDIO_ERROR_INVALID_PARAMETER, + RTAUDIO_ERROR_INVALID_USE, + RTAUDIO_ERROR_DRIVER_ERROR, + RTAUDIO_ERROR_SYSTEM_ERROR, + RTAUDIO_ERROR_THREAD_ERROR, +} rtaudio_error_t; + +typedef void (*rtaudio_error_cb_t)(rtaudio_error_t err, const char *msg); + +typedef enum rtaudio_api { + RTAUDIO_API_UNSPECIFIED, + RTAUDIO_API_LINUX_ALSA, + RTAUDIO_API_LINUX_PULSE, + RTAUDIO_API_LINUX_OSS, + RTAUDIO_API_UNIX_JACK, + RTAUDIO_API_MACOSX_CORE, + RTAUDIO_API_WINDOWS_WASAPI, + RTAUDIO_API_WINDOWS_ASIO, + RTAUDIO_API_WINDOWS_DS, + RTAUDIO_API_DUMMY, +} rtaudio_api_t; + +#define NUM_SAMPLE_RATES 16 +#define MAX_NAME_LENGTH 512 +typedef struct rtaudio_device_info { + int probed; + unsigned int output_channels; + unsigned int input_channels; + unsigned int duplex_channels; + + int is_default_output; + int is_default_input; + + rtaudio_format_t native_formats; + + unsigned int preferred_sample_rate; + int sample_rates[NUM_SAMPLE_RATES]; + + char name[MAX_NAME_LENGTH]; +} rtaudio_device_info_t; + +typedef struct rtaudio_stream_parameters { + unsigned int device_id; + unsigned int num_channels; + unsigned int first_channel; +} rtaudio_stream_parameters_t; + +typedef struct rtaudio_stream_options { + rtaudio_stream_flags_t flags; + unsigned int num_buffers; + int priority; + char name[MAX_NAME_LENGTH]; +} rtaudio_stream_options_t; + +typedef struct rtaudio *rtaudio_t; + +RTAUDIOAPI const char *rtaudio_version(); +RTAUDIOAPI const rtaudio_api_t *rtaudio_compiled_api(); + +RTAUDIOAPI const char *rtaudio_error(rtaudio_t audio); + +RTAUDIOAPI rtaudio_t rtaudio_create(rtaudio_api_t api); +RTAUDIOAPI void rtaudio_destroy(rtaudio_t audio); + +RTAUDIOAPI rtaudio_api_t rtaudio_current_api(rtaudio_t audio); + +RTAUDIOAPI int rtaudio_device_count(rtaudio_t audio); +RTAUDIOAPI rtaudio_device_info_t rtaudio_get_device_info(rtaudio_t audio, + int i); +RTAUDIOAPI unsigned int rtaudio_get_default_output_device(rtaudio_t audio); +RTAUDIOAPI unsigned int rtaudio_get_default_input_device(rtaudio_t audio); + +RTAUDIOAPI int +rtaudio_open_stream(rtaudio_t audio, rtaudio_stream_parameters_t *output_params, + rtaudio_stream_parameters_t *input_params, + rtaudio_format_t format, unsigned int sample_rate, + unsigned int *buffer_frames, rtaudio_cb_t cb, + void *userdata, rtaudio_stream_options_t *options, + rtaudio_error_cb_t errcb); +RTAUDIOAPI void rtaudio_close_stream(rtaudio_t audio); +RTAUDIOAPI int rtaudio_start_stream(rtaudio_t audio); +RTAUDIOAPI int rtaudio_stop_stream(rtaudio_t audio); +RTAUDIOAPI int rtaudio_abort_stream(rtaudio_t audio); + +RTAUDIOAPI int rtaudio_is_stream_open(rtaudio_t audio); +RTAUDIOAPI int rtaudio_is_stream_running(rtaudio_t audio); + +RTAUDIOAPI double rtaudio_get_stream_time(rtaudio_t audio); +RTAUDIOAPI void rtaudio_set_stream_time(rtaudio_t audio, double time); +RTAUDIOAPI int rtaudio_get_stream_latency(rtaudio_t audio); +RTAUDIOAPI unsigned int rtaudio_get_stream_sample_rate(rtaudio_t audio); + +RTAUDIOAPI void rtaudio_show_warnings(rtaudio_t audio, int show); + +#ifdef __cplusplus +} +#endif +#endif /* RTAUDIO_C_H */ |
