Flush all pending data in a PCM channel's queue and stop the channel
Synopsis:
#include <sys/asoundlib.h>
int snd_pcm_channel_flush( snd_pcm_t *handle,
int channel );
Library:
libasound.so
Use the -l asound option with
qcc
to link against this library.
Description:
The snd_pcm_channel_flush() function
flushes all unprocessed data in the driver queue by calling
snd_pcm_capture_flush()
or
snd_pcm_playback_flush(),
depending on the value of channel. These are the considerations:
- If the channel is processing playback data, the call
blocks until all data in the driver queue is played out the channel.
- If the channel is processing capture data, any unread data
in the driver queue is discarded.
If you use this call to process playback data, there are two considerations:
- Since this call is a blocking call, if the channel is in the
SND_PCM_STATUS_SUSPENDED state, an error occurs if you call
this function.
- If this function is called while in the
SND_PCM_STATUS_PAUSED state and during playback data processing,
playback is resumed, the channel goes into the SND_PCM_STATUS_RUNNING
state immediately, and then ends in the SND_PCM_STATUS_READY state.
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.
Returns:
EOK on success, a negative errno upon failure. The
errno values are available in the errno.h
file.
Errors:
Additional information for common error values:
- -EAGAIN
- The state was SND_PCM_STATUS_SUSPENDED while trying to call this
function. This error is also returned if the state was
SND_PCM_STATUS_PAUSED, but resuming the playback failed.
-
-EBADFD
- The PCM device state isn't Ready.
-
-EINTR
- The operation was interrupted because of a system signal (such
as a timer) or an error was returned asynchronously.
-
-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_channel_status() to check if the state
change was invalid.
-
-EIO
- An invalid channel was specified, or the data wasn't all
flushed.
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.