Lines Matching refs:hw

262 static int solaudio_init_out (HWVoiceOut *hw, audsettings_t *as)
264 solaudioVoiceOut *pSol = (solaudioVoiceOut *)hw;
298 audio_pcm_init_info(&hw->info, &ObtAudioInfo);
301 hw->samples = pSol->AudioInfo.play.buffer_size >> hw->info.shift;
305 LogRel(("solaudio: failed to alloc %d %d bytes to pPCMBuf\n", hw->samples << hw->info.shift, hw->samples));
308 LogFlow(("solaudio: init_out hw->samples=%d play.buffer_size=%d\n", hw->samples, pSol->AudioInfo.play.buffer_size));
313 static void solaudio_fini_out (HWVoiceOut *hw)
315 solaudioVoiceOut *sol = (solaudioVoiceOut *) hw;
327 static void solaudio_start_out (HWVoiceOut *hw)
330 solaudioVoiceOut *pSol = (solaudioVoiceOut *)hw;
333 audio_pcm_info_clear_buf(&hw->info, pSol->pPCMBuf, hw->samples);
406 static int solaudio_run_out (HWVoiceOut *hw)
408 solaudioVoiceOut *pSol = (solaudioVoiceOut *) hw;
415 csLive = audio_pcm_hw_get_live_out(hw);
423 csAvail = cbAvail >> hw->info.shift; /* bytes => samples */
430 csToWrite = audio_MIN(csSamples, hw->samples - hw->rpos);
431 cbToWrite = csToWrite << hw->info.shift;
432 psSrc = hw->mix_buf + hw->rpos;
433 pu8Dst = advance(pSol->pPCMBuf, hw->rpos << hw->info.shift);
435 hw->clip(pu8Dst, psSrc, csToWrite);
441 hw->rpos = (hw->rpos + csToWrite) % hw->samples;
452 static int solaudio_ctl_out (HWVoiceOut *hw, int cmd, ...)
454 solaudioVoiceOut *pSol = (solaudioVoiceOut *) hw;
460 solaudio_start_out(hw);
629 static int solaudio_init_in (HWVoiceIn *hw, audsettings_t *as)
631 solaudioVoiceIn *pSol = (solaudioVoiceIn *)hw;
668 audio_pcm_init_info(&hw->info, &ObtAudioInfo);
670 hw->samples = pSol->AudioInfo.record.buffer_size >> hw->info.shift;
674 LogRel(("solaudio: init_in: failed to alloc %d %d bytes to pPCMBuf\n", hw->samples << hw->info.shift, hw->samples));
678 LogFlow(("solaudio: init_in: hw->samples=%d record.buffer_size=%d rate=%d\n", hw->samples, pSol->AudioInfo.record.buffer_size,
684 static void solaudio_fini_in (HWVoiceIn *hw)
686 solaudioVoiceIn *sol = (solaudioVoiceIn *) hw;
697 static int solaudio_run_in (HWVoiceIn *hw)
700 solaudioVoiceIn *pSol = (solaudioVoiceIn *) hw;
706 csDead = hw->samples - audio_pcm_hw_get_live_in (hw);
726 csAvail = cbAvail >> hw->info.shift;
733 psDst = hw->conv_buf + hw->wpos;
734 csRead = audio_MIN (csSamples, hw->samples - hw->wpos);
735 hw->conv (psDst, pu8Src, csRead, &pcm_in_volume);
736 hw->wpos = (hw->wpos + csRead) % hw->samples;
738 pu8Src = (void *)((uint8_t*)pu8Src + (csRead << hw->info.shift));
742 solaudioVoiceIn *sol = (solaudioVoiceIn *) hw;
743 int hwshift = hw->info.shift;
745 int live = audio_pcm_hw_get_live_in (hw);
746 int dead = hw->samples - live;
754 bufs[0].add = hw->wpos;
763 if (hw->wpos + dead > hw->samples)
765 bufs[0].len = (hw->samples - hw->wpos) << hwshift;
766 bufs[1].len = (dead - (hw->samples - hw->wpos)) << hwshift;
784 hw->conv (hw->conv_buf + bufs[i].add, p, nread >> hwshift,
794 hw->wpos = (hw->wpos + read_samples) % hw->samples;
806 static int solaudio_ctl_in (HWVoiceIn *hw, int cmd, ...)
808 solaudioVoiceIn *pSol = (solaudioVoiceIn *) hw;