Branch data Line data Source code
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, write to the Free Software
18 : : Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
19 : : USA.
20 : : ***/
21 : :
22 : : #ifdef HAVE_CONFIG_H
23 : : #include <config.h>
24 : : #endif
25 : :
26 : : #include <stdlib.h>
27 : : #include <stdio.h>
28 : :
29 : : #include <pulsecore/sink-input.h>
30 : : #include <pulsecore/play-memblockq.h>
31 : :
32 : : #include "play-memchunk.h"
33 : :
34 : 0 : int pa_play_memchunk(
35 : : pa_sink *sink,
36 : : const pa_sample_spec *ss,
37 : : const pa_channel_map *map,
38 : : const pa_memchunk *chunk,
39 : : pa_cvolume *volume,
40 : : pa_proplist *p,
41 : : pa_sink_input_flags_t flags,
42 : : uint32_t *sink_input_index) {
43 : :
44 : : pa_memblockq *q;
45 : : int r;
46 : : pa_memchunk silence;
47 : :
48 [ # # ]: 0 : pa_assert(sink);
49 [ # # ]: 0 : pa_assert(ss);
50 [ # # ]: 0 : pa_assert(chunk);
51 : :
52 : 0 : pa_silence_memchunk_get(&sink->core->silence_cache, sink->core->mempool, &silence, ss, 0);
53 : 0 : q = pa_memblockq_new("pa_play_memchunk() q", 0, chunk->length, 0, ss, 1, 1, 0, &silence);
54 : 0 : pa_memblock_unref(silence.memblock);
55 : :
56 [ # # ]: 0 : pa_assert_se(pa_memblockq_push(q, chunk) >= 0);
57 : :
58 [ # # ]: 0 : if ((r = pa_play_memblockq(sink, ss, map, q, volume, p, flags, sink_input_index)) < 0) {
59 : 0 : pa_memblockq_free(q);
60 : 0 : return r;
61 : : }
62 : :
63 : : return 0;
64 : : }
|