Finish processing all pending data in a PCM channel's queue and stop the channel
#include <sys/asoundlib.h> int snd_pcm_plugin_flush( snd_pcm_t *handle, int channel );
The snd_pcm_plugin_flush() function flushes all unprocessed data in the driver queue:
If the channel doesn't start playing (not enough data has been written to start playback), then this call silences the remainder of the buffer to satisfy the playback start requirements. Once the playback requirements are satisfied, playback starts and allows the data to be played out. Once the buffer empties, this call returns successfully.
If this call completes successfully, the channel is left in the SND_PCM_STATUS_READY state.
A positive number on success, or a negative value on error.
QNX Neutrino
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | No |
Signal handler | Yes |
Thread | Read the 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.