audio.h revision 06f76f08c1ed36b84208746f490dfcd2a13909df
5b1d6bab9f4cf5dacf1883e7c4a40c84349f597fvboxsync * QEMU Audio subsystem header
5b1d6bab9f4cf5dacf1883e7c4a40c84349f597fvboxsync * Copyright (c) 2003-2005 Vassili Karpov (malc)
5b1d6bab9f4cf5dacf1883e7c4a40c84349f597fvboxsync * Permission is hereby granted, free of charge, to any person obtaining a copy
5b1d6bab9f4cf5dacf1883e7c4a40c84349f597fvboxsync * of this software and associated documentation files (the "Software"), to deal
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * in the Software without restriction, including without limitation the rights
5b1d6bab9f4cf5dacf1883e7c4a40c84349f597fvboxsync * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
5b1d6bab9f4cf5dacf1883e7c4a40c84349f597fvboxsync * copies of the Software, and to permit persons to whom the Software is
5b1d6bab9f4cf5dacf1883e7c4a40c84349f597fvboxsync * furnished to do so, subject to the following conditions:
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * The above copyright notice and this permission notice shall be included in
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * all copies or substantial portions of the Software.
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
5b1d6bab9f4cf5dacf1883e7c4a40c84349f597fvboxsync * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
5b1d6bab9f4cf5dacf1883e7c4a40c84349f597fvboxsync * THE SOFTWARE.
da957c069c2a3c582fe265ff88170ce4c42b499dvboxsync#if defined __STDC_VERSION__ && __STDC_VERSION__ > 199901L
5b1d6bab9f4cf5dacf1883e7c4a40c84349f597fvboxsynctypedef void (*audio_callback_fn_t) (void *opaque, int avail);
5b1d6bab9f4cf5dacf1883e7c4a40c84349f597fvboxsynctypedef enum {
5b1d6bab9f4cf5dacf1883e7c4a40c84349f597fvboxsynctypedef struct {
5b1d6bab9f4cf5dacf1883e7c4a40c84349f597fvboxsynctypedef enum {
5b1d6bab9f4cf5dacf1883e7c4a40c84349f597fvboxsynctypedef enum
914d33aebb63d8c288dfd1b7e74f8e2acf3eaa66vboxsynctypedef enum
5b1d6bab9f4cf5dacf1883e7c4a40c84349f597fvboxsync void (*notify) (void *opaque, audcnotification_e cmd);
5b1d6bab9f4cf5dacf1883e7c4a40c84349f597fvboxsync void (*capture) (void *opaque, void *buf, int size);
5b1d6bab9f4cf5dacf1883e7c4a40c84349f597fvboxsynctypedef struct CaptureState {
5b1d6bab9f4cf5dacf1883e7c4a40c84349f597fvboxsynctypedef struct QEMUSoundCard {
5b1d6bab9f4cf5dacf1883e7c4a40c84349f597fvboxsynctypedef struct QEMUAudioTimeStamp {
5b1d6bab9f4cf5dacf1883e7c4a40c84349f597fvboxsyncvoid AUD_vlog (const char *cap, const char *fmt, va_list ap);
5b1d6bab9f4cf5dacf1883e7c4a40c84349f597fvboxsyncvoid AUD_log (const char *cap, const char *fmt, ...)
5b1d6bab9f4cf5dacf1883e7c4a40c84349f597fvboxsync#if defined (__GNUC__) && !defined (VBOX) /* VBox: oh, please, shut up. */
5b1d6bab9f4cf5dacf1883e7c4a40c84349f597fvboxsyncvoid AUD_register_card (const char *name, QEMUSoundCard *card);
914d33aebb63d8c288dfd1b7e74f8e2acf3eaa66vboxsyncvoid AUD_del_capture (CaptureVoiceOut *cap, void *cb_opaque);
914d33aebb63d8c288dfd1b7e74f8e2acf3eaa66vboxsync const char *name,
548ca31b6b47c36bacce49bed3339cb8075b9681vboxsyncvoid AUD_close_out (QEMUSoundCard *card, SWVoiceOut *sw);
aa32d4906f2f685992091893d5abdf27a2352a85vboxsyncint AUD_write (SWVoiceOut *sw, void *pcm_buf, int size);
914d33aebb63d8c288dfd1b7e74f8e2acf3eaa66vboxsyncvoid AUD_init_time_stamp_out (SWVoiceOut *sw, QEMUAudioTimeStamp *ts);
914d33aebb63d8c288dfd1b7e74f8e2acf3eaa66vboxsyncuint64_t AUD_get_elapsed_usec_out (SWVoiceOut *sw, QEMUAudioTimeStamp *ts);
914d33aebb63d8c288dfd1b7e74f8e2acf3eaa66vboxsync const char *name,
548ca31b6b47c36bacce49bed3339cb8075b9681vboxsyncvoid AUD_close_in (QEMUSoundCard *card, SWVoiceIn *sw);
914d33aebb63d8c288dfd1b7e74f8e2acf3eaa66vboxsyncint AUD_read (SWVoiceIn *sw, void *pcm_buf, int size);
b7a5b3f9f9ecce32ddacf8404c625ce0451bbdc1vboxsyncvoid AUD_init_time_stamp_in (SWVoiceIn *sw, QEMUAudioTimeStamp *ts);
914d33aebb63d8c288dfd1b7e74f8e2acf3eaa66vboxsyncuint64_t AUD_get_elapsed_usec_in (SWVoiceIn *sw, QEMUAudioTimeStamp *ts);
914d33aebb63d8c288dfd1b7e74f8e2acf3eaa66vboxsyncvoid AUD_set_volume_out (SWVoiceOut *po, int mute, uint8_t lvol, uint8_t rvol);
914d33aebb63d8c288dfd1b7e74f8e2acf3eaa66vboxsyncvoid AUD_set_volume (audmixerctl_t mt, int *mute, uint8_t *lvol, uint8_t *rvol);
914d33aebb63d8c288dfd1b7e74f8e2acf3eaa66vboxsyncvoid AUD_set_record_source (audrecsource_t *ars, audrecsource_t *als);
914d33aebb63d8c288dfd1b7e74f8e2acf3eaa66vboxsync return (d + incr);
5b1d6bab9f4cf5dacf1883e7c4a40c84349f597fvboxsync#define audio_MIN(a, b) ((a)>(b)?(b):(a))
5b1d6bab9f4cf5dacf1883e7c4a40c84349f597fvboxsync#define audio_MAX(a, b) ((a)<(b)?(b):(a))
5b1d6bab9f4cf5dacf1883e7c4a40c84349f597fvboxsyncconst char *audio_get_stream_name(void);