mix
mix(a, b, c);
struct fxrng_hash mix;
fxrng_hash_init(&mix);
fxrng_hash_update(&mix, u.root_state, sizeof(u.root_state));
fxrng_hash_update(&mix, src, sz);
fxrng_hash_update(&mix, src, sz);
fxrng_hash_finish(&mix, u.hash_out, sizeof(u.hash_out));
if (codec->mix[SOUND_MIXER_OGAIN].enable)
if (codec->mix[SOUND_MIXER_PHONEOUT].enable)
if (codec->mix[SOUND_MIXER_VOLUME].enable)
codec->mix[SOUND_MIXER_OGAIN].enable = 1;
codec->mix[SOUND_MIXER_PHONEOUT].enable = 1;
bzero(&codec->mix[SOUND_MIXER_PCM],
sizeof(codec->mix[SOUND_MIXER_PCM]));
mask |= codec->mix[i].enable? 1 << i : 0;
mask |= codec->mix[i].recidx? 1 << i : 0;
struct ac97mixtable_entry *e = &codec->mix[channel];
struct ac97mixtable_entry *e = &codec->mix[channel];
codec->mix[SOUND_MIXER_OGAIN].reg = AC97_MIXEXT_SURROUND;
bzero(&codec->mix[SOUND_MIXER_OGAIN],
sizeof(codec->mix[SOUND_MIXER_OGAIN]));
bzero(&codec->mix[SOUND_MIXER_BASS],
sizeof(codec->mix[SOUND_MIXER_BASS]));
bzero(&codec->mix[SOUND_MIXER_TREBLE],
sizeof(codec->mix[SOUND_MIXER_TREBLE]));
struct ac97mixtable_entry mix[AC97_MIXER_SIZE];
codec->mix[i] = ac97mixtable_default[i];
k = codec->noext? codec->mix[i].enable : 1;
reg = codec->mix[i].reg;
if (codec->mix[i].mute) {
bit = codec->mix[i].bits;
j = ((1 << bit) - 1) << codec->mix[i].ofs;
j | (codec->mix[i].mute ? 0x8000 : 0));
k >>= codec->mix[i].ofs;
codec->mix[i].enable = 1;
codec->mix[i].bits = j;
codec->mix[i].enable = 1;
codec->mix[i].enable = 0;
codec->mix[i].enable = 0;
printf("%s%d bit master volume", j++? ", " : "", codec->mix[SOUND_MIXER_VOLUME].bits);
mix(a,b,c);
mix(a,b,c);
mix(a,b,c);
mix(a,b,c);
mix(a,b,c);
mix(a,b,c);
mix(a, b, c);
mix(a, b, c);
mix(a, b, c);