| /* |
| * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| * |
| */ |
| |
| #include <netdb.h> |
| #include "../src/pcm/pcm_local.h" |
| #include "../src/control/control_local.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; |
| |