4 This file is part of PulseAudio.
6 PulseAudio is free software; you can redistribute it and/or modify
7 it under the terms of the GNU Lesser General Public License as published
8 by the Free Software Foundation; either version 2 of the License,
9 or (at your option) any later version.
11 PulseAudio is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 General Public License for more details.
16 You should have received a copy of the GNU Lesser General Public License
17 along with PulseAudio; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
31 #include <pulsecore/memblockq.h>
32 #include <pulsecore/log.h>
34 static void dump(pa_memblockq *bq) {
43 if (pa_memblockq_peek(bq, &out) < 0)
46 q = pa_memblock_acquire(out.memblock);
47 for (e = (char*) q + out.index, n = 0; n < out.length; n++)
49 pa_memblock_release(out.memblock);
51 pa_memblock_unref(out.memblock);
52 pa_memblockq_drop(bq, out.length);
58 int main(int argc, char *argv[]) {
63 pa_memchunk chunk1, chunk2, chunk3, chunk4;
66 pa_log_set_maximal_level(PA_LOG_DEBUG);
68 p = pa_mempool_new(0);
70 silence.memblock = pa_memblock_new_fixed(p, (char*) "__", 2, 1);
71 assert(silence.memblock);
73 silence.length = pa_memblock_get_length(silence.memblock);
75 bq = pa_memblockq_new(0, 40, 10, 2, 4, 4, 40, &silence);
78 chunk1.memblock = pa_memblock_new_fixed(p, (char*) "11", 2, 1);
81 assert(chunk1.memblock);
83 chunk2.memblock = pa_memblock_new_fixed(p, (char*) "XX22", 4, 1);
86 assert(chunk2.memblock);
88 chunk3.memblock = pa_memblock_new_fixed(p, (char*) "3333", 4, 1);
91 assert(chunk3.memblock);
93 chunk4.memblock = pa_memblock_new_fixed(p, (char*) "44444444", 8, 1);
96 assert(chunk4.memblock);
98 ret = pa_memblockq_push(bq, &chunk1);
101 ret = pa_memblockq_push(bq, &chunk2);
104 ret = pa_memblockq_push(bq, &chunk3);
107 ret = pa_memblockq_push(bq, &chunk4);
110 pa_memblockq_seek(bq, -6, 0);
111 ret = pa_memblockq_push(bq, &chunk3);
114 pa_memblockq_seek(bq, -2, 0);
115 ret = pa_memblockq_push(bq, &chunk1);
118 pa_memblockq_seek(bq, -10, 0);
119 ret = pa_memblockq_push(bq, &chunk4);
122 pa_memblockq_seek(bq, 10, 0);
124 ret = pa_memblockq_push(bq, &chunk1);
127 pa_memblockq_seek(bq, -6, 0);
128 ret = pa_memblockq_push(bq, &chunk2);
132 pa_memblockq_seek(bq, -12, 0);
133 ret = pa_memblockq_push(bq, &chunk1);
136 pa_memblockq_seek(bq, 20, 0);
139 ret = pa_memblockq_push(bq, &chunk3);
141 pa_memblockq_seek(bq, -2, 0);
145 ret = pa_memblockq_push(bq, &chunk3);
148 pa_memblockq_seek(bq, 30, PA_SEEK_RELATIVE);
152 pa_memblockq_rewind(bq, 52);
156 pa_memblockq_free(bq);
157 pa_memblock_unref(silence.memblock);
158 pa_memblock_unref(chunk1.memblock);
159 pa_memblock_unref(chunk2.memblock);
160 pa_memblock_unref(chunk3.memblock);
161 pa_memblock_unref(chunk4.memblock);