1/***
2  This file is part of PulseAudio.
3
4  Copyright 2004-2008 Lennart Poettering
5
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.1 of the License,
9  or (at your option) any later version.
10
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.
15
16  You should have received a copy of the GNU Lesser General Public License
17  along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
18***/
19
20#ifdef HAVE_CONFIG_H
21#include <config.h>
22#endif
23
24#include <stdlib.h>
25#include <stdio.h>
26
27#include <pulsecore/sink-input.h>
28#include <pulsecore/play-memblockq.h>
29
30#include "play-memchunk.h"
31
32int pa_play_memchunk(
33        pa_sink *sink,
34        const pa_sample_spec *ss,
35        const pa_channel_map *map,
36        const pa_memchunk *chunk,
37        pa_cvolume *volume,
38        pa_proplist *p,
39        pa_sink_input_flags_t flags,
40        uint32_t *sink_input_index) {
41
42    pa_memblockq *q;
43    int r;
44    pa_memchunk silence;
45
46    pa_assert(sink);
47    pa_assert(ss);
48    pa_assert(chunk);
49
50    pa_silence_memchunk_get(&sink->core->silence_cache, sink->core->mempool, &silence, ss, 0);
51    q = pa_memblockq_new("pa_play_memchunk() q", 0, chunk->length, 0, ss, 1, 1, 0, &silence);
52    pa_memblock_unref(silence.memblock);
53
54    pa_assert_se(pa_memblockq_push(q, chunk) >= 0);
55
56    if ((r = pa_play_memblockq(sink, ss, map, q, volume, p, flags, sink_input_index)) < 0) {
57        pa_memblockq_free(q);
58        return r;
59    }
60
61    return 0;
62}
63