summaryrefslogtreecommitdiffstats
path: root/common.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2007-05-22 22:53:09 +0000
committerLennart Poettering <lennart@poettering.net>2007-05-22 22:53:09 +0000
commitc1b4872b0910c9aa784d878dca771b21c4690048 (patch)
tree2ca5aea3f57c1336ab3165b94a385da9db72c00f /common.c
parentb60e60dbaeff9311b3e74a6d54bb3bbb2c1f61e3 (diff)
lots of work
git-svn-id: file:///home/lennart/svn/public/libsydney/trunk@30 9ba3c220-e4d3-45a2-8aa3-73fcc9aff6ce
Diffstat (limited to 'common.c')
-rw-r--r--common.c71
1 files changed, 31 insertions, 40 deletions
diff --git a/common.c b/common.c
index 5f3ff57..5a81d02 100644
--- a/common.c
+++ b/common.c
@@ -540,7 +540,11 @@ int sa_stream_get_state(sa_stream_t *s, sa_state_t *state) {
sa_mutex_lock(s->mutex);
sa_return_val_if_fail_mutex(s->mutex, state, SA_ERROR_INVALID);
- ret = driver_get_state(s, state);
+ if (s->state == SA_STATE_INIT) {
+ *state = s->state;
+ ret = SA_SUCCESS;
+ } else
+ ret = driver_get_state(s, state);
sa_mutex_unlock(s->mutex);
return ret;
@@ -895,79 +899,66 @@ int sa_stream_get_position(sa_stream_t *s, sa_position_t position, int64_t *pos)
}
int sa_stream_read(sa_stream_t *s, void *data, size_t nbytes) {
- return sa_stream_pread(s, data, nbytes, 0, SA_SEEK_RELATIVE);
-}
-
-int sa_stream_write(sa_stream_t *s, const void *data, size_t nbytes) {
- return sa_stream_pwrite(s, data, nbytes, 0, SA_SEEK_RELATIVE);
-}
-
-int sa_stream_read_ni(sa_stream_t *s, unsigned channel, void *data, size_t nbytes) {
- return sa_stream_pread_ni(s, channel, data, nbytes, 0, SA_SEEK_RELATIVE);
-}
-
-int sa_stream_write_ni(sa_stream_t *s, unsigned channel, const void *data, size_t nbytes) {
- return sa_stream_pwrite_ni(s, channel, data, nbytes, 0, SA_SEEK_RELATIVE);
-}
-
-int sa_stream_pread(sa_stream_t *s, void *data, size_t nbytes, int64_t offset, sa_seek_t whence) {
int ret;
-
sa_return_val_if_fail(s, SA_ERROR_INVALID);
sa_return_val_if_fail(data, SA_ERROR_INVALID);
sa_return_val_if_fail(nbytes > 0, SA_ERROR_INVALID);
- sa_return_val_if_fail(whence == SA_SEEK_RELATIVE || whence == SA_SEEK_ABSOLUTE || whence == SA_SEEK_RELATIVE_END, SA_ERROR_INVALID);
sa_mutex_lock(s->mutex);
sa_return_val_if_fail_mutex(s->mutex, !s->ni_enabled, SA_ERROR_STATE);
sa_return_val_if_fail_mutex(s->mutex, s->codec || (nbytes % s->pcm_frame_size) == 0, SA_ERROR_INVALID);
- sa_return_val_if_fail_mutex(s->mutex, s->codec || (offset % s->pcm_frame_size) == 0, SA_ERROR_INVALID);
sa_return_val_if_fail_mutex(s->mutex, s->mode & SA_MODE_RDONLY, SA_ERROR_STATE);
sa_return_val_if_fail_mutex(s->mutex, s->state == SA_STATE_RUNNING || s->state == SA_STATE_STOPPED, SA_ERROR_STATE);
- ret = driver_pread(s, data, nbytes, offset, whence);
+ ret = driver_read(s, data, nbytes);
sa_mutex_unlock(s->mutex);
return ret;
}
-int sa_stream_pwrite(sa_stream_t *s, const void *data, size_t nbytes, int64_t offset, sa_seek_t whence) {
+int sa_stream_read_ni(sa_stream_t *s, unsigned channel, void *data, size_t nbytes) {
int ret;
-
+
sa_return_val_if_fail(s, SA_ERROR_INVALID);
sa_return_val_if_fail(data, SA_ERROR_INVALID);
sa_return_val_if_fail(nbytes > 0, SA_ERROR_INVALID);
- sa_return_val_if_fail(whence == SA_SEEK_RELATIVE || whence == SA_SEEK_ABSOLUTE || whence == SA_SEEK_RELATIVE_END, SA_ERROR_INVALID);
sa_mutex_lock(s->mutex);
- sa_return_val_if_fail_mutex(s->mutex, !s->ni_enabled, SA_ERROR_STATE);
- sa_return_val_if_fail_mutex(s->mutex, s->codec || (nbytes % s->pcm_frame_size) == 0, SA_ERROR_INVALID);
- sa_return_val_if_fail_mutex(s->mutex, s->codec || (offset % s->pcm_frame_size) == 0, SA_ERROR_INVALID);
- sa_return_val_if_fail_mutex(s->mutex, s->mode & SA_MODE_WRONLY, SA_ERROR_STATE);
+ sa_return_val_if_fail_mutex(s->mutex, !s->codec, SA_ERROR_STATE);
+ sa_return_val_if_fail_mutex(s->mutex, channel < s->pcm_attrs.nchannels, SA_ERROR_INVALID);
+ sa_return_val_if_fail_mutex(s->mutex, s->ni_enabled, SA_ERROR_STATE);
+ sa_return_val_if_fail_mutex(s->mutex, (nbytes % s->pcm_sample_size) == 0, SA_ERROR_INVALID);
+ sa_return_val_if_fail_mutex(s->mutex, s->mode & SA_MODE_RDONLY, SA_ERROR_STATE);
sa_return_val_if_fail_mutex(s->mutex, s->state == SA_STATE_RUNNING || s->state == SA_STATE_STOPPED, SA_ERROR_STATE);
- ret = driver_pwrite(s, data, nbytes, offset, whence);
-
+ ret = driver_read_ni(s, channel, data, nbytes);
+
sa_mutex_unlock(s->mutex);
return ret;
}
-int sa_stream_pread_ni(sa_stream_t *s, unsigned channel, void *data, size_t nbytes, int64_t offset, sa_seek_t whence) {
- int ret;
+int sa_stream_write(sa_stream_t *s, const void *data, size_t nbytes) {
+ return sa_stream_pwrite(s, data, nbytes, 0, SA_SEEK_RELATIVE);
+}
+int sa_stream_write_ni(sa_stream_t *s, unsigned channel, const void *data, size_t nbytes) {
+ return sa_stream_pwrite_ni(s, channel, data, nbytes, 0, SA_SEEK_RELATIVE);
+}
+
+int sa_stream_pwrite(sa_stream_t *s, const void *data, size_t nbytes, int64_t offset, sa_seek_t whence) {
+ int ret;
+
sa_return_val_if_fail(s, SA_ERROR_INVALID);
sa_return_val_if_fail(data, SA_ERROR_INVALID);
sa_return_val_if_fail(nbytes > 0, SA_ERROR_INVALID);
sa_return_val_if_fail(whence == SA_SEEK_RELATIVE || whence == SA_SEEK_ABSOLUTE || whence == SA_SEEK_RELATIVE_END, SA_ERROR_INVALID);
sa_mutex_lock(s->mutex);
- sa_return_val_if_fail_mutex(s->mutex, !s->codec, SA_ERROR_STATE);
- sa_return_val_if_fail_mutex(s->mutex, channel < s->pcm_attrs.nchannels, SA_ERROR_INVALID);
- sa_return_val_if_fail_mutex(s->mutex, s->ni_enabled, SA_ERROR_STATE);
- sa_return_val_if_fail_mutex(s->mutex, (nbytes % s->pcm_sample_size) == 0, SA_ERROR_INVALID);
- sa_return_val_if_fail_mutex(s->mutex, (offset % s->pcm_sample_size) == 0, SA_ERROR_INVALID);
- sa_return_val_if_fail_mutex(s->mutex, s->mode & SA_MODE_RDONLY, SA_ERROR_STATE);
+ sa_return_val_if_fail_mutex(s->mutex, !s->ni_enabled, SA_ERROR_STATE);
+ sa_return_val_if_fail_mutex(s->mutex, s->codec || (nbytes % s->pcm_frame_size) == 0, SA_ERROR_INVALID);
+ sa_return_val_if_fail_mutex(s->mutex, s->codec || (offset % s->pcm_frame_size) == 0, SA_ERROR_INVALID);
+ sa_return_val_if_fail_mutex(s->mutex, s->mode & SA_MODE_WRONLY, SA_ERROR_STATE);
sa_return_val_if_fail_mutex(s->mutex, s->state == SA_STATE_RUNNING || s->state == SA_STATE_STOPPED, SA_ERROR_STATE);
- ret = driver_pread_ni(s, channel, data, nbytes, offset, whence);
-
+ ret = driver_pwrite(s, data, nbytes, offset, whence);
+
sa_mutex_unlock(s->mutex);
return ret;
}