Lines Matching refs:hw

46     HWVoiceOut hw;
58 HWVoiceIn hw;
342 static int oss_run_out (HWVoiceOut *hw)
344 OSSVoiceOut *oss = (OSSVoiceOut *) hw;
355 live = audio_pcm_hw_get_live_out (hw);
360 bufsize = hw->samples << hw->info.shift;
373 if (abs (hw->samples - live) < 64) {
386 decr = audio_MIN (bytes >> hw->info.shift, live);
399 "please report your OS/audio hw to malc@pulsesoft.com\n",
413 decr = audio_MIN (abinfo.bytes >> hw->info.shift, live);
422 rpos = hw->rpos;
424 int left_till_end_samples = hw->samples - rpos;
427 src = hw->mix_buf + rpos;
428 dst = advance (oss->pcm_buf, rpos << hw->info.shift);
430 hw->clip (dst, src, convert_samples);
438 written = write (oss->fd, dst, convert_samples << hw->info.shift);
444 convert_samples << hw->info.shift,
450 if (written != convert_samples << hw->info.shift) {
451 int wsamples = written >> hw->info.shift;
452 int wbytes = wsamples << hw->info.shift;
456 wbytes, written, hw->info.align + 1);
459 mixeng_sniff_and_clear (hw, src, dst, wsamples);
462 rpos = (rpos + wsamples) % hw->samples;
468 mixeng_sniff_and_clear (hw, src, dst, convert_samples);
471 rpos = (rpos + convert_samples) % hw->samples;
481 hw->rpos = rpos;
485 static void oss_fini_out (HWVoiceOut *hw)
490 OSSVoiceOut *oss = (OSSVoiceOut *) hw;
503 err = munmap (oss->pcm_buf, hw->samples << hw->info.shift);
506 oss->pcm_buf, hw->samples << hw->info.shift);
517 static int oss_init_out (HWVoiceOut *hw, audsettings_t *as)
519 OSSVoiceOut *oss = (OSSVoiceOut *) hw;
553 audio_pcm_init_info (&hw->info, &obt_as);
557 if (obt.nfrags * obt.fragsize & hw->info.align) {
559 obt.nfrags * obt.fragsize, hw->info.align + 1);
562 hw->samples = (obt.nfrags * obt.fragsize) >> hw->info.shift;
569 hw->samples << hw->info.shift,
577 hw->samples << hw->info.shift);
600 err = munmap (oss->pcm_buf, hw->samples << hw->info.shift);
603 oss->pcm_buf, hw->samples << hw->info.shift);
615 hw->samples,
616 1 << hw->info.shift
621 hw->samples,
622 1 << hw->info.shift
638 static int oss_ctl_out (HWVoiceOut *hw, int cmd, ...)
641 OSSVoiceOut *oss = (OSSVoiceOut *) hw;
654 audio_pcm_info_clear_buf (&hw->info, oss->pcm_buf, hw->samples);
677 static int oss_init_in (HWVoiceIn *hw, audsettings_t *as)
679 OSSVoiceIn *oss = (OSSVoiceIn *) hw;
712 audio_pcm_init_info (&hw->info, &obt_as);
716 if (obt.nfrags * obt.fragsize & hw->info.align) {
718 obt.nfrags * obt.fragsize, hw->info.align + 1);
721 hw->samples = (obt.nfrags * obt.fragsize) >> hw->info.shift;
722 oss->pcm_buf = audio_calloc (AUDIO_FUNC, hw->samples, 1 << hw->info.shift);
725 hw->samples, 1 << hw->info.shift);
737 static void oss_fini_in (HWVoiceIn *hw)
739 OSSVoiceIn *oss = (OSSVoiceIn *) hw;
752 static int oss_run_in (HWVoiceIn *hw)
754 OSSVoiceIn *oss = (OSSVoiceIn *) hw;
755 int hwshift = hw->info.shift;
757 int live = audio_pcm_hw_get_live_in (hw);
758 int dead = hw->samples - live;
765 bufs[0].add = hw->wpos;
774 if (hw->wpos + dead > hw->samples) {
775 bufs[0].len = (hw->samples - hw->wpos) << hwshift;
776 bufs[1].len = (dead - (hw->samples - hw->wpos)) << hwshift;
791 if (nread & hw->info.align) {
795 hw->info.align + 1);
799 hw->conv (hw->conv_buf + bufs[i].add, p, nread >> hwshift,
802 hw->conv (hw->conv_buf + bufs[i].add, p, nread >> hwshift,
827 hw->wpos = (hw->wpos + read_samples) % hw->samples;
836 static int oss_ctl_in (HWVoiceIn *hw, int cmd, ...)
838 (void) hw;