Disable PCM plugins


#include <sys/asoundlib.h>

unsigned int snd_pcm_plugin_set_disable( 
                            snd_pcm_t *pcm, 
                            unsigned int mask );


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().
Currently, only the following mask bits are supported:
  • PLUGIN_DISABLE_MMAP — disable the mmap plugins.
    Note: If mmap plugins are used, some of the members of the snd_pcm_channel_status_t structure aren't used.
  • PLUGIN_DISABLE_BUFFER_PARTIAL_BLOCKS — prevent the read and write routines from using partial blocks of data.

    The plugin-aware versions of the PCM read and write calls don't require that you work with multiples of fragment-size blocks (the nonplugin-aware versions do). This is because one of the plugins in the lib sub-buffers the data for you. You can disable this plugin by setting the PLUGIN_DISABLE_BUFFER_PARTIAL_BLOCKS bit with this function, in which case the plugin-aware versions also fail on reads and writes that aren't multiples of the fragment size.

    Either way, interleaved stereo data has to be aligned by the sample size times the number of channels (i.e. each write must have the same number of samples for the left and right channels).

  • PLUGIN_CONVERSION — disable the automatic conversion of audio to match hardware capabilities (for example, voice conversion, rate conversion, type conversion, etc.). This conversion impacts the functions snd_pcm_channel_params(), snd_pcm_channel_setup(), and snd_pcm_channel_status(). These now behave as snd_pcm_plugin_params(), snd_pcm_plugin_setup(), and snd_pcm_plugin_status(), unless you've disabled the conversion by calling:
        snd_pcm_plugin_set_disable(handle, PLUGIN_CONVERSION);


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


The snd_pcm_plugin_set_disable() function is used to disable various plugins that would ordinarily be used in the plugin chain.


The value of the plugin mask before this change was made.


See the wave.c example in the appendix.


QNX Neutrino

Cancellation point No
Interrupt handler No
Signal handler Yes
Thread Yes


You need to set the plugin disable mask before calling snd_pcm_plugin_params() for it to take effect.