summaryrefslogtreecommitdiffstats
path: root/common.h
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2007-05-12 23:38:38 +0000
committerLennart Poettering <lennart@poettering.net>2007-05-12 23:38:38 +0000
commita64e85acf96bc0c55363fe55c9e9116aef2a8584 (patch)
tree69ec57b46bdebe0e7496bf11ea9a54cdf5806904 /common.h
parent2eb6dec8e9f0114bdbad59cf8f11f197f8fdaaf3 (diff)
resampling works
git-svn-id: file:///home/lennart/svn/public/libsydney/trunk@4 9ba3c220-e4d3-45a2-8aa3-73fcc9aff6ce
Diffstat (limited to 'common.h')
-rw-r--r--common.h37
1 files changed, 20 insertions, 17 deletions
diff --git a/common.h b/common.h
index 1500ef1..16050df 100644
--- a/common.h
+++ b/common.h
@@ -3,38 +3,40 @@
#include "sydney.h"
-#define elementsof(x) (sizeof(x)/sizeof((x)[0]))
+#define META_NAMES_MAX 8
+
+typedef struct pcm_attrs {
+ sa_pcm_format_t format;
+ unsigned rate;
+ unsigned nchannels;
+ sa_channel_t *channel_map;
+} pcm_attrs_t;
struct sa_device {
sa_mode_t mode;
- sa_pcm_format_t pcm_format;
- unsigned rate;
- unsigned nchannels;
+ pcm_attrs_t pcm_attrs;
+ size_t pcm_sample_size;
+ size_t pcm_frame_size;
char *codec;
- char *client_name;
- char *stream_name;
-
size_t read_lower_watermark;
size_t read_upper_watermark;
size_t write_lower_watermark;
size_t write_upper_watermark;
- sa_channel_t *channel_map;
-
sa_xrun_mode_t xrun_mode;
int ni_enabled;
- int dsr_enabled;
+ int dynamic_rate_enabled;
sa_event_callback_t event_callback;
char *device;
char *driver;
- int input_volume;
- int output_volume;
+ int *input_volume;
+ int *output_volume;
void *user_data;
@@ -47,12 +49,13 @@ struct sa_device {
sa_error_t error;
sa_notify_t notify;
sa_event_t event;
-};
-sa_device_t *device_alloc(size_t total);
-void device_free(sa_device_t *d);
+ void *private; /* driver specific data */
+
+ void *meta_data[META_NAMES_MAX];
+ size_t meta_data_size[META_NAMES_MAX];
+};
-int device_alloc_pcm(sa_device_t **dev, size_t total, const char *client_name, sa_mode_t mode, sa_pcm_format_t format, unsigned rate, unsigned channels);
-int device_alloc_opaque(sa_device_t **dev, size_t total, const char *client_name, sa_mode_t mode, const char *codec);
+size_t get_pcm_sample_size(sa_pcm_format_t f);
#endif