diff options
Diffstat (limited to 'src/common.c')
-rw-r--r-- | src/common.c | 219 |
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; |