| /* | |
| * ALSA client/server header file | |
| * Copyright (c) 2000 by Abramo Bagnara <abramo@alsa-project.org> | |
| * | |
| * This library is free software; you can redistribute it and/or modify | |
| * it under the terms of the GNU Lesser General Public License as | |
| * published by the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. | |
| * | |
| * You should have received a copy of the GNU Lesser General Public | |
| * License along with this library; if not, write to the Free Software | |
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |
| * | |
| */ | |
| #include "../src/pcm/pcm_local.h" | |
| #include "../src/control/control_local.h" | |
| #include <netdb.h> | |
| int snd_receive_fd(int sock, void *data, size_t len, int *fd); | |
| typedef enum _snd_dev_type { | |
| SND_DEV_TYPE_PCM, | |
| SND_DEV_TYPE_CONTROL, | |
| SND_DEV_TYPE_RAWMIDI, | |
| SND_DEV_TYPE_TIMER, | |
| SND_DEV_TYPE_HWDEP, | |
| SND_DEV_TYPE_SEQ, | |
| } snd_dev_type_t; | |
| typedef enum _snd_transport_type { | |
| SND_TRANSPORT_TYPE_SHM, | |
| SND_TRANSPORT_TYPE_TCP, | |
| } snd_transport_type_t; | |
| #define SND_PCM_IOCTL_HWSYNC _IO ('A', 0x22) | |
| #define SND_PCM_IOCTL_STATE _IO ('A', 0xf1) | |
| #define SND_PCM_IOCTL_MMAP _IO ('A', 0xf2) | |
| #define SND_PCM_IOCTL_MUNMAP _IO ('A', 0xf3) | |
| #define SND_PCM_IOCTL_MMAP_COMMIT _IO ('A', 0xf4) | |
| #define SND_PCM_IOCTL_AVAIL_UPDATE _IO ('A', 0xf5) | |
| #define SND_PCM_IOCTL_ASYNC _IO ('A', 0xf6) | |
| #define SND_PCM_IOCTL_CLOSE _IO ('A', 0xf7) | |
| #define SND_PCM_IOCTL_POLL_DESCRIPTOR _IO ('A', 0xf8) | |
| #define SND_PCM_IOCTL_HW_PTR_FD _IO ('A', 0xf9) | |
| #define SND_PCM_IOCTL_APPL_PTR_FD _IO ('A', 0xfa) | |
| #define SND_PCM_IOCTL_FORWARD _IO ('A', 0xfb) | |
| typedef struct { | |
| snd_pcm_uframes_t ptr; | |
| int use_mmap; | |
| off_t offset; /* for mmap */ | |
| int changed; | |
| } snd_pcm_shm_rbptr_t; | |
| typedef struct { | |
| long result; | |
| int cmd; | |
| snd_pcm_shm_rbptr_t hw; | |
| snd_pcm_shm_rbptr_t appl; | |
| union { | |
| struct { | |
| int sig; | |
| pid_t pid; | |
| } async; | |
| snd_pcm_info_t info; | |
| snd_pcm_hw_params_t hw_refine; | |
| snd_pcm_hw_params_t hw_params; | |
| snd_pcm_sw_params_t sw_params; | |
| snd_pcm_status_t status; | |
| struct { | |
| snd_pcm_uframes_t frames; | |
| } avail; | |
| struct { | |
| snd_pcm_sframes_t frames; | |
| } delay; | |
| struct { | |
| int enable; | |
| } pause; | |
| snd_pcm_channel_info_t channel_info; | |
| struct { | |
| snd_pcm_uframes_t frames; | |
| } rewind; | |
| struct { | |
| snd_pcm_uframes_t frames; | |
| } forward; | |
| struct { | |
| int fd; | |
| } link; | |
| struct { | |
| snd_pcm_uframes_t offset; | |
| snd_pcm_uframes_t frames; | |
| } mmap_commit; | |
| struct { | |
| char use_mmap; | |
| int shmid; | |
| off_t offset; | |
| } rbptr; | |
| } u; | |
| char data[0]; | |
| } snd_pcm_shm_ctrl_t; | |
| #define PCM_SHM_SIZE sizeof(snd_pcm_shm_ctrl_t) | |
| #define SND_CTL_IOCTL_READ _IOR('U', 0xf1, snd_ctl_event_t) | |
| #define SND_CTL_IOCTL_CLOSE _IO ('U', 0xf2) | |
| #define SND_CTL_IOCTL_POLL_DESCRIPTOR _IO ('U', 0xf3) | |
| #define SND_CTL_IOCTL_ASYNC _IO ('U', 0xf4) | |
| typedef struct { | |
| int result; | |
| int cmd; | |
| union { | |
| struct { | |
| int sig; | |
| pid_t pid; | |
| } async; | |
| int device; | |
| int subscribe_events; | |
| snd_ctl_card_info_t card_info; | |
| snd_ctl_elem_list_t element_list; | |
| snd_ctl_elem_info_t element_info; | |
| snd_ctl_elem_value_t element_read; | |
| snd_ctl_elem_value_t element_write; | |
| snd_ctl_elem_id_t element_lock; | |
| snd_ctl_elem_id_t element_unlock; | |
| snd_hwdep_info_t hwdep_info; | |
| snd_pcm_info_t pcm_info; | |
| int pcm_prefer_subdevice; | |
| snd_rawmidi_info_t rawmidi_info; | |
| int rawmidi_prefer_subdevice; | |
| unsigned int power_state; | |
| snd_ctl_event_t read; | |
| } u; | |
| char data[0]; | |
| } snd_ctl_shm_ctrl_t; | |
| #define CTL_SHM_SIZE 65536 | |
| #define CTL_SHM_DATA_MAXLEN (CTL_SHM_SIZE - offsetof(snd_ctl_shm_ctrl_t, data)) | |
| typedef struct { | |
| unsigned char dev_type; | |
| unsigned char transport_type; | |
| unsigned char stream; | |
| unsigned char mode; | |
| unsigned char namelen; | |
| char name[0]; | |
| } snd_client_open_request_t; | |
| typedef struct { | |
| long result; | |
| int cookie; | |
| } snd_client_open_answer_t; | |