summaryrefslogtreecommitdiffstats
path: root/src/common.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/common.c')
-rw-r--r--src/common.c219
1 files changed, 110 insertions, 109 deletions
diff --git a/src/common.c b/src/common.c
index c8017e8..b366563 100644
--- a/src/common.c
+++ b/src/common.c
@@ -25,7 +25,7 @@ static sa_stream_t *stream_alloc(void) {
/* All fields a carefully chosen in a way that initializing them
* NUL bytes is sufficient */
- if (!(d->mutex = sa_mutex_new(FALSE, FALSE))) {
+ if (!(d->mutex = sa_mutex_new(FALSE, TRUE))) {
sa_free(d);
return NULL;
}
@@ -110,23 +110,23 @@ int sa_stream_create_pcm(
if (lwm <= 0)
lwm = (*s)->pcm_frame_size * (*s)->pcm_attrs.rate; /* 1s */
- if (mode & SA_MODE_RDONLY) {
+/* if (mode & SA_MODE_RDONLY) { */
- if ((ret = sa_stream_set_read_lower_watermark(*s, lwm)))
- goto fail;
+/* if ((ret = sa_stream_set_read_lower_watermark(*s, lwm))) */
+/* goto fail; */
- if ((ret = sa_stream_set_read_upper_watermark(*s, lwm*2)))
- goto fail;
- }
+/* if ((ret = sa_stream_set_read_upper_watermark(*s, lwm*2))) */
+/* goto fail; */
+/* } */
- if (mode & SA_MODE_WRONLY) {
+/* if (mode & SA_MODE_WRONLY) { */
- if ((ret = sa_stream_set_write_lower_watermark(*s, lwm)))
- goto fail;
+/* if ((ret = sa_stream_set_write_lower_watermark(*s, lwm))) */
+/* goto fail; */
- if ((ret = sa_stream_set_write_upper_watermark(*s, lwm*2)))
- goto fail;
- }
+/* if ((ret = sa_stream_set_write_upper_watermark(*s, lwm*2))) */
+/* goto fail; */
+/* } */
oil_init();
@@ -149,10 +149,10 @@ int sa_stream_open(sa_stream_t *s) {
sa_mutex_lock(s->mutex);
sa_return_val_if_fail_mutex(s->mutex, s->state == SA_STATE_INIT, SA_ERROR_STATE);
sa_return_val_if_fail_mutex(s->mutex, s->codec || s->pcm_attrs.channel_map, SA_ERROR_NO_INIT);
- sa_return_val_if_fail_mutex(s->mutex, !(s->mode & SA_MODE_RDONLY) || (s->read_lower_watermark <= s->read_upper_watermark), SA_ERROR_INVALID);
- sa_return_val_if_fail_mutex(s->mutex, !(s->mode & SA_MODE_WRONLY) || (s->write_lower_watermark <= s->write_upper_watermark), SA_ERROR_INVALID);
- sa_return_val_if_fail_mutex(s->mutex, !(s->mode & SA_MODE_RDONLY) || !s->codec || (s->read_lower_watermark > 0 && s->read_upper_watermark > 0), SA_ERROR_NO_INIT);
- sa_return_val_if_fail_mutex(s->mutex, !(s->mode & SA_MODE_WRONLY) || !s->codec || (s->write_lower_watermark > 0 && s->write_upper_watermark > 0), SA_ERROR_NO_INIT);
+/* sa_return_val_if_fail_mutex(s->mutex, !(s->mode & SA_MODE_RDONLY) || (s->read_lower_watermark <= s->read_upper_watermark), SA_ERROR_INVALID); */
+/* sa_return_val_if_fail_mutex(s->mutex, !(s->mode & SA_MODE_WRONLY) || (s->write_lower_watermark <= s->write_upper_watermark), SA_ERROR_INVALID); */
+/* sa_return_val_if_fail_mutex(s->mutex, !(s->mode & SA_MODE_RDONLY) || !s->codec || (s->read_lower_watermark > 0 && s->read_upper_watermark > 0), SA_ERROR_NO_INIT); */
+/* sa_return_val_if_fail_mutex(s->mutex, !(s->mode & SA_MODE_WRONLY) || !s->codec || (s->write_lower_watermark > 0 && s->write_upper_watermark > 0), SA_ERROR_NO_INIT); */
if ((ret = driver_open(s)) == 0)
s->state = SA_STATE_STOPPED;
@@ -185,62 +185,62 @@ int sa_stream_destroy(sa_stream_t *s) {
return ret;
}
-int sa_stream_set_write_lower_watermark(sa_stream_t *s, size_t size) {
+/* int sa_stream_set_write_lower_watermark(sa_stream_t *s, size_t size) { */
- sa_return_val_if_fail(s, SA_ERROR_INVALID);
- sa_return_val_if_fail(size > 0, SA_ERROR_INVALID);
- sa_mutex_lock(s->mutex);
- sa_return_val_if_fail_mutex(s->mutex, s->state == SA_STATE_INIT, SA_ERROR_STATE);
- sa_return_val_if_fail_mutex(s->mutex, s->mode & SA_MODE_WRONLY, SA_ERROR_STATE);
+/* sa_return_val_if_fail(s, SA_ERROR_INVALID); */
+/* sa_return_val_if_fail(size > 0, SA_ERROR_INVALID); */
+/* sa_mutex_lock(s->mutex); */
+/* sa_return_val_if_fail_mutex(s->mutex, s->state == SA_STATE_INIT, SA_ERROR_STATE); */
+/* sa_return_val_if_fail_mutex(s->mutex, s->mode & SA_MODE_WRONLY, SA_ERROR_STATE); */
- s->write_lower_watermark = size;
+/* s->write_lower_watermark = size; */
- sa_mutex_unlock(s->mutex);
+/* sa_mutex_unlock(s->mutex); */
- return SA_SUCCESS;
-}
+/* return SA_SUCCESS; */
+/* } */
-int sa_stream_set_read_lower_watermark(sa_stream_t *s, size_t size) {
+/* int sa_stream_set_read_lower_watermark(sa_stream_t *s, size_t size) { */
- sa_return_val_if_fail(s, SA_ERROR_INVALID);
- sa_return_val_if_fail(size > 0, SA_ERROR_INVALID);
- sa_mutex_lock(s->mutex);
- sa_return_val_if_fail_mutex(s->mutex, s->state == SA_STATE_INIT, SA_ERROR_STATE);
- sa_return_val_if_fail_mutex(s->mutex, s->mode & SA_MODE_RDONLY, SA_ERROR_STATE);
+/* sa_return_val_if_fail(s, SA_ERROR_INVALID); */
+/* sa_return_val_if_fail(size > 0, SA_ERROR_INVALID); */
+/* sa_mutex_lock(s->mutex); */
+/* sa_return_val_if_fail_mutex(s->mutex, s->state == SA_STATE_INIT, SA_ERROR_STATE); */
+/* sa_return_val_if_fail_mutex(s->mutex, s->mode & SA_MODE_RDONLY, SA_ERROR_STATE); */
- s->read_lower_watermark = size;
+/* s->read_lower_watermark = size; */
- sa_mutex_unlock(s->mutex);
- return SA_SUCCESS;
-}
+/* sa_mutex_unlock(s->mutex); */
+/* return SA_SUCCESS; */
+/* } */
-int sa_stream_set_write_upper_watermark(sa_stream_t *s, size_t size) {
+/* int sa_stream_set_write_upper_watermark(sa_stream_t *s, size_t size) { */
- sa_return_val_if_fail(s, SA_ERROR_INVALID);
- sa_return_val_if_fail(size > 0, SA_ERROR_INVALID);
- sa_mutex_lock(s->mutex);
- sa_return_val_if_fail_mutex(s->mutex, s->state == SA_STATE_INIT, SA_ERROR_STATE);
- sa_return_val_if_fail_mutex(s->mutex, s->mode & SA_MODE_WRONLY, SA_ERROR_STATE);
+/* sa_return_val_if_fail(s, SA_ERROR_INVALID); */
+/* sa_return_val_if_fail(size > 0, SA_ERROR_INVALID); */
+/* sa_mutex_lock(s->mutex); */
+/* sa_return_val_if_fail_mutex(s->mutex, s->state == SA_STATE_INIT, SA_ERROR_STATE); */
+/* sa_return_val_if_fail_mutex(s->mutex, s->mode & SA_MODE_WRONLY, SA_ERROR_STATE); */
- s->write_upper_watermark = size;
+/* s->write_upper_watermark = size; */
- sa_mutex_unlock(s->mutex);
- return SA_SUCCESS;
-}
+/* sa_mutex_unlock(s->mutex); */
+/* return SA_SUCCESS; */
+/* } */
-int sa_stream_set_read_upper_watermark(sa_stream_t *s, size_t size) {
+/* int sa_stream_set_read_upper_watermark(sa_stream_t *s, size_t size) { */
- sa_return_val_if_fail(s, SA_ERROR_INVALID);
- sa_return_val_if_fail(size > 0, SA_ERROR_INVALID);
- sa_mutex_lock(s->mutex);
- sa_return_val_if_fail_mutex(s->mutex, s->state == SA_STATE_INIT, SA_ERROR_STATE);
- sa_return_val_if_fail_mutex(s->mutex, s->mode & SA_MODE_RDONLY, SA_ERROR_STATE);
+/* sa_return_val_if_fail(s, SA_ERROR_INVALID); */
+/* sa_return_val_if_fail(size > 0, SA_ERROR_INVALID); */
+/* sa_mutex_lock(s->mutex); */
+/* sa_return_val_if_fail_mutex(s->mutex, s->state == SA_STATE_INIT, SA_ERROR_STATE); */
+/* sa_return_val_if_fail_mutex(s->mutex, s->mode & SA_MODE_RDONLY, SA_ERROR_STATE); */
- s->read_upper_watermark = size;
+/* s->read_upper_watermark = size; */
- sa_mutex_unlock(s->mutex);
- return SA_SUCCESS;
-}
+/* sa_mutex_unlock(s->mutex); */
+/* return SA_SUCCESS; */
+/* } */
int sa_stream_set_channel_map(sa_stream_t *s, const sa_channel_t *map, unsigned n) {
const sa_channel_t *c;
@@ -527,16 +527,16 @@ int sa_stream_set_adjust_pcm_format(sa_stream_t *s, sa_adjust_t direction) {
return SA_SUCCESS;
}
-int sa_stream_set_adjust_watermarks(sa_stream_t *s, sa_adjust_t direction) {
- sa_return_val_if_fail(s, SA_ERROR_INVALID);
- sa_mutex_lock(s->mutex);
- sa_return_val_if_fail_mutex(s->mutex, s->state == SA_STATE_INIT, SA_ERROR_STATE);
+/* int sa_stream_set_adjust_watermarks(sa_stream_t *s, sa_adjust_t direction) { */
+/* sa_return_val_if_fail(s, SA_ERROR_INVALID); */
+/* sa_mutex_lock(s->mutex); */
+/* sa_return_val_if_fail_mutex(s->mutex, s->state == SA_STATE_INIT, SA_ERROR_STATE); */
- s->adjust_watermarks = direction;
+/* s->adjust_watermarks = direction; */
- sa_mutex_unlock(s->mutex);
- return SA_SUCCESS;
-}
+/* sa_mutex_unlock(s->mutex); */
+/* return SA_SUCCESS; */
+/* } */
int sa_stream_get_state(sa_stream_t *s, sa_state_t *state) {
int ret;
@@ -621,53 +621,53 @@ int sa_stream_get_codec(sa_stream_t *s, char *codec, size_t *size) {
return SA_SUCCESS;
}
-int sa_stream_get_write_lower_watermark(sa_stream_t *s, size_t *size) {
- sa_return_val_if_fail(s, SA_ERROR_INVALID);
- sa_return_val_if_fail(size, SA_ERROR_INVALID);
- sa_mutex_lock(s->mutex);
- sa_return_val_if_fail_mutex(s->mutex, s->mode & SA_MODE_WRONLY, SA_ERROR_STATE);
+/* int sa_stream_get_write_lower_watermark(sa_stream_t *s, size_t *size) { */
+/* sa_return_val_if_fail(s, SA_ERROR_INVALID); */
+/* sa_return_val_if_fail(size, SA_ERROR_INVALID); */
+/* sa_mutex_lock(s->mutex); */
+/* sa_return_val_if_fail_mutex(s->mutex, s->mode & SA_MODE_WRONLY, SA_ERROR_STATE); */
- *size = s->write_lower_watermark;
+/* *size = s->write_lower_watermark; */
- sa_mutex_unlock(s->mutex);
- return SA_SUCCESS;
-}
+/* sa_mutex_unlock(s->mutex); */
+/* return SA_SUCCESS; */
+/* } */
-int sa_stream_get_read_lower_watermark(sa_stream_t *s, size_t *size) {
- sa_return_val_if_fail(s, SA_ERROR_INVALID);
- sa_return_val_if_fail(size, SA_ERROR_INVALID);
- sa_mutex_lock(s->mutex);
- sa_return_val_if_fail_mutex(s->mutex, s->mode & SA_MODE_RDONLY, SA_ERROR_STATE);
+/* int sa_stream_get_read_lower_watermark(sa_stream_t *s, size_t *size) { */
+/* sa_return_val_if_fail(s, SA_ERROR_INVALID); */
+/* sa_return_val_if_fail(size, SA_ERROR_INVALID); */
+/* sa_mutex_lock(s->mutex); */
+/* sa_return_val_if_fail_mutex(s->mutex, s->mode & SA_MODE_RDONLY, SA_ERROR_STATE); */
- *size = s->read_lower_watermark;
+/* *size = s->read_lower_watermark; */
- sa_mutex_unlock(s->mutex);
- return SA_SUCCESS;
-}
+/* sa_mutex_unlock(s->mutex); */
+/* return SA_SUCCESS; */
+/* } */
-int sa_stream_get_write_upper_watermark(sa_stream_t *s, size_t *size) {
- sa_return_val_if_fail(s, SA_ERROR_INVALID);
- sa_return_val_if_fail(size, SA_ERROR_INVALID);
- sa_mutex_lock(s->mutex);
- sa_return_val_if_fail_mutex(s->mutex, s->mode & SA_MODE_WRONLY, SA_ERROR_STATE);
+/* int sa_stream_get_write_upper_watermark(sa_stream_t *s, size_t *size) { */
+/* sa_return_val_if_fail(s, SA_ERROR_INVALID); */
+/* sa_return_val_if_fail(size, SA_ERROR_INVALID); */
+/* sa_mutex_lock(s->mutex); */
+/* sa_return_val_if_fail_mutex(s->mutex, s->mode & SA_MODE_WRONLY, SA_ERROR_STATE); */
- *size = s->write_upper_watermark;
+/* *size = s->write_upper_watermark; */
- sa_mutex_unlock(s->mutex);
- return SA_SUCCESS;
-}
+/* sa_mutex_unlock(s->mutex); */
+/* return SA_SUCCESS; */
+/* } */
-int sa_stream_get_read_upper_watermark(sa_stream_t *s, size_t *size) {
- sa_return_val_if_fail(s, SA_ERROR_INVALID);
- sa_return_val_if_fail(size, SA_ERROR_INVALID);
- sa_mutex_lock(s->mutex);
- sa_return_val_if_fail_mutex(s->mutex, s->mode & SA_MODE_RDONLY, SA_ERROR_STATE);
+/* int sa_stream_get_read_upper_watermark(sa_stream_t *s, size_t *size) { */
+/* sa_return_val_if_fail(s, SA_ERROR_INVALID); */
+/* sa_return_val_if_fail(size, SA_ERROR_INVALID); */
+/* sa_mutex_lock(s->mutex); */
+/* sa_return_val_if_fail_mutex(s->mutex, s->mode & SA_MODE_RDONLY, SA_ERROR_STATE); */
- *size = s->read_upper_watermark;
+/* *size = s->read_upper_watermark; */
- sa_mutex_unlock(s->mutex);
- return SA_SUCCESS;
-}
+/* sa_mutex_unlock(s->mutex); */
+/* return SA_SUCCESS; */
+/* } */
int sa_stream_get_channel_map(sa_stream_t *s, sa_channel_t *map, unsigned *n) {
sa_return_val_if_fail(s, SA_ERROR_INVALID);
@@ -841,16 +841,16 @@ int sa_stream_get_adjust_pcm_format(sa_stream_t *s, sa_adjust_t *direction) {
return SA_SUCCESS;
}
-int sa_stream_get_adjust_watermarks(sa_stream_t *s, sa_adjust_t *direction) {
- sa_return_val_if_fail_mutex(s->mutex, s, SA_ERROR_INVALID);
- sa_return_val_if_fail_mutex(s->mutex, direction, SA_ERROR_INVALID);
- sa_mutex_lock(s->mutex);
+/* int sa_stream_get_adjust_watermarks(sa_stream_t *s, sa_adjust_t *direction) { */
+/* sa_return_val_if_fail_mutex(s->mutex, s, SA_ERROR_INVALID); */
+/* sa_return_val_if_fail_mutex(s->mutex, direction, SA_ERROR_INVALID); */
+/* sa_mutex_lock(s->mutex); */
- *direction = s->adjust_watermarks;
+/* *direction = s->adjust_watermarks; */
- sa_mutex_unlock(s->mutex);
- return SA_SUCCESS;
-}
+/* sa_mutex_unlock(s->mutex); */
+/* return SA_SUCCESS; */
+/* } */
int sa_stream_get_user_data(sa_stream_t *s, void **value) {
sa_return_val_if_fail(s, SA_ERROR_INVALID);
@@ -1070,6 +1070,7 @@ size_t sa_get_pcm_sample_size(sa_pcm_format_t f) {
case SA_PCM_FORMAT_S16_LE:
case SA_PCM_FORMAT_S16_BE:
return 2;
+
case SA_PCM_FORMAT_S24_LE:
case SA_PCM_FORMAT_S24_BE:
return 3;