rdesktop/rdpsnd.h
Pierre Ossman 489c43f382 Return STREAM objects from data generating functions
Use a consistent style of returning a new STREAM object from functions
that output data, rather than requiring an existing structure to be
passed in. This generally makes the memory management more straight
forward and allows us to do more proper bounds checking of everything.

This also adds some new STREAM macros to make it easier to manage
them without poking around in the internal structure.
2019-05-06 14:33:11 +02:00

61 lines
1.9 KiB
C

/*
rdesktop: A Remote Desktop Protocol client.
Sound infrastructure
Copyright (C) Michael Gernoth 2006-2008
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
struct audio_packet
{
STREAM s;
uint16 tick;
uint8 index;
struct timeval arrive_tv;
struct timeval completion_tv;
};
struct audio_driver
{
void (*add_fds) (int *n, fd_set * rfds, fd_set * wfds, struct timeval * tv);
void (*check_fds) (fd_set * rfds, fd_set * wfds);
RD_BOOL(*wave_out_open) (void);
void (*wave_out_close) (void);
RD_BOOL(*wave_out_format_supported) (RD_WAVEFORMATEX * pwfx);
RD_BOOL(*wave_out_set_format) (RD_WAVEFORMATEX * pwfx);
void (*wave_out_volume) (uint16 left, uint16 right);
RD_BOOL(*wave_in_open) (void);
void (*wave_in_close) (void);
RD_BOOL(*wave_in_format_supported) (RD_WAVEFORMATEX * pwfx);
RD_BOOL(*wave_in_set_format) (RD_WAVEFORMATEX * pwfx);
void (*wave_in_volume) (uint16 left, uint16 right);
char *name;
char *description;
int need_byteswap_on_be;
int need_resampling;
struct audio_driver *next;
};
/* Driver register functions */
struct audio_driver *pulse_register(char *options);
struct audio_driver *alsa_register(char *options);
struct audio_driver *libao_register(char *options);
struct audio_driver *oss_register(char *options);
struct audio_driver *sgi_register(char *options);
struct audio_driver *sun_register(char *options);