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 );

Since:

BlackBerry 10.0.0

Arguments:

handle
The handle for the PCM device, which you must have opened by calling snd_pcm_open_name(), snd_pcm_open(), or snd_pcm_open_preferred().
channel
The channel; SND_PCM_CHANNEL_CAPTURE or SND_PCM_CHANNEL_PLAYBACK.

Library:

libasound.so

Use the -l asound option to qcc to link against this library.

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
The state of handle is invalid, an invalid channel was provided as input,or an invalid state change occurred. You can call snd_pcm_plugin_status() to check if the state change was invalid.
-EINTR
The operation was interrupted because of a system signal (such as a timer) or an error was returned asynchronously

Classification:

QNX Neutrino

Safety:  
Cancellation point No
Interrupt handler No
Signal handler Yes
Thread Read the Caveats

Caveats:

This function is not thread safe if handle (snd_pcm_t) is used across multiple threads.

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.

Last modified: 2014-06-24



Got questions about leaving a comment? Get answers from our Disqus FAQ.

comments powered by Disqus