FreeBSD kernel sound device code
|
Go to the source code of this file.
Data Structures | |
struct | vchan_info |
Macros | |
#define | FMTLIST_MAX 6 |
#define | FMTLIST_OFFSET 4 |
#define | DIGFMTS_MAX 2 |
#define | VCHAN_ACCESSIBLE(c) |
#define | VCHAN_FMT_HINT(x) |
#define | VCHAN_SPD_HINT(x) |
Functions | |
SND_DECLARE_FILE ("$FreeBSD$") | |
static void * | vchan_init (kobj_t obj, void *devinfo, struct snd_dbuf *b, struct pcm_channel *c, int dir) |
static int | vchan_free (kobj_t obj, void *data) |
static int | vchan_setformat (kobj_t obj, void *data, uint32_t format) |
static uint32_t | vchan_setspeed (kobj_t obj, void *data, uint32_t speed) |
static int | vchan_trigger (kobj_t obj, void *data, int go) |
static struct pcmchan_caps * | vchan_getcaps (kobj_t obj, void *data) |
static struct pcmchan_matrix * | vchan_getmatrix (kobj_t obj, void *data, uint32_t format) |
CHANNEL_DECLARE (vchan) | |
static void | pcm_getparentchannel (struct snddev_info *d, struct pcm_channel **wrch, struct pcm_channel **rdch) |
static int | sysctl_dev_pcm_vchans (SYSCTL_HANDLER_ARGS) |
static int | sysctl_dev_pcm_vchanmode (SYSCTL_HANDLER_ARGS) |
static int | sysctl_dev_pcm_vchanrate (SYSCTL_HANDLER_ARGS) |
static int | sysctl_dev_pcm_vchanformat (SYSCTL_HANDLER_ARGS) |
int | vchan_create (struct pcm_channel *parent, int num) |
int | vchan_destroy (struct pcm_channel *c) |
int | vchan_sync (struct pcm_channel *c) |
void | vchan_initsys (device_t dev) |
Variables | |
static kobj_method_t | vchan_methods [] |
#define VCHAN_ACCESSIBLE | ( | c | ) |
#define VCHAN_FMT_HINT | ( | x | ) |
#define VCHAN_SPD_HINT | ( | x | ) |
CHANNEL_DECLARE | ( | vchan | ) |
|
static |
Definition at line 254 of file vchan.c.
References c, pcm_channel::channels, CHN_F_HAS_VCHAN, CHN_F_VIRTUAL, CHN_FOREACH, CHN_LOCK, CHN_UNLOCK, pcm_channel::direction, pcm_channel::flags, pcm_channel::parentchannel, PCM_BUSYASSERT, PCM_UNLOCKASSERT, and PCMDIR_PLAY.
Referenced by sysctl_dev_pcm_vchanformat(), sysctl_dev_pcm_vchanmode(), and sysctl_dev_pcm_vchanrate().
SND_DECLARE_FILE | ( | "$FreeBSD$" | ) |
|
static |
Definition at line 553 of file vchan.c.
References AFMT_VCHAN, AFMTSTR_LEN, c, pcm_channel::children, chn_abort(), CHN_F_DIRTY, CHN_FOREACH, CHN_LOCK, chn_reset(), chn_start(), CHN_STARTED, CHN_UNLOCK, pcm_channel::direction, pcm_channel::flags, snddev_info::flags, pcm_channel::format, PCM_ACQUIRE, pcm_devclass, pcm_getparentchannel(), PCM_LOCK, PCM_REGISTERED, PCM_RELEASE_QUICK, PCM_UNLOCK, PCM_WAIT, PCMDIR_PLAY, PCMDIR_REC, snddev_info::pvchancount, snddev_info::pvchanformat, req, snddev_info::rvchancount, snddev_info::rvchanformat, SD_F_AUTOVCHAN, snd_afmt2str(), snd_str2afmt(), pcm_channel::speed, VCHAN_ACCESSIBLE, VCHAN_PLAY, VCHAN_REC, vchan_sync(), VCHAN_SYNC_REQUIRED, VCHAN_SYSCTL_DIR, and VCHAN_SYSCTL_UNIT.
Referenced by vchan_initsys().
|
static |
Definition at line 351 of file vchan.c.
References c, CHN_F_PASSTHROUGH, CHN_F_VCHAN_ADAPTIVE, CHN_F_VCHAN_DYNAMIC, CHN_F_VCHAN_PASSTHROUGH, CHN_LOCK, CHN_UNLOCK, pcm_channel::direction, pcm_channel::flags, snddev_info::flags, PCM_ACQUIRE, pcm_devclass, pcm_getparentchannel(), PCM_LOCK, PCM_REGISTERED, PCM_RELEASE_QUICK, PCM_UNLOCK, PCM_WAIT, PCMDIR_PLAY, PCMDIR_REC, req, SD_F_AUTOVCHAN, VCHAN_PLAY, VCHAN_REC, VCHAN_SYSCTL_DIR, and VCHAN_SYSCTL_UNIT.
Referenced by vchan_initsys().
|
static |
Definition at line 445 of file vchan.c.
References pcm_channel::busy, c, pcmchan_caps::caps, chn_abort(), CHN_F_DIRTY, CHN_FOREACH, chn_getcaps(), CHN_LOCK, chn_reset(), chn_start(), CHN_STARTED, CHN_UNLOCK, pcm_channel::devinfo, pcm_channel::direction, feeder_rate_max, feeder_rate_min, feeder_rate_round, pcm_channel::flags, snddev_info::flags, pcm_channel::format, pcm_channel::methods, PCM_ACQUIRE, pcm_devclass, pcm_getparentchannel(), PCM_LOCK, PCM_REGISTERED, PCM_RELEASE_QUICK, PCM_UNLOCK, PCM_WAIT, PCMDIR_PLAY, PCMDIR_REC, snddev_info::pvchancount, snddev_info::pvchanrate, RANGE, req, snddev_info::rvchancount, snddev_info::rvchanrate, SD_F_AUTOVCHAN, pcm_channel::speed, VCHAN_ACCESSIBLE, VCHAN_PLAY, VCHAN_REC, vchan_sync(), VCHAN_SYNC_REQUIRED, VCHAN_SYSCTL_DIR, and VCHAN_SYSCTL_UNIT.
Referenced by vchan_initsys().
|
static |
Definition at line 296 of file vchan.c.
References snddev_info::flags, PCM_ACQUIRE, pcm_devclass, PCM_LOCK, PCM_REGISTERED, PCM_RELEASE_QUICK, pcm_setvchans(), PCM_UNLOCK, PCM_WAIT, PCMDIR_PLAY, PCMDIR_REC, snddev_info::playcount, snddev_info::pvchancount, snddev_info::reccount, req, snddev_info::rvchancount, SD_F_AUTOVCHAN, SND_MAXVCHANS, VCHAN_PLAY, VCHAN_REC, VCHAN_SYSCTL_DIR, and VCHAN_SYSCTL_UNIT.
Referenced by vchan_initsys().
int vchan_create | ( | struct pcm_channel * | parent, |
int | num | ||
) |
Definition at line 667 of file vchan.c.
References AFMT_PASSTHROUGH, AFMT_VCHAN, CHN_F_BUSY, CHN_F_HAS_VCHAN, CHN_F_VCHAN_PASSTHROUGH, chn_getcaps(), CHN_INSERT_SORT_DESCEND, CHN_LOCK, CHN_LOCKASSERT, CHN_REMOVE, chn_reset(), CHN_UNLOCK, pcm_channel::dev, pcm_channel::devinfo, pcm_channel::direction, feeder_rate_max, feeder_rate_min, feeder_rate_round, pcm_channel::flags, pcmchan_caps::fmtlist, pcm_channel::format, pcmchan_caps::maxspeed, pcm_channel::methods, pcmchan_caps::minspeed, pcm_channel::parentsnddev, PCM_BUSYASSERT, pcm_chn_add(), pcm_chn_create(), pcm_chn_destroy(), pcm_chn_remove(), PCM_LOCK, PCM_UNLOCK, PCMDIR_PLAY, PCMDIR_PLAY_VIRTUAL, PCMDIR_REC, PCMDIR_REC_VIRTUAL, snddev_info::pvchanformat, snddev_info::pvchanrate, r, RANGE, snddev_info::rvchanformat, snddev_info::rvchanrate, snd_fmtvalid(), snd_str2afmt(), pcm_channel::speed, VCHAN_DEFAULT_FORMAT, VCHAN_DEFAULT_RATE, VCHAN_FMT_HINT, and VCHAN_SPD_HINT.
Referenced by pcm_setvchans().
int vchan_destroy | ( | struct pcm_channel * | c | ) |
Definition at line 852 of file vchan.c.
References c, CHN_EMPTY, CHN_F_BUSY, CHN_F_HAS_VCHAN, CHN_LOCK, CHN_LOCKASSERT, CHN_REMOVE, chn_reset(), CHN_UNLOCK, pcm_channel::flags, pcm_channel::format, pcm_channel::parentchannel, pcm_channel::parentsnddev, PCM_BUSYASSERT, pcm_chn_destroy(), pcm_chn_remove(), PCM_LOCK, PCM_UNLOCK, and pcm_channel::speed.
Referenced by pcm_setvchans().
|
static |
|
static |
Definition at line 188 of file vchan.c.
References AFMT_PASSTHROUGH, AFMT_VCHAN, c, vchan_info::caps, vchan_info::channel, CHN_F_VCHAN_DYNAMIC, CHN_LOCKASSERT, data, pcm_channel::dev, pcm_channel::flags, pcmchan_caps::fmtlist, vchan_info::fmtlist, FMTLIST_OFFSET, pcm_channel::format, pcmchan_caps::maxspeed, pcmchan_caps::minspeed, pcm_channel::parentchannel, pcm_channel::speed, and VCHAN_DEFAULT_FORMAT.
|
static |
Definition at line 235 of file vchan.c.
References feeder_matrix_format_map(), and format.
|
static |
Definition at line 63 of file vchan.c.
References AFMT_PASSTHROUGH, AFMT_VCHAN, c, vchan_info::caps, vchan_info::channel, CHN_F_VCHAN_DYNAMIC, CHN_F_VIRTUAL, chn_getcaps(), CHN_LOCK, CHN_UNLOCK, DIGFMTS_MAX, dir, pcm_channel::flags, pcmchan_caps::fmtlist, vchan_info::fmtlist, FMTLIST_OFFSET, pcm_channel::format, pcm_channel::parentchannel, PCMDIR_PLAY, PCMDIR_REC, PCMTRIG_STOP, vchan_info::trigger, and VCHAN_DEFAULT_FORMAT.
void vchan_initsys | ( | device_t | dev | ) |
Definition at line 940 of file vchan.c.
References dev, snddev_info::play_sysctl_tree, snddev_info::rec_sysctl_ctx, snddev_info::rec_sysctl_tree, sysctl_dev_pcm_vchanformat(), sysctl_dev_pcm_vchanmode(), sysctl_dev_pcm_vchanrate(), sysctl_dev_pcm_vchans(), VCHAN_SYSCTL_DATA, and VCHAN_SYSCTL_DATA_SIZE.
Referenced by pcm_sysinit().
|
static |
Definition at line 111 of file vchan.c.
References vchan_info::caps, vchan_info::channel, CHN_LOCKASSERT, data, pcmchan_caps::fmtlist, format, and snd_fmtvalid().
|
static |
Definition at line 126 of file vchan.c.
References vchan_info::caps, vchan_info::channel, CHN_LOCKASSERT, data, and pcmchan_caps::maxspeed.
int vchan_sync | ( | struct pcm_channel * | c | ) |
Definition at line 906 of file vchan.c.
References buf, pcm_channel::bufhard, c, CHN_F_DIRTY, CHN_F_PASSTHROUGH, CHN_F_VIRTUAL, CHN_LOCKASSERT, CHN_NAMELEN, pcm_channel::comm, pcm_channel::dev, dsp_unit2name(), feeder_chain(), pcm_channel::flags, pcm_channel::parentchannel, sndbuf_setspd(), pcm_channel::speed, and pcm_channel::unit.
Referenced by chn_notify(), feed_mixer_feed(), feed_mixer_rec(), sysctl_dev_pcm_vchanformat(), sysctl_dev_pcm_vchanrate(), and vchan_trigger().
|
static |
Definition at line 138 of file vchan.c.
References c, vchan_info::channel, pcm_channel::children, CHN_INSERT_HEAD, CHN_LOCK, CHN_LOCKASSERT, CHN_N_TRIGGER, chn_notify(), CHN_REMOVE, CHN_UNLOCK, data, go, pcm_channel::parentchannel, PCMTRIG_ABORT, PCMTRIG_COMMON, PCMTRIG_START, PCMTRIG_STOP, vchan_info::trigger, vchan_sync(), and VCHAN_SYNC_REQUIRED.
|
static |