From: James Courtier-Dutton <James@superbug.demon.co.uk>
To: alsa-devel@lists.sourceforge.net
Subject: problems: flushing during snd_pcm_wait()
Date: Fri, 11 Oct 2002 01:25:19 +1000 [thread overview]
Message-ID: <3DA59BDF.7030904@superbug.demon.co.uk> (raw)
Hello
I have an application that has many different threads.
The sound card's PCM buffer is full during playback, and one thread is
currently in snd_pcm_wait() waiting for enough space to appear in the
buffer before doing the next snd_pcm_write().
A different thread wants to flush the buffer. There are two types of
flush: -
1) Immeadiately empty the buffer.
2) Stop accepting snd_pcm_write() commands until the current buffer has
drained.
Can someone please tell me which API calls I should make to get the
buffer to flush properly.
I am currently doing things like: -
int flush() {
<snip...>
if ((result=snd_pcm_reset(this->audio_fd)) < 0) {
printf("audio_alsa_out: Reset call failed err=%d\n",result);
}
if ((result=snd_pcm_drain(this->audio_fd)) < 0) {
printf("audio_alsa_out: Drain call failed err=%d\n",result);
}
if ((result=snd_pcm_prepare(this->audio_fd)) < 0) {
printf("audio_alsa_out: Prepare call failed err=%d\n",result);
}
}
But this is causing all sorts of problems, one of which is that the
application hangs, and has to be killed with -9, and the audio hardware
ring buffer is left playing a repeated sound even with: -
/proc/asound/card0/pcm0p/sub0# cat status
closed
Cheers
James
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
next reply other threads:[~2002-10-10 15:25 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-10-10 15:25 James Courtier-Dutton [this message]
2002-10-11 11:52 ` problems: flushing during snd_pcm_wait() Takashi Iwai
2002-10-11 12:50 ` James Courtier-Dutton
2002-10-11 13:00 ` Jaroslav Kysela
2002-10-11 13:23 ` James Courtier-Dutton
2002-10-11 14:22 ` Jaroslav Kysela
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3DA59BDF.7030904@superbug.demon.co.uk \
--to=james@superbug.demon.co.uk \
--cc=alsa-devel@lists.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.