Lines Matching refs:hw

27 #define HWBUF hw->mix_buf
36 #define HWBUF hw->conv_buf
74 static void glue (audio_pcm_hw_free_resources_, TYPE) (HW *hw)
83 static int glue (audio_pcm_hw_alloc_resources_, TYPE) (HW *hw)
85 HWBUF = audio_calloc (AUDIO_FUNC, hw->samples, sizeof (st_sample_t));
88 hw->samples);
114 samples = ((int64_t) sw->hw->samples << 32) / sw->ratio;
125 sw->rate = st_rate_start (sw->info.freq, sw->hw->info.freq);
127 sw->rate = st_rate_start (sw->hw->info.freq, sw->info.freq);
141 HW *hw,
149 sw->hw = hw;
152 sw->ratio = ((int64_t) sw->hw->info.freq << 32) / sw->info.freq;
156 sw->ratio = ((int64_t) sw->info.freq << 32) / sw->hw->info.freq;
187 static void glue (audio_pcm_hw_add_sw_, TYPE) (HW *hw, SW *sw)
189 LIST_INSERT_HEAD (&hw->sw_head, sw, entries);
199 HW *hw = *hwp;
201 if (!hw->sw_head.lh_first) {
203 audio_detach_capture (hw);
205 LIST_REMOVE (hw, entries);
207 glue (audio_pcm_hw_free_resources_ ,TYPE) (hw);
208 glue (hw->pcm_ops->fini_, TYPE) (hw);
209 qemu_free (hw);
214 static HW *glue (audio_pcm_hw_find_any_, TYPE) (AudioState *s, HW *hw)
216 return hw ? hw->entries.le_next : s->glue (hw_head_, TYPE).lh_first;
219 static HW *glue (audio_pcm_hw_find_any_enabled_, TYPE) (AudioState *s, HW *hw)
221 while ((hw = glue (audio_pcm_hw_find_any_, TYPE) (s, hw))) {
222 if (hw->enabled) {
223 return hw;
231 HW *hw,
235 while ((hw = glue (audio_pcm_hw_find_any_, TYPE) (s, hw))) {
236 if (audio_pcm_info_eq (&hw->info, as)) {
237 return hw;
245 HW *hw;
262 hw = audio_calloc (AUDIO_FUNC, 1, glue (drv->voice_size_, TYPE));
263 if (!hw) {
269 hw->pcm_ops = drv->pcm_ops;
270 LIST_INIT (&hw->sw_head);
273 LIST_INIT (&hw->cap_head);
275 if (glue (hw->pcm_ops->init_, TYPE) (hw, as)) {
279 if (audio_bug (AUDIO_FUNC, hw->samples <= 0)) {
280 dolog ("hw->samples=%d\n", hw->samples);
285 hw->clip = mixeng_clip
287 hw->conv = mixeng_conv
289 [hw->info.nchannels == 2]
290 [hw->info.sign]
291 [hw->info.swap_endianness]
292 [audio_bits_to_index (hw->info.bits)];
294 if (glue (audio_pcm_hw_alloc_resources_, TYPE) (hw)) {
298 LIST_INSERT_HEAD (&s->glue (hw_head_, TYPE), hw, entries);
301 audio_attach_capture (s, hw);
303 return hw;
306 glue (hw->pcm_ops->fini_, TYPE) (hw);
308 qemu_free (hw);
314 HW *hw;
317 hw = glue (audio_pcm_hw_add_new_, TYPE) (s, as);
318 if (hw) {
319 return hw;
323 hw = glue (audio_pcm_hw_find_specific_, TYPE) (s, NULL, as);
324 if (hw) {
325 return hw;
328 hw = glue (audio_pcm_hw_add_new_, TYPE) (s, as);
329 if (hw) {
330 return hw;
343 HW *hw;
360 hw = glue (audio_pcm_hw_add_, TYPE) (s, &hw_as);
361 if (!hw) {
365 glue (audio_pcm_hw_add_sw_, TYPE) (hw, sw);
367 if (glue (audio_pcm_sw_init_, TYPE) (sw, hw, sw_name, as)) {
375 glue (audio_pcm_hw_gc_, TYPE) (s, &hw);
386 glue (audio_pcm_hw_gc_, TYPE) (s, &sw->hw);
476 HW *hw = sw->hw;
478 if (!hw) {
485 if (glue (audio_pcm_sw_init_, TYPE) (sw, hw, name, as)) {
518 audio_pcm_print_info ("hw", &sw->hw->info);
541 ts->old_ts = sw->hw->ts_helper;
552 cur_ts = sw->hw->ts_helper;
567 return (delta * sw->hw->info.freq) / 1000000;