summaryrefslogtreecommitdiffstats
path: root/bufferq.h
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2007-05-18 00:56:50 +0000
committerLennart Poettering <lennart@poettering.net>2007-05-18 00:56:50 +0000
commitb60e60dbaeff9311b3e74a6d54bb3bbb2c1f61e3 (patch)
tree0ade4f3648905e7dc46d44e282f9205e956beeea /bufferq.h
parent284516185f90412c22dfa9a28cb93fb344af591b (diff)
allow static data in the bufferqs
git-svn-id: file:///home/lennart/svn/public/libsydney/trunk@29 9ba3c220-e4d3-45a2-8aa3-73fcc9aff6ce
Diffstat (limited to 'bufferq.h')
-rw-r--r--bufferq.h13
1 files changed, 10 insertions, 3 deletions
diff --git a/bufferq.h b/bufferq.h
index a645398..538bf4d 100644
--- a/bufferq.h
+++ b/bufferq.h
@@ -7,14 +7,20 @@
#include "llist.h"
#include "sydney.h"
+typedef enum sa_bufferq_item_type {
+ SA_BUFFERQ_ITEM_CONCATENATED,
+ SA_BUFFERQ_ITEM_DYNAMIC,
+ SA_BUFFERQ_ITEM_STATIC
+} sa_bufferq_item_type_t;
+
typedef struct sa_bufferq_item {
+ void *data;
int64_t idx;
size_t size;
+ sa_bufferq_item_type_t type;
SA_LLIST_ITEM(struct sa_bufferq_item, bufferq);
} sa_bufferq_item_t;
-#define SA_BUFFERQ_ITEM_DATA(x) ((void*) (uint8_t*) (x) + ALIGN(sizeof(sa_bufferq_item_t)))
-
typedef struct sa_bufferq {
SA_LLIST_HEAD(sa_bufferq_item_t, *items);
sa_bufferq_item_t **last;
@@ -27,7 +33,8 @@ int sa_bufferq_init(sa_bufferq_t *q, unsigned nchannels, size_t sample_size);
void sa_bufferq_done(sa_bufferq_t *q);
-int sa_bufferq_push(sa_bufferq_t *q, unsigned channel, const void *data, size_t nbytes, int64_t offset, sa_seek_t whence);
+int sa_bufferq_push(sa_bufferq_t *q, unsigned channel, const void *data, size_t nbytes, int64_t offset, sa_seek_t whence, int copy);
+int sa_bufferq_realloc(sa_bufferq_t *q);
int sa_bufferq_get(sa_bufferq_t *q, void *i[], size_t *bytes);
int sa_bufferq_drop(sa_bufferq_t *q, int64_t bytes);