diff options
Diffstat (limited to 'src/common.h')
-rw-r--r-- | src/common.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/common.h b/src/common.h new file mode 100644 index 0000000..b5f316c --- /dev/null +++ b/src/common.h @@ -0,0 +1,67 @@ +#ifndef foocommonh +#define foocommonh + +#include "sydney.h" +#include "mutex.h" + +#define _META_NAMES_MAX 9 + +typedef struct sa_pcm_attrs { + sa_pcm_format_t format; + unsigned rate; + unsigned nchannels; + sa_channel_t *channel_map; +} pcm_attrs_t; + +struct sa_stream { + sa_mode_t mode; + + pcm_attrs_t pcm_attrs; + size_t pcm_sample_size; + size_t pcm_frame_size; + + char *codec; + + size_t read_lower_watermark; + size_t read_upper_watermark; + size_t write_lower_watermark; + size_t write_upper_watermark; + + sa_xrun_mode_t xrun_mode; + int ni_enabled; + int dynamic_rate_enabled; + + sa_event_callback_t event_callback; + + char *device; + char *driver; + + int32_t *read_volume; + int32_t *write_volume; + + void *user_data; + + sa_state_t state; + + sa_adjust_t adjust_rate; + sa_adjust_t adjust_nchannels; + sa_adjust_t adjust_pcm_format; + sa_adjust_t adjust_watermarks; + + sa_error_t error; + sa_notify_t notify; + sa_event_t event; + + void *private; /* driver specific data */ + + void *meta_data[_META_NAMES_MAX]; + size_t meta_data_size[_META_NAMES_MAX]; + + sa_mutex_t *mutex; + + sa_event_callback_t callback; +}; + +size_t sa_get_pcm_sample_size(sa_pcm_format_t f); + +#endif |