Re: [Alsa-devel] problems: flushing during snd_pcm_wait()

2002-10-11 Thread Jaroslav Kysela

On Fri, 11 Oct 2002, James Courtier-Dutton wrote:

 Thankyou, I will use snd_pcm_drop(), but as a side note, what actually 
 does snd_pcm_reset() do.
 Just resetting delay to 0 does not make much sense to me.
 
 
 
 It drops all samples in the ring buffer (thus reseting delay to 0). Note 
 that everybody are welcome to improve the current documentation 
 (preferably with patches).
 
  Jaroslav
   
 
 Ok, so snd_pcm_drop drops all samples in the buffer, so I would assume 
 this sets the delay to 0.
 so snd_pcm_reset drops all sample in the buffer, so as you say is sets 
 delay to 0.
 So my question is What is the difference between the 2 functions?

reset() doesn't stop the stream. It's mainly useable, if you have streams 
linked together with hardware or if an application wants to act very 
realtime and has xrun detection disabled.

Jaroslav

-
Jaroslav Kysela [EMAIL PROTECTED]
Linux Kernel Sound Maintainer
ALSA Project  http://www.alsa-project.org
SuSE Linuxhttp://www.suse.com



---
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
___
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel



Re: [Alsa-devel] problems: flushing during snd_pcm_wait()

2002-10-11 Thread James Courtier-Dutton



 

Thankyou, I will use snd_pcm_drop(), but as a side note, what actually 
does snd_pcm_reset() do.
Just resetting delay to 0 does not make much sense to me.
   


It drops all samples in the ring buffer (thus reseting delay to 0). Note 
that everybody are welcome to improve the current documentation 
(preferably with patches).

		Jaroslav
 

Ok, so snd_pcm_drop drops all samples in the buffer, so I would assume 
this sets the delay to 0.
so snd_pcm_reset drops all sample in the buffer, so as you say is sets 
delay to 0.
So my question is What is the difference between the 2 functions?

Cheers
James





---
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
___
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel


[Alsa-devel] problems: flushing during snd_pcm_wait()

2002-10-10 Thread James Courtier-Dutton

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
___
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel