On Fri, 4 Aug 2006, Eric Peters wrote: > Dear all, > > I have a PCM device which is playing some PCM samples. The soundbuffer > is pretty full. And now I want to pause the buffer immediately (as > fast as possible) and sometime later I want to resume at exactly this > sample I paused. > > Now I found the two functions snd_pcm_pause and snd_pcm_resume. But > unfortunately these functions aren't supported by all hardware. Right. > Or do you have an idea how to implement such a feature? I also found > the two functions snd_pcm_drain and snd_pcm_drop. But when I use this > functions the sound buffer will be empty if I resume. And with > snd_pcm_drain there will be a delay between I pause the playback and > there are no more samples out of my spaekers. If hw pause/resume is supported - check snd_pcm_hw_params_can_pause(), then you may use it, otherwise you should implement the pause in this way: on pause: 1) remember the current position in playback buffer (using snd_pcm_delay()) 2) use snd_pcm_drop() to stop the stream immediately on resume: 3) fill ring buffer from the position saved in 1) 4) restart playback In other words, if hardware does not support pause, application must "emulate" this behaviour. Jaroslav ----- Jaroslav Kysela <perex@xxxxxxx> Linux Kernel Sound Maintainer ALSA Project, SUSE Labs ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys -- and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.sourceforge.net/lists/listinfo/alsa-devel