blob: 7e7ecf1d75ddbfc17f7e9f9aaef86f5c0946b67d [file] [log] [blame]
Miika Pekkarinen20b38972005-07-13 12:48:22 +00001/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2005 by Miika Pekkarinen
11 *
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
14 *
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
17 *
18 ****************************************************************************/
19#ifndef PCMBUF_H
20#define PCMBUF_H
21
22/* Guard buffer for crossfader when dsp is enabled. */
23#define PCMBUF_GUARD 32768
24
Miika Pekkarinenf090dc32005-07-21 11:44:00 +000025void pcmbuf_init(long bufsize);
26long pcmbuf_get_bufsize(void);
Miika Pekkarinen20b38972005-07-13 12:48:22 +000027
28void pcmbuf_play_stop(void);
29bool pcmbuf_is_crossfade_active(void);
30
31/* These functions are for playing chained buffers of PCM data */
32bool pcmbuf_add_chunk(void *addr, int size, void (*callback)(void));
Miika Pekkarinen20b38972005-07-13 12:48:22 +000033
Miika Pekkarinen65d43a22005-08-28 19:55:30 +000034#ifdef HAVE_ADJUSTABLE_CPU_FREQ
Miika Pekkarinen29aad552005-08-28 14:16:03 +000035void pcmbuf_boost(bool state);
Miika Pekkarinen20b38972005-07-13 12:48:22 +000036void pcmbuf_set_boost_mode(bool state);
Miika Pekkarinen65d43a22005-08-28 19:55:30 +000037#else
38#define pcmbuf_boost(state) do { } while(0)
39#define pcmbuf_set_boost_mode(state) do { } while(0)
40#endif
Miika Pekkarinen20b38972005-07-13 12:48:22 +000041bool pcmbuf_is_lowdata(void);
42void pcmbuf_flush_audio(void);
Miika Pekkarinen159c52d2005-08-20 11:13:19 +000043void pcmbuf_play_start(void);
Miika Pekkarinene7461b32005-11-06 16:40:20 +000044bool pcmbuf_crossfade_init(void);
Miika Pekkarinen20b38972005-07-13 12:48:22 +000045void pcmbuf_add_event(void (*event_handler)(void));
Brandon Lowa3868d32006-01-21 22:42:44 +000046void pcmbuf_set_position_callback(void (*callback)(int size));
Miika Pekkarinen20b38972005-07-13 12:48:22 +000047unsigned int pcmbuf_get_latency(void);
48bool pcmbuf_insert_buffer(char *buf, long length);
49void pcmbuf_flush_buffer(long length);
50void* pcmbuf_request_buffer(long length, long *realsize);
51bool pcmbuf_is_crossfade_enabled(void);
52void pcmbuf_crossfade_enable(bool on_off);
53
Miika Pekkarinen159c52d2005-08-20 11:13:19 +000054int pcmbuf_usage(void);
55int pcmbuf_mix_usage(void);
56void pcmbuf_beep(int frequency, int duration, int amplitude);
57void pcmbuf_reset_mixpos(void);
58void pcmbuf_mix(char *buf, long length);
59
Miika Pekkarinen20b38972005-07-13 12:48:22 +000060#endif