This chapter includes:
The Audio Developer's Guide is intended for developers who wish
to write audio applications using the QNX Sound Architecture (QSA) drivers
and library.
This table may help you find what you need in this guide:
 |
You should have already installed QNX Neutrino and become familiar
with its architecture.
For a detailed overview, see the
System Architecture
guide. |
The key components of the QNX Audio driver architecture include:
- io-audio
- Audio system manager.
- deva-ctrl-*.so drivers
- Audio drivers.
For example, the audio driver for the Ensoniq Audio PCI cards is
deva-ctrl-audiopci.so.
For more information, see the entries for the
deva-*
audio drivers in the QNX Neutrino Utilities Reference.
- libasound.so
- Programmer interface library.
- <asound.h>, <asoundlib.h>
- Header files in /usr/include/sys/.
Throughout this manual, we use certain typographical conventions to
distinguish technical terms. In general, the conventions we use
conform to those found in IEEE POSIX publications. The following table
summarizes our conventions:
| Reference |
Example |
| Code examples |
if( stream == NULL ) |
| Command options |
-lR |
| Commands |
make |
| Environment variables |
PATH |
| File and pathnames |
/dev/null |
| Function names |
exit() |
| Keyboard chords |
Ctrl-Alt-Delete |
| Keyboard input |
something you type |
| Keyboard keys |
Enter |
| Program output |
login: |
| Programming constants |
NULL |
| Programming data types |
unsigned short |
| Programming literals |
0xFF, "message string" |
| Variable names |
stdin |
| User-interface components
|
Cancel |
We use an arrow (→) in directions for accessing menu
items, like this:
You'll find the Other... menu item under
.
We use notes, cautions, and warnings to highlight important
messages:
 |
Notes point out something important or useful. |
 |
Cautions tell you about commands or procedures that may have
unwanted or undesirable side effects. |
 |
Warnings tell you about commands or procedures that could be
dangerous to your files, your hardware, or even yourself. |
In our documentation, we use a forward slash
(/) as a delimiter in all pathnames,
including those pointing to Windows files.
We also generally follow POSIX/UNIX filesystem conventions.
To obtain technical support for any QNX product, visit the
Support area
on our website (www.qnx.com).
You'll find a wide range of support options, including community forums.
This section summarizes the changes in the following releases:
- snd_pcm_capture_go()
- Start a PCM capture channel running
- snd_pcm_capture_pause()
- Pause a channel that's capturing
- snd_pcm_capture_resume()
- Resume a channel that's capturing
- snd_pcm_channel_go()
- Start a PCM channel running
- snd_pcm_channel_pause()
- Pause a channel
- snd_pcm_channel_resume()
- Resume a channel
- snd_pcm_find()
- We've corrected the values of the mode argument.
- snd_pcm_open()
- SND_PCM_OPEN_DUPLEX hasn't been implemented.
- snd_pcm_open_preferred()
- We've described the format of the preferences file.
- snd_pcm_playback_drain()
- This function actually returns -EINVAL if the PCM device
state isn't ready.
- snd_pcm_playback_go()
- Start a PCM playback channel running
- snd_pcm_playback_pause()
- Pause a channel that's playing back
- snd_pcm_playback_resume()
- Resume a channel that's playing back
- snd_pcm_plugin_playback_drain()
- This function actually returns -EINVAL if the PCM device
state isn't ready.
- snd_pcm_plugin_set_src_method()
- Set the system's source filter method (plugin-aware)
- Voice conversion
- The libasound library now supports devices that have more
than two channels, and it provides a mechanism that lets you
configure how the voice converter plugin replicates or reduces the
voices or channels.
For more information, see
“Controlling voice conversion”
in the Playing and Capturing Audio Data chapter.
- snd_pcm_channel_params_t
- This structure now includes a sw_mixer_subchn_name member
that you can use to assign a name to the software mixer subchannel.
- snd_pcm_plugin_get_voice_conversion()
- Get the current voice conversion structure for a channel
- snd_pcm_plugin_read(),
snd_pcm_plugin_write(),
snd_pcm_read()
- These functions indicate an error of EIO if the
channel isn't in the prepared or running state.
- snd_pcm_plugin_set_voice_conversion()
- Set the current voice conversion structure for a channel
- snd_pcm_voice_conversion_t
- Data structure that controls voice conversion
- wave.c,
waverec.c,
mix_ctl.c
- We've updated these examples.
- snd_pcm_plugin_update_src()
- Get the size of the next fragment to write
- snd_pcm_plugin_src_max_frag()
- Get the maximum possible fragment size
- snd_pcm_plugin_set_src_mode()
- Set the system's source mode
- snd_mixer_open_name()
- Create a connection and handle to a mixer device specified by name
- snd_pcm_open_name()
- Create a handle and open a connection to an audio interface specified by name
- snd_ctl_mixer_switch_list()
- Get the number and names of control switches for the mixer
- snd_ctl_mixer_switch_read()
- Get a mixer switch setting
- snd_ctl_mixer_switch_write()
- Adjust a mixer switch setting
- snd_switch_t
- Information about a mixer's switch
- mix_ctl.c
- A sample application that captures the groups and switches in the mixer
The QNX Sound Architecture has evolved away from ALSA.
You should reread this entire guide.
- snd_pcm_channel_info()
- Removed the SND_PCM_CHNINFO_BATCH flag because it was deprecated in the source code.
Copyright
© 2000–2018, QNX Software Systems Limited, a subsidiary of BlackBerry Limited. All rights reserved.