PCM channel status structure
typedef struct snd_pcm_channel_status
{
    int32_t         channel;
    int32_t         mode;
    int32_t         status;
    uint32_t        scount;
    struct timeval  stime;
    uint64_t        ust_stime;
    int32_t         frag;
    int32_t         count;
    int32_t         free;
    int32_t         underrun;
    int32_t         overrun;
    int32_t         overrange;
    uint32_t        subbuffered;
    uint8_t         reserved[124];  /* must be filled with zeroes */
}       snd_pcm_channel_status_t;
The snd_pcm_channel_status_t structure describes the status
of a PCM channel.
The members include:
- channel
- The channel direction; one of SND_PCM_CHANNEL_PLAYBACK or
  SND_PCM_CHANNEL_CAPTURE.
  
  
- mode
- The transfer mode: SND_PCM_MODE_BLOCK.
  (SND_PCM_MODE_STREAM is deprecated.)
  
- status
- The channel status.
  Valid values are:
  
- SND_PCM_STATUS_NOTREADY — the driver isn't prepared
    for any operation. 
    After a successful call to
    snd_pcm_channel_params(),
    the state is changed to SND_PCM_STATUS_READY.
    
    
    
  
- SND_PCM_STATUS_READY — the driver is ready for
    operation. 
    You can mmap() the audio buffer only in this state, but the
    samples still can't be transferred.
    After a successful call to
    snd_pcm_channel_prepare(),
    snd_pcm_capture_prepare(),
    snd_pcm_playback_prepare(),
    or
    snd_pcm_plugin_prepare(),
    the state is changed to SND_PCM_STATUS_PREPARED.
    
    
    
  
- SND_PCM_STATUS_PREPARED — the driver is prepared
    for operation. 
    The samples may be transferred in this state.
    
    
    
  
- SND_PCM_STATUS_RUNNING — the driver is actively
    transferring data through the hardware.
    The samples may be transferred in this state.
    
    
    
  
- SND_PCM_STATUS_UNDERRUN — the playback channel
    is in an underrun state. 
    The driver completely drained the buffers before new data was ready to
    be played.
    You must reprepare the channel before continuing, by calling
    snd_pcm_channel_prepare(),
    snd_pcm_playback_prepare(),
    or
    snd_pcm_plugin_prepare().
    See the
    wave.c example
    in the appendix.
    
    
    
    
    
  
- SND_PCM_STATUS_OVERRUN — the capture channel is
    in an overrun state. 
    The driver has processed the incoming data faster than it's coming in;
    the channel is stalled.
    You must reprepare the channel before continuing, by calling
    snd_pcm_channel_prepare(),
    snd_pcm_capture_prepare(),
    or
    snd_pcm_plugin_prepare().
    See the
    waverec.c example
    in the appendix.
    
    
    
    
    
  
- SND_PCM_STATUS_PAUSED — the playback is paused
    (not supported by QSA).
    
    
    
  
 
- scount
- The number of bytes processed since the playback/capture last started.
  This value is clipped when it reaches the SND_PCM_BOUNDARY
  value, and is reset when you prepare the channel.
  
- stime
- The playback/capture start time, in the format used by
  gettimeofday()
  (see the QNX Neutrino Library Reference).
   
  This member is valid only when the time flags is active in the
  snd_pcm_channel_params_t,
  structure.
 
- ust_stime
- The playback/capture start time, in UST format. 
  This member is valid only when the ust_time flags is active in the
  snd_pcm_channel_params_t,
  structure.
- frag
- The current fragment number (available only in the block mode).
- count
- The number of bytes in the queue/buffer; see the note below.
- free
- The number of bytes in the queue that are still free; see the note below.
- underrun
- The number of playback underruns since the last status.
- overrun
- The number of capture overruns since the last status.
- overrange
- The number of ADC capture overrange detections since the last status.
- subbuffered
- The number of bytes subbuffered in the plugin interface.
QNX Neutrino