blob: 2476857f882feab5e14922261ca1ced4f93d39a1 [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 Pekkarinena4f8d1c2006-01-27 16:25:44 +000044bool pcmbuf_crossfade_init(bool manual_skip);
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);
Miika Pekkarinen4408b6b2006-02-07 19:17:51 +000048void pcmbuf_set_low_latency(bool state);
Miika Pekkarinen20b38972005-07-13 12:48:22 +000049bool pcmbuf_insert_buffer(char *buf, long length);
50void pcmbuf_flush_buffer(long length);
51void* pcmbuf_request_buffer(long length, long *realsize);
52bool pcmbuf_is_crossfade_enabled(void);
53void pcmbuf_crossfade_enable(bool on_off);
54
Miika Pekkarinen159c52d2005-08-20 11:13:19 +000055int pcmbuf_usage(void);
56int pcmbuf_mix_usage(void);
57void pcmbuf_beep(int frequency, int duration, int amplitude);
58void pcmbuf_reset_mixpos(void);
59void pcmbuf_mix(char *buf, long length);
60
Miika Pekkarinen20b38972005-07-13 12:48:22 +000061#endif