Lines Matching full:mixer
40 static MALLOC_DEFINE(M_MIXER, "mixer", "mixer");
45 "control channel pcm/rec volume, bypassing real mixer device");
70 * mixer's controls. A change in value indicates that persistent
71 * mixer applications should update their displays.
105 .d_name = "mixer",
331 mixer_get(struct snd_mixer *mixer, int dev)
333 if ((dev < SOUND_MIXER_NRDEVICES) && (mixer->devs & (1 << dev))) {
334 if (mixer->mutedevs & (1 << dev))
335 return (mixer->level_muted[dev]);
337 return (mixer->level[dev]);
344 mix_setmutedevs(struct snd_mixer *mixer, u_int32_t mutedevs)
349 mutedevs &= mixer->devs;
350 delta = (mixer->mutedevs ^ mutedevs) & mixer->devs;
351 mixer->mutedevs = mutedevs;
357 mixer->level_muted[i] = mixer->level[i];
358 mixer_set(mixer, i, 0, 0);
360 mixer_set(mixer, i, 0, mixer->level_muted[i]);
366 mixer_setrecsrc(struct snd_mixer *mixer, u_int32_t src)
372 d = device_get_softc(mixer->dev);
375 if (!(d->flags & SD_F_MPSAFE) && mtx_owned(mixer->lock) != 0)
379 src &= mixer->recdevs;
381 src = mixer->recdevs & SOUND_MASK_MIC;
383 src = mixer->recdevs & SOUND_MASK_MONITOR;
385 src = mixer->recdevs & SOUND_MASK_LINE;
386 if (src == 0 && mixer->recdevs != 0)
387 src = (1 << (ffs(mixer->recdevs) - 1));
389 MIXER_SET_UNLOCK(mixer, dropmtx);
390 recsrc = MIXER_SETRECSRC(mixer, src);
391 MIXER_SET_LOCK(mixer, dropmtx);
393 mixer->recsrc = recsrc;
399 mixer_getrecsrc(struct snd_mixer *mixer)
401 return mixer->recsrc;
416 * @param m mixer context container thing
451 * @param m mixer context container thing
508 * used by the rest of the mixer code.
518 * @param m mixer device context container thing
654 ("invalid mixer type=%d", type));
657 snprintf(m->name, sizeof(m->name), "%s:mixer",
664 "primary pcm mixer" : "secondary pcm mixer");
690 ("%s(): illegal mixer type=%d", __func__, m->type));
692 /* mixer uninit can sleep --hps */
754 "mixer%d", unit);
763 device_printf(dev, "Mixer \"%s\" -> \"%s\":",
768 device_printf(dev, "Mixer \"%s\":",
779 device_printf(dev, "Soft PCM mixer ENABLED\n");
803 ("%s(): illegal mixer type=%d", __func__, m->type));
817 /* mixer uninit can sleep --hps */
1135 * pcm or rec volume is by doing mixer ioctl
1137 * on its open fd, rather than cracky mixer bypassing here.
1256 * Certain ioctls may be made on any type of device (audio, mixer,
1364 if (strcmp(name, "mixer") == 0) {
1401 snprintf(mi->id, sizeof(mi->id), "mixer%d (n/a)", unit);
1402 snprintf(mi->name, sizeof(mi->name), "pcm%d:mixer (unavailable)", unit);
1410 * This function searches for a mixer based on the numeric ID stored
1412 * current mixer handling the request is provided. Note, however, that
1413 * this ioctl may be made with any sound device (audio, mixer, midi).
1415 * @note Caller must not hold any PCM device, channel, or mixer locks.
1434 * If probing the device handling the ioctl, make sure it's a mixer
1435 * device. (This ioctl is valid on audio, mixer, and midi devices.)
1445 * begin by iterating over PCM devices and search for our mixer.
1483 * - a specific mixer device has been locked, so be
1488 snprintf(mi->id, sizeof(mi->id), "mixer%d", i);
1494 * a pcm and mixer devices, so this is hardcoded to 0.
1501 * string that identifies the mixer better than
1527 * Mixer extensions currently aren't supported, so
1534 * @note The priority field is for mixer applets to
1535 * determine which mixer should be the default, with 0
1541 * default mixer. Other devices use values 1 to 9
1546 snprintf(mi->devnode, sizeof(mi->devnode), "/dev/mixer%d", i);
1560 * Allow the sound driver to use the mixer lock to protect its mixer