Lines Matching refs:sw
93 static void glue (audio_pcm_sw_free_resources_, TYPE) (SW *sw) in glue()
95 if (sw->buf) { in glue()
96 qemu_free (sw->buf); in glue()
99 if (sw->rate) { in glue()
100 st_rate_stop (sw->rate); in glue()
103 sw->buf = NULL; in glue()
104 sw->rate = NULL; in glue()
107 static int glue (audio_pcm_sw_alloc_resources_, TYPE) (SW *sw) in glue()
112 samples = sw->hw->samples; in glue()
114 samples = ((int64_t) sw->hw->samples << 32) / sw->ratio; in glue()
117 sw->buf = audio_calloc (AUDIO_FUNC, samples, sizeof (struct st_sample)); in glue()
118 if (!sw->buf) { in glue()
120 SW_NAME (sw), samples); in glue()
125 sw->rate = st_rate_start (sw->info.freq, sw->hw->info.freq); in glue()
127 sw->rate = st_rate_start (sw->hw->info.freq, sw->info.freq); in glue()
129 if (!sw->rate) { in glue()
130 qemu_free (sw->buf); in glue()
131 sw->buf = NULL; in glue()
138 SW *sw, in glue()
146 audio_pcm_init_info (&sw->info, as); in glue()
147 sw->hw = hw; in glue()
148 sw->active = 0; in glue()
150 sw->ratio = ((int64_t) sw->hw->info.freq << 32) / sw->info.freq; in glue()
151 sw->total_hw_samples_mixed = 0; in glue()
152 sw->empty = 1; in glue()
154 sw->ratio = ((int64_t) sw->info.freq << 32) / sw->hw->info.freq; in glue()
158 sw->conv = mixeng_conv in glue()
160 sw->clip = mixeng_clip in glue()
162 [sw->info.nchannels == 2] in glue()
163 [sw->info.sign] in glue()
164 [sw->info.swap_endianness] in glue()
165 [audio_bits_to_index (sw->info.bits)]; in glue()
167 sw->name = qemu_strdup (name); in glue()
168 err = glue (audio_pcm_sw_alloc_resources_, TYPE) (sw); in glue()
170 qemu_free (sw->name); in glue()
171 sw->name = NULL; in glue()
176 static void glue (audio_pcm_sw_fini_, TYPE) (SW *sw) in glue()
178 glue (audio_pcm_sw_free_resources_, TYPE) (sw); in glue()
179 if (sw->name) { in glue()
180 qemu_free (sw->name); in glue()
181 sw->name = NULL; in glue()
185 static void glue (audio_pcm_hw_add_sw_, TYPE) (HW *hw, SW *sw) in glue()
187 QLIST_INSERT_HEAD (&hw->sw_head, sw, entries); in glue()
190 static void glue (audio_pcm_hw_del_sw_, TYPE) (SW *sw) in glue()
192 QLIST_REMOVE (sw, entries); in glue()
347 SW *sw; in glue() local
358 sw = audio_calloc (AUDIO_FUNC, 1, sizeof (*sw)); in glue()
359 if (!sw) { in glue()
361 sw_name ? sw_name : "unknown", sizeof (*sw)); in glue()
370 glue (audio_pcm_hw_add_sw_, TYPE) (hw, sw); in glue()
372 if (glue (audio_pcm_sw_init_, TYPE) (sw, hw, sw_name, as)) { in glue()
376 return sw; in glue()
379 glue (audio_pcm_hw_del_sw_, TYPE) (sw); in glue()
382 qemu_free (sw); in glue()
387 static void glue (audio_close_, TYPE) (SW *sw) in glue()
389 glue (audio_pcm_sw_fini_, TYPE) (sw); in glue()
390 glue (audio_pcm_hw_del_sw_, TYPE) (sw); in glue()
391 glue (audio_pcm_hw_gc_, TYPE) (&sw->hw); in glue()
392 qemu_free (sw); in glue()
395 void glue (AUD_close_, TYPE) (QEMUSoundCard *card, SW *sw) in glue()
397 if (sw) { in glue()
403 glue (audio_close_, TYPE) (sw); in glue()
409 SW *sw, in glue()
441 if (sw && audio_pcm_info_eq (&sw->info, as)) { in glue()
442 return sw; in glue()
446 if (conf.plive && sw && (!sw->active && !sw->empty)) { in glue()
447 live = sw->total_hw_samples_mixed; in glue()
450 dolog ("Replacing voice %s with %d live samples\n", SW_NAME (sw), live); in glue()
452 SW_NAME (sw), sw->info.freq, sw->info.bits, sw->info.nchannels); in glue()
461 old_sw = sw; in glue()
463 sw = NULL; in glue()
468 if (!glue (conf.fixed_, TYPE).enabled && sw) { in glue()
469 glue (AUD_close_, TYPE) (card, sw); in glue()
470 sw = NULL; in glue()
473 if (sw) { in glue()
474 HW *hw = sw->hw; in glue()
478 SW_NAME (sw)); in glue()
482 glue (audio_pcm_sw_fini_, TYPE) (sw); in glue()
483 if (glue (audio_pcm_sw_init_, TYPE) (sw, hw, name, as)) { in glue()
488 sw = glue (audio_pcm_create_voice_pair_, TYPE) (name, as); in glue()
489 if (!sw) { in glue()
495 sw->card = card; in glue()
496 sw->vol = nominal_volume; in glue()
497 sw->callback.fn = callback_fn; in glue()
498 sw->callback.opaque = callback_opaque; in glue()
500 sw->empty = 1; in glue()
508 / sw->info.bytes_per_second; in glue()
513 sw->total_hw_samples_mixed += mixed; in glue()
519 audio_pcm_print_info ("hw", &sw->hw->info); in glue()
520 audio_pcm_print_info ("sw", &sw->info); in glue()
523 return sw; in glue()
526 glue (AUD_close_, TYPE) (card, sw); in glue()
530 int glue (AUD_is_active_, TYPE) (SW *sw) in glue()
532 return sw ? sw->active : 0; in glue()
535 void glue (AUD_init_time_stamp_, TYPE) (SW *sw, QEMUAudioTimeStamp *ts) in glue()
537 if (!sw) { in glue()
541 ts->old_ts = sw->hw->ts_helper; in glue()
544 uint64_t glue (AUD_get_elapsed_usec_, TYPE) (SW *sw, QEMUAudioTimeStamp *ts) in glue()
548 if (!sw) { in glue()
552 cur_ts = sw->hw->ts_helper; in glue()
567 return muldiv64 (delta, sw->hw->info.freq, 1000000); in glue()