Home | History | Annotate | Download | only in audio

Lines Matching defs:esd

2  * QEMU ESD audio driver
25 #include <esd.h>
29 #define AUDIO_CAP "esd"
116 ESDVoiceOut *esd = arg;
117 HWVoiceOut *hw = &esd->hw;
122 if (audio_pt_lock (&esd->pt, AUDIO_FUNC)) {
130 if (esd->done) {
134 if (esd->live > threshold) {
138 if (audio_pt_wait (&esd->pt, AUDIO_FUNC)) {
143 decr = to_mix = esd->live;
146 if (audio_pt_unlock (&esd->pt, AUDIO_FUNC)) {
155 hw->clip (esd->pcm_buf, src, chunk);
158 written = write (esd->fd, esd->pcm_buf, chunk << hw->info.shift);
184 if (audio_pt_lock (&esd->pt, AUDIO_FUNC)) {
188 esd->rpos = rpos;
189 esd->live -= decr;
190 esd->decr += decr;
194 audio_pt_unlock (&esd->pt, AUDIO_FUNC);
201 ESDVoiceOut *esd = (ESDVoiceOut *) hw;
203 if (audio_pt_lock (&esd->pt, AUDIO_FUNC)) {
207 decr = audio_MIN (live, esd->decr);
208 esd->decr -= decr;
209 esd->live = live - decr;
210 hw->rpos = esd->rpos;
211 if (esd->live > 0) {
212 audio_pt_unlock_and_signal (&esd->pt, AUDIO_FUNC);
215 audio_pt_unlock (&esd->pt, AUDIO_FUNC);
227 ESDVoiceOut *esd = (ESDVoiceOut *) hw;
260 esd->pcm_buf = audio_calloc (AUDIO_FUNC, hw->samples, 1 << hw->info.shift);
261 if (!esd->pcm_buf) {
267 esd->fd = FF(esd_play_stream) (esdfmt, as->freq, conf.dac_host, NULL);
268 if (esd->fd < 0) {
273 if (audio_pt_init (&esd->pt, qesd_thread_out, esd, AUDIO_CAP, AUDIO_FUNC)) {
280 if (close (esd->fd)) {
281 qesd_logerr (errno, "%s: close on esd socket(%d) failed\n",
282 AUDIO_FUNC, esd->fd);
284 esd->fd = -1;
287 qemu_free (esd->pcm_buf);
288 esd->pcm_buf = NULL;
295 ESDVoiceOut *esd = (ESDVoiceOut *) hw;
297 audio_pt_lock (&esd->pt, AUDIO_FUNC);
298 esd->done = 1;
299 audio_pt_unlock_and_signal (&esd->pt, AUDIO_FUNC);
300 audio_pt_join (&esd->pt, &ret, AUDIO_FUNC);
302 if (esd->fd >= 0) {
303 if (close (esd->fd)) {
304 qesd_logerr (errno, "failed to close esd socket\n");
306 esd->fd = -1;
309 audio_pt_fini (&esd->pt, AUDIO_FUNC);
311 qemu_free (esd->pcm_buf);
312 esd->pcm_buf = NULL;
325 ESDVoiceIn *esd = arg;
326 HWVoiceIn *hw = &esd->hw;
331 if (audio_pt_lock (&esd->pt, AUDIO_FUNC)) {
339 if (esd->done) {
343 if (esd->dead > threshold) {
347 if (audio_pt_wait (&esd->pt, AUDIO_FUNC)) {
352 incr = to_grab = esd->dead;
355 if (audio_pt_unlock (&esd->pt, AUDIO_FUNC)) {
362 void *buf = advance (esd->pcm_buf, wpos);
365 nread = read (esd->fd, buf, chunk << hw->info.shift);
393 if (audio_pt_lock (&esd->pt, AUDIO_FUNC)) {
397 esd->wpos = wpos;
398 esd->dead -= incr;
399 esd->incr += incr;
403 audio_pt_unlock (&esd->pt, AUDIO_FUNC);
410 ESDVoiceIn *esd = (ESDVoiceIn *) hw;
412 if (audio_pt_lock (&esd->pt, AUDIO_FUNC)) {
418 incr = audio_MIN (dead, esd->incr);
419 esd->incr -= incr;
420 esd->dead = dead - incr;
421 hw->wpos = esd->wpos;
422 if (esd->dead > 0) {
423 audio_pt_unlock_and_signal (&esd->pt, AUDIO_FUNC);
426 audio_pt_unlock (&esd->pt, AUDIO_FUNC);
438 ESDVoiceIn *esd = (ESDVoiceIn *) hw;
468 esd->pcm_buf = audio_calloc (AUDIO_FUNC, hw->samples, 1 << hw->info.shift);
469 if (!esd->pcm_buf) {
475 esd->fd = FF(esd_record_stream) (esdfmt, as->freq, conf.adc_host, NULL);
476 if (esd->fd < 0) {
481 if (audio_pt_init (&esd->pt, qesd_thread_in, esd, AUDIO_CAP, AUDIO_FUNC)) {
488 if (close (esd->fd)) {
489 qesd_logerr (errno, "%s: close on esd socket(%d) failed\n",
490 AUDIO_FUNC, esd->fd);
492 esd->fd = -1;
495 qemu_free (esd->pcm_buf);
496 esd->pcm_buf = NULL;
503 ESDVoiceIn *esd = (ESDVoiceIn *) hw;
505 audio_pt_lock (&esd->pt, AUDIO_FUNC);
506 esd->done = 1;
507 audio_pt_unlock_and_signal (&esd->pt, AUDIO_FUNC);
508 audio_pt_join (&esd->pt, &ret, AUDIO_FUNC);
510 if (esd->fd >= 0) {
511 if (close (esd->fd)) {
512 qesd_logerr (errno, "failed to close esd socket\n");
514 esd->fd = -1;
517 audio_pt_fini (&esd->pt, AUDIO_FUNC);
519 qemu_free (esd->pcm_buf);
520 esd->pcm_buf = NULL;
631 .name = "esd",