1/* 2 * Copyright (c) 2003, 2012, Oracle and/or its affiliates. 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. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26// define this with a later version of ALSA than 0.9.0rc3 27// (starting from 1.0.0 it became default behaviour) 28#define ALSA_PCM_NEW_HW_PARAMS_API 29#include <alsa/asoundlib.h> 30#include "Utilities.h" 31 32#ifndef PLATFORM_API_BSDOS_ALSA_PCMUTILS_H_INCLUDED 33#define PLATFORM_API_BSDOS_ALSA_PCMUTILS_H_INCLUDED 34 35// if this is defined, use plughw: devices 36#define ALSA_PCM_USE_PLUGHW 37//#undef ALSA_PCM_USE_PLUGHW 38 39 40// maximum number of channels that is listed in the formats. If more, than 41// just -1 for channel count is used. 42#define MAXIMUM_LISTED_CHANNELS 32 43 44typedef struct tag_ALSA_AudioDeviceDescription { 45 int index; // in 46 int strLen; // in 47 INT32* deviceID; // out 48 int* maxSimultaneousLines; // out 49 char* name; // out 50 char* vendor; // out 51 char* description; // out 52 char* version; // out 53} ALSA_AudioDeviceDescription; 54 55 56 57int getAudioDeviceCount(); 58int getAudioDeviceDescriptionByIndex(ALSA_AudioDeviceDescription* desc); 59 60// returns ALSA error code, or 0 if successful 61int openPCMfromDeviceID(int deviceID, snd_pcm_t** handle, int isSource, int hardware); 62 63// returns 1 if successful 64// enc: 0 for PCM, 1 for ULAW, 2 for ALAW (see DirectAudio.h) 65int getFormatFromAlsaFormat(snd_pcm_format_t alsaFormat, 66 int* sampleSizeInBytes, int* significantBits, 67 int* isSigned, int* isBigEndian, int* enc); 68 69int getAlsaFormatFromFormat(snd_pcm_format_t* alsaFormat, 70 int sampleSizeInBytes, int significantBits, 71 int isSigned, int isBigEndian, int enc); 72 73#endif // PLATFORM_API_BSDOS_ALSA_PCMUTILS_H_INCLUDED 74