1 /* sound-jack.h - play a sound over the Jackaudio Server
3 Copyright (C) 2006 Sebastian Freundt
5 This file is part of SXEmacs
7 SXEmacs is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
12 SXEmacs is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
21 /* Synched up with: Not in FSF. */
23 #ifndef INCLUDED_sound_jack_h_
24 #define INCLUDED_sound_jack_h_
27 #include "semaphore.h"
28 #include <jack/jack.h>
32 typedef struct sound_jack_data_s sound_jack_data_t;
33 typedef struct sound_jack_aj_data_s sound_jack_aj_data_t;
34 typedef size_t(*sound_jack_demux_fun)(float*, char*, size_t, int,
35 sound_jack_aj_data_t*);
37 struct sound_jack_data_s {
44 struct sound_jack_aj_data_s {
45 jack_client_t *client;
46 jack_port_t *ports[MAX_CHANS];
47 const char **port_ptrs;
55 /* thread management */
56 struct sxe_semaphore_s sem;
57 /* buffer management */
58 size_t overfill; /* in frames */
62 sound_jack_demux_fun demux_fun;
68 extern Lisp_Object Qjack; /* initialised in sound.c */
70 #define DEVICE_CONNECTED_TO_JACK_P(x) 1 /* FIXME: better check */
72 DECLARE_AUDIO_DEVICE(sound_jack);
74 #ifdef ALL_DEBUG_FLAGS
75 #undef JACK_DEBUG_FLAG
76 #define JACK_DEBUG_FLAG
79 #endif /* INCLUDED_sound_jack_h_ */