mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-11-03 09:01:52 -05:00
Added the surround plugin to allow simple access for 4.0 and 5.1 speakers.
It needs a bit more work to make it functional.
This commit is contained in:
parent
edaf7fdf2c
commit
c4f95f48c3
13 changed files with 549 additions and 2 deletions
|
|
@ -265,6 +265,19 @@ int snd_ctl_pcm_next_device(snd_ctl_t *ctl, int * device)
|
|||
return ctl->ops->pcm_next_device(ctl, device);
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Get next PCM surround device number
|
||||
* \param ctl CTL handle
|
||||
* \param type surround type
|
||||
* \param device current device on entry and next device on return
|
||||
* \return 0 on success otherwise a negative error code
|
||||
*/
|
||||
int snd_ctl_pcm_surround_next_device(snd_ctl_t *ctl, snd_pcm_surround_type_t type, int * device)
|
||||
{
|
||||
assert(ctl && device);
|
||||
return ctl->ops->pcm_surround_next_device(ctl, type, device);
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Get info about a PCM device
|
||||
* \param ctl CTL handle
|
||||
|
|
|
|||
|
|
@ -187,6 +187,12 @@ static int snd_ctl_hw_pcm_next_device(snd_ctl_t *handle, int * device)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int snd_ctl_hw_pcm_surround_next_device(snd_ctl_t *handle, snd_pcm_surround_type_t type, int * device)
|
||||
{
|
||||
snd_ctl_hw_t *hw = handle->private_data;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int snd_ctl_hw_pcm_info(snd_ctl_t *handle, snd_pcm_info_t * info)
|
||||
{
|
||||
snd_ctl_hw_t *hw = handle->private_data;
|
||||
|
|
@ -251,6 +257,7 @@ snd_ctl_ops_t snd_ctl_hw_ops = {
|
|||
hwdep_next_device: snd_ctl_hw_hwdep_next_device,
|
||||
hwdep_info: snd_ctl_hw_hwdep_info,
|
||||
pcm_next_device: snd_ctl_hw_pcm_next_device,
|
||||
pcm_surround_next_device: snd_ctl_hw_pcm_surround_next_device,
|
||||
pcm_info: snd_ctl_hw_pcm_info,
|
||||
pcm_prefer_subdevice: snd_ctl_hw_pcm_prefer_subdevice,
|
||||
rawmidi_next_device: snd_ctl_hw_rawmidi_next_device,
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@ typedef struct _snd_ctl_ops {
|
|||
int (*hwdep_next_device)(snd_ctl_t *handle, int *device);
|
||||
int (*hwdep_info)(snd_ctl_t *handle, snd_hwdep_info_t * info);
|
||||
int (*pcm_next_device)(snd_ctl_t *handle, int *device);
|
||||
int (*pcm_surround_next_device)(snd_ctl_t *handle, snd_pcm_surround_type_t type, int *device);
|
||||
int (*pcm_info)(snd_ctl_t *handle, snd_pcm_info_t * info);
|
||||
int (*pcm_prefer_subdevice)(snd_ctl_t *handle, int subdev);
|
||||
int (*rawmidi_next_device)(snd_ctl_t *handle, int *device);
|
||||
|
|
|
|||
|
|
@ -249,6 +249,21 @@ static int snd_ctl_shm_pcm_next_device(snd_ctl_t *ctl, int * device)
|
|||
return err;
|
||||
}
|
||||
|
||||
static int snd_ctl_shm_pcm_surround_next_device(snd_ctl_t *ctl, snd_pcm_surround_type_t type, int * device)
|
||||
{
|
||||
snd_ctl_shm_t *shm = ctl->private_data;
|
||||
volatile snd_ctl_shm_ctrl_t *ctrl = shm->ctrl;
|
||||
int err;
|
||||
ctrl->u.surround.type = type;
|
||||
ctrl->u.surround.device = *device;
|
||||
ctrl->cmd = SND_CTL_IOCTL_PCM_SURROUND_NEXT_DEVICE;
|
||||
err = snd_ctl_shm_action(ctl);
|
||||
if (err < 0)
|
||||
return err;
|
||||
*device = ctrl->u.device;
|
||||
return err;
|
||||
}
|
||||
|
||||
static int snd_ctl_shm_pcm_info(snd_ctl_t *ctl, snd_pcm_info_t * info)
|
||||
{
|
||||
snd_ctl_shm_t *shm = ctl->private_data;
|
||||
|
|
@ -350,6 +365,7 @@ snd_ctl_ops_t snd_ctl_shm_ops = {
|
|||
hwdep_next_device: snd_ctl_shm_hwdep_next_device,
|
||||
hwdep_info: snd_ctl_shm_hwdep_info,
|
||||
pcm_next_device: snd_ctl_shm_pcm_next_device,
|
||||
pcm_surround_next_device: snd_ctl_shm_pcm_surround_next_device,
|
||||
pcm_info: snd_ctl_shm_pcm_info,
|
||||
pcm_prefer_subdevice: snd_ctl_shm_pcm_prefer_subdevice,
|
||||
rawmidi_next_device: snd_ctl_shm_rawmidi_next_device,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue