diff options
author | Taylor Holberton <taylorcholberton@gmail.com> | 2016-12-24 20:33:33 -0800 |
---|---|---|
committer | Taylor Holberton <taylorcholberton@gmail.com> | 2016-12-24 20:33:33 -0800 |
commit | c6f908ee871c995c193c2dcbd8ec9bfd69045689 (patch) | |
tree | 66ea691ece1c1f072bd86f3789daa13662389395 /src | |
parent | bd6ed24d37fab13e782b8cd17152e4e796480914 (diff) |
Added pcm_open_by_name()
This function parses a PCM name similar to the ALSA library.
This is done so that the differences between alsa-lib and tinyalsa
are a little more transparent to the user.
Diffstat (limited to 'src')
-rw-r--r-- | src/pcm.c | 30 |
1 files changed, 30 insertions, 0 deletions
@@ -859,6 +859,36 @@ int pcm_close(struct pcm *pcm) return 0; } +/** Opens a PCM by it's name. + * @param name The name of the PCM. + * The name is given in the format: <i>hw</i>:<b>card</b>,<b>device</b> + * @param flags Specify characteristics and functionality about the pcm. + * May be a bitwise AND of the following: + * - @ref PCM_IN + * - @ref PCM_OUT + * - @ref PCM_MMAP + * - @ref PCM_NOIRQ + * - @ref PCM_MONOTONIC + * @param config The hardware and software parameters to open the PCM with. + * @returns On success, returns an initialized pcm, ready for reading or writing. + * On error, returns NULL. + * @ingroup libtinyalsa-pcm + */ +struct pcm *pcm_open_by_name(const char *name, + unsigned int flags, + const struct pcm_config *config) +{ + unsigned int card, device; + if ((name[0] != 'h') + || (name[1] != 'w') + || (name[2] != ':')) { + return NULL; + } else if (sscanf(&name[3], "%u,%u", &card, &device) != 2) { + return NULL; + } + return pcm_open(card, device, flags, config); +} + /** Opens a PCM. * @param card The card that the pcm belongs to. * The default card is zero. |