blob: 1b73e24381f03708d702177c808c82359d618cf6 [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001/*
2 * Copyright 2003-2007 Sun Microsystems, Inc. All Rights Reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Sun designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Sun in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22 * CA 95054 USA or visit www.sun.com if you need additional information or
23 * have any questions.
24 */
25
26// define this with a later version of ALSA than 0.9.0rc3
27#define ALSA_PCM_NEW_HW_PARAMS_API
28#include <alsa/asoundlib.h>
29#include "Utilities.h"
30
31#ifndef PLATFORM_API_LINUXOS_ALSA_PCMUTILS_H_INCLUDED
32#define PLATFORM_API_LINUXOS_ALSA_PCMUTILS_H_INCLUDED
33
34// if this is defined, use plughw: devices
35#define ALSA_PCM_USE_PLUGHW
36//#undef ALSA_PCM_USE_PLUGHW
37
38
39// maximum number of channels that is listed in the formats. If more, than
40// just -1 for channel count is used.
41#define MAXIMUM_LISTED_CHANNELS 32
42
43typedef struct tag_ALSA_AudioDeviceDescription {
44 int index; // in
45 int strLen; // in
46 INT32* deviceID; // out
47 int* maxSimultaneousLines; // out
48 char* name; // out
49 char* vendor; // out
50 char* description; // out
51 char* version; // out
52} ALSA_AudioDeviceDescription;
53
54
55
56int getAudioDeviceCount();
57int getAudioDeviceDescriptionByIndex(ALSA_AudioDeviceDescription* desc);
58
59// returns ALSA error code, or 0 if successful
60int openPCMfromDeviceID(int deviceID, snd_pcm_t** handle, int isSource, int hardware);
61
62// returns 1 if successful
63// enc: 0 for PCM, 1 for ULAW, 2 for ALAW (see DirectAudio.h)
64int getFormatFromAlsaFormat(snd_pcm_format_t alsaFormat,
65 int* sampleSizeInBytes, int* significantBits,
66 int* isSigned, int* isBigEndian, int* enc);
67
68int getAlsaFormatFromFormat(snd_pcm_format_t* alsaFormat,
69 int sampleSizeInBytes, int significantBits,
70 int isSigned, int isBigEndian, int enc);
71
72#endif // PLATFORM_API_LINUXOS_ALSA_PCMUTILS_H_INCLUDED