1 |
#ifndef PA_LINUX_ALSA_H |
2 |
#define PA_LINUX_ALSA_H |
3 |
|
4 |
/* |
5 |
* $Id: pa_linux_alsa.h 1414 2009-05-24 17:02:10Z aknudsen $ |
6 |
* PortAudio Portable Real-Time Audio Library |
7 |
* ALSA-specific extensions |
8 |
* |
9 |
* Copyright (c) 1999-2000 Ross Bencina and Phil Burk |
10 |
* |
11 |
* Permission is hereby granted, free of charge, to any person obtaining |
12 |
* a copy of this software and associated documentation files |
13 |
* (the "Software"), to deal in the Software without restriction, |
14 |
* including without limitation the rights to use, copy, modify, merge, |
15 |
* publish, distribute, sublicense, and/or sell copies of the Software, |
16 |
* and to permit persons to whom the Software is furnished to do so, |
17 |
* subject to the following conditions: |
18 |
* |
19 |
* The above copyright notice and this permission notice shall be |
20 |
* included in all copies or substantial portions of the Software. |
21 |
* |
22 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
23 |
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
24 |
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. |
25 |
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR |
26 |
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF |
27 |
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
28 |
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
29 |
*/ |
30 |
|
31 |
/* |
32 |
* The text above constitutes the entire PortAudio license; however, |
33 |
* the PortAudio community also makes the following non-binding requests: |
34 |
* |
35 |
* Any person wishing to distribute modifications to the Software is |
36 |
* requested to send the modifications to the original developer so that |
37 |
* they can be incorporated into the canonical version. It is also |
38 |
* requested that these non-binding requests be included along with the |
39 |
* license above. |
40 |
*/ |
41 |
|
42 |
/** @file |
43 |
* @ingroup public_header |
44 |
* @brief ALSA-specific PortAudio API extension header file. |
45 |
*/ |
46 |
#include "portaudio.h" |
47 |
|
48 |
#ifdef __cplusplus |
49 |
extern "C" { |
50 |
#endif |
51 |
|
52 |
typedef struct PaAlsaStreamInfo |
53 |
{ |
54 |
unsigned long size; |
55 |
PaHostApiTypeId hostApiType; |
56 |
unsigned long version; |
57 |
|
58 |
const char *deviceString; |
59 |
} |
60 |
PaAlsaStreamInfo; |
61 |
|
62 |
/** Initialize host API specific structure, call this before setting relevant attributes. */ |
63 |
void PaAlsa_InitializeStreamInfo( PaAlsaStreamInfo *info ); |
64 |
|
65 |
/** Instruct whether to enable real-time priority when starting the audio thread. |
66 |
* |
67 |
* If this is turned on by the stream is started, the audio callback thread will be created |
68 |
* with the FIFO scheduling policy, which is suitable for realtime operation. |
69 |
**/ |
70 |
void PaAlsa_EnableRealtimeScheduling( PaStream *s, int enable ); |
71 |
|
72 |
#if 0 |
73 |
void PaAlsa_EnableWatchdog( PaStream *s, int enable ); |
74 |
#endif |
75 |
|
76 |
/** Get the ALSA-lib card index of this stream's input device. */ |
77 |
PaError PaAlsa_GetStreamInputCard( PaStream *s, int *card ); |
78 |
|
79 |
/** Get the ALSA-lib card index of this stream's output device. */ |
80 |
PaError PaAlsa_GetStreamOutputCard( PaStream *s, int *card ); |
81 |
|
82 |
/** Set the number of periods (buffer fragments) to configure devices with. |
83 |
* |
84 |
* By default the number of periods is 4, this is the lowest number of periods that works well on |
85 |
* the author's soundcard. |
86 |
* @param numPeriods The number of periods. |
87 |
*/ |
88 |
PaError PaAlsa_SetNumPeriods( int numPeriods ); |
89 |
|
90 |
/** Set the maximum number of times to retry opening busy device (sleeping for a |
91 |
* short interval inbetween). |
92 |
*/ |
93 |
PaError PaAlsa_SetRetriesBusy( int retries ); |
94 |
|
95 |
#ifdef __cplusplus |
96 |
} |
97 |
#endif |
98 |
|
99 |
#endif |