for connected embedded systems
![]() |
![]() |
![]() |
![]() |
snd_pcm_plugin_flush()
Finish processing all pending data in a PCM channel's queue and stop the channel
Synopsis:
#include <sys/asoundlib.h>
int snd_pcm_plugin_flush( snd_pcm_t *handle,
int channel );
Arguments:
- handle
- The handle for the PCM device, which you must have opened by calling snd_pcm_open() or snd_pcm_open_preferred().
- channel
- The channel; SND_PCM_CHANNEL_CAPTURE or SND_PCM_CHANNEL_PLAYBACK.
Library:
libasound.so
Description:
The snd_pcm_plugin_flush() function flushes all unprocessed data in the driver queue:
- If the plugin is processing playback data, the call blocks until all data in the driver queue is played out the channel.
- If the plugin is processing capture data, any unread data in the driver queue is discarded.
If the operation is successful (zero is returned), the channel's state is changed to SND_PCM_STATUS_READY.
Returns:
A positive number on success, or a negative value on error.
Errors:
- -EINVAL
- Invalid handle.
Examples:
See the wave.c example in the appendix.
Classification:
QNX Neutrino
| Safety: | |
|---|---|
| Cancellation point | No |
| Interrupt handler | No |
| Signal handler | Yes |
| Thread | Yes |
Caveats:
Because the plugin interface may be subbuffering the written data until a complete driver block can be assembled, the flush call may have to inject up to (blocksize-1) samples into the channel so that the last block can be sent to the driver for playing. For this reason, the flush call may return a positive value indicating that this silence had to be inserted.
This function is the plugin-aware version of snd_pcm_channel_flush(). It functions exactly the same way, with the above caveat. However, make sure that you don't mix and match plugin- and nonplugin-aware functions in your application, or you may get undefined behavior and misleading results.
See also:
snd_pcm_capture_flush(), snd_pcm_channel_flush(), snd_pcm_playback_flush(), snd_pcm_plugin_playback_drain()
![]() |
![]() |
![]() |
![]() |

![[Previous]](../prev.gif)
![[Contents]](../contents.gif)
![[Index]](../keyword_index.gif)
![[Next]](../next.gif)