From: Eric Peters <epeters@graphics.cs.uni-sb.de>
To: alsa-devel@lists.sourceforge.net
Subject: Re: How to stop a device immediately??
Date: Fri, 04 Aug 2006 16:18:08 +0200 [thread overview]
Message-ID: <44D35720.8020107@graphics.cs.uni-sb.de> (raw)
In-Reply-To: <Pine.LNX.4.61.0608041457460.9118@tm8103-a.perex-int.cz>
Thanks Jaroslav for your fast reply,
Jaroslav Kysela wrote:
> 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.
Yes, you're right. But I'm not sure if I understand your suggestion.
In 1) I will remember the current position of the playback buffer.
If I use snd_pcm_drop in 2) I will lose all frames I already put into
the playback buffer, or not?
If so, for 3) I have to know which samples I dropped so I can rewrite
them to the playback buffer, right? Or aren't the frames which I
already have written into the sound buffer lost if I call
snd_pcm_drop?? If so, I can write new frames to the position I
remembered in 1).
Best regards,
Eric
>
> Jaroslav
>
> -----
> Jaroslav Kysela <perex@suse.cz>
> 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
next prev parent reply other threads:[~2006-08-04 14:18 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-08-04 12:51 How to stop a device immediately?? Eric Peters
2006-08-04 13:03 ` Jaroslav Kysela
2006-08-04 14:18 ` Eric Peters [this message]
2006-08-04 14:23 ` 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=44D35720.8020107@graphics.cs.uni-sb.de \
--to=epeters@graphics.cs.uni-sb.de \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox