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 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.