annotate libao2/ao_alsa5.c @ 25661:293aeec83153

Replace the persistent CODECS_FLAG_SELECTED by a local "stringset" with an almost-trivial implementation. This allows making the builtin codec structs const, and it also makes clearer that this "selected" status is not used outside the init functions.
author reimar
date Sat, 12 Jan 2008 14:05:46 +0000
parents 99e20a22d5d0
children 0fdf04b07ecb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
1 /*
1046
59fc1f75e486 audio_pause/resume implementacio es kozmetikai valtoztatasok
al3x
parents: 1038
diff changeset
2 ao_alsa5 - ALSA-0.5.x output plugin for MPlayer
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
3
10366
faa09ea4ed6d removing my (non-working) email address
alex
parents: 9670
diff changeset
4 (C) Alex Beregszaszi
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
5
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
6 Thanks to Arpi for helping me ;)
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
7 */
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
8
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
9 #include <errno.h>
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
10 #include <sys/asoundlib.h>
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
11
14123
a92101a7eb49 Make include paths consistent.
diego
parents: 13383
diff changeset
12 #include "config.h"
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
13
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
14 #include "audio_out.h"
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
15 #include "audio_out_internal.h"
14245
815f03b7cee5 removing AFMT_ dependancy
alex
parents: 14123
diff changeset
16 #include "libaf/af_format.h"
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
17
14123
a92101a7eb49 Make include paths consistent.
diego
parents: 13383
diff changeset
18 #include "mp_msg.h"
a92101a7eb49 Make include paths consistent.
diego
parents: 13383
diff changeset
19 #include "help_mp.h"
5902
2639d60fe5c2 play() fix by Jimen Ching <jching@flex.com>, additional printf->mp_msg conversions (for coming i18n support)
alex
parents: 5790
diff changeset
20
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
21 static ao_info_t info =
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
22 {
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
23 "ALSA-0.5.x audio output",
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
24 "alsa5",
10366
faa09ea4ed6d removing my (non-working) email address
alex
parents: 9670
diff changeset
25 "Alex Beregszaszi",
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
26 ""
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
27 };
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
28
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
29 LIBAO_EXTERN(alsa5)
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
30
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
31 static snd_pcm_t *alsa_handler;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
32 static snd_pcm_format_t alsa_format;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
33 static int alsa_rate = SND_PCM_RATE_CONTINUOUS;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
34
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
35 /* to set/get/query special features/parameters */
9633
12b1790038b0 64bit libao2 fix by Jens Axboe <mplayer-dev@kernel.dk>
alex
parents: 8027
diff changeset
36 static int control(int cmd, void *arg)
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
37 {
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
38 return(CONTROL_UNKNOWN);
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
39 }
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
40
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
41 /*
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
42 open & setup audio device
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
43 return: 1=success 0=fail
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
44 */
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
45 static int init(int rate_hz, int channels, int format, int flags)
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
46 {
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
47 int err;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
48 int cards = -1;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
49 snd_pcm_channel_params_t params;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
50 snd_pcm_channel_setup_t setup;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
51 snd_pcm_info_t info;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
52 snd_pcm_channel_info_t chninfo;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
53
13383
c1955840883d mp_msg transition of unmaintained audio output drivers.
ivo
parents: 12145
diff changeset
54 mp_msg(MSGT_AO, MSGL_INFO, MSGTR_AO_ALSA5_InitInfo, rate_hz,
14264
cb5fbade8a5c af_fmt2str_short
alex
parents: 14255
diff changeset
55 channels, af_fmt2str_short(format));
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
56
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
57 alsa_handler = NULL;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
58
5902
2639d60fe5c2 play() fix by Jimen Ching <jching@flex.com>, additional printf->mp_msg conversions (for coming i18n support)
alex
parents: 5790
diff changeset
59 mp_msg(MSGT_AO, MSGL_V, "alsa-init: compiled for ALSA-%s (%d)\n", SND_LIB_VERSION_STR,
2639d60fe5c2 play() fix by Jimen Ching <jching@flex.com>, additional printf->mp_msg conversions (for coming i18n support)
alex
parents: 5790
diff changeset
60 SND_LIB_VERSION);
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
61
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
62 if ((cards = snd_cards()) < 0)
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
63 {
13383
c1955840883d mp_msg transition of unmaintained audio output drivers.
ivo
parents: 12145
diff changeset
64 mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_SoundCardNotFound);
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
65 return(0);
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
66 }
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
67
3095
981a9e5118ce interface to libao2 changed ao_plugin added
anders
parents: 3087
diff changeset
68 ao_data.format = format;
7659
b10df387019c updated for libaf...
arpi
parents: 5902
diff changeset
69 ao_data.channels = channels;
3095
981a9e5118ce interface to libao2 changed ao_plugin added
anders
parents: 3087
diff changeset
70 ao_data.samplerate = rate_hz;
7659
b10df387019c updated for libaf...
arpi
parents: 5902
diff changeset
71 ao_data.bps = ao_data.samplerate*ao_data.channels;
3095
981a9e5118ce interface to libao2 changed ao_plugin added
anders
parents: 3087
diff changeset
72 ao_data.outburst = OUTBURST;
981a9e5118ce interface to libao2 changed ao_plugin added
anders
parents: 3087
diff changeset
73 ao_data.buffersize = 16384;
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
74
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
75 memset(&alsa_format, 0, sizeof(alsa_format));
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
76 switch (format)
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
77 {
14245
815f03b7cee5 removing AFMT_ dependancy
alex
parents: 14123
diff changeset
78 case AF_FORMAT_S8:
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
79 alsa_format.format = SND_PCM_SFMT_S8;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
80 break;
14245
815f03b7cee5 removing AFMT_ dependancy
alex
parents: 14123
diff changeset
81 case AF_FORMAT_U8:
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
82 alsa_format.format = SND_PCM_SFMT_U8;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
83 break;
14245
815f03b7cee5 removing AFMT_ dependancy
alex
parents: 14123
diff changeset
84 case AF_FORMAT_U16_LE:
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
85 alsa_format.format = SND_PCM_SFMT_U16_LE;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
86 break;
14245
815f03b7cee5 removing AFMT_ dependancy
alex
parents: 14123
diff changeset
87 case AF_FORMAT_U16_BE:
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
88 alsa_format.format = SND_PCM_SFMT_U16_BE;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
89 break;
5790
d141f1e9cc36 AFMT_AC3 autodetect/fallback to S16
arpi
parents: 3700
diff changeset
90 #ifndef WORDS_BIGENDIAN
14245
815f03b7cee5 removing AFMT_ dependancy
alex
parents: 14123
diff changeset
91 case AF_FORMAT_AC3:
5790
d141f1e9cc36 AFMT_AC3 autodetect/fallback to S16
arpi
parents: 3700
diff changeset
92 #endif
14245
815f03b7cee5 removing AFMT_ dependancy
alex
parents: 14123
diff changeset
93 case AF_FORMAT_S16_LE:
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
94 alsa_format.format = SND_PCM_SFMT_S16_LE;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
95 break;
5790
d141f1e9cc36 AFMT_AC3 autodetect/fallback to S16
arpi
parents: 3700
diff changeset
96 #ifdef WORDS_BIGENDIAN
14245
815f03b7cee5 removing AFMT_ dependancy
alex
parents: 14123
diff changeset
97 case AF_FORMAT_AC3:
5790
d141f1e9cc36 AFMT_AC3 autodetect/fallback to S16
arpi
parents: 3700
diff changeset
98 #endif
14245
815f03b7cee5 removing AFMT_ dependancy
alex
parents: 14123
diff changeset
99 case AF_FORMAT_S16_BE:
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
100 alsa_format.format = SND_PCM_SFMT_S16_BE;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
101 break;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
102 default:
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
103 alsa_format.format = SND_PCM_SFMT_MPEG;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
104 break;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
105 }
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
106
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
107 switch(alsa_format.format)
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
108 {
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
109 case SND_PCM_SFMT_S16_LE:
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
110 case SND_PCM_SFMT_U16_LE:
3095
981a9e5118ce interface to libao2 changed ao_plugin added
anders
parents: 3087
diff changeset
111 ao_data.bps *= 2;
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
112 break;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
113 case -1:
14264
cb5fbade8a5c af_fmt2str_short
alex
parents: 14255
diff changeset
114 mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_InvalidFormatReq,af_fmt2str_short(format));
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
115 return(0);
1111
a3c3e1de6f02 little -Wall fix
al3x
parents: 1058
diff changeset
116 default:
a3c3e1de6f02 little -Wall fix
al3x
parents: 1058
diff changeset
117 break;
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
118 }
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
119
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
120 switch(rate_hz)
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
121 {
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
122 case 8000:
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
123 alsa_rate = SND_PCM_RATE_8000;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
124 break;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
125 case 11025:
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
126 alsa_rate = SND_PCM_RATE_11025;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
127 break;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
128 case 16000:
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
129 alsa_rate = SND_PCM_RATE_16000;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
130 break;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
131 case 22050:
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
132 alsa_rate = SND_PCM_RATE_22050;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
133 break;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
134 case 32000:
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
135 alsa_rate = SND_PCM_RATE_32000;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
136 break;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
137 case 44100:
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
138 alsa_rate = SND_PCM_RATE_44100;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
139 break;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
140 case 48000:
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
141 alsa_rate = SND_PCM_RATE_48000;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
142 break;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
143 case 88200:
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
144 alsa_rate = SND_PCM_RATE_88200;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
145 break;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
146 case 96000:
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
147 alsa_rate = SND_PCM_RATE_96000;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
148 break;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
149 case 176400:
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
150 alsa_rate = SND_PCM_RATE_176400;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
151 break;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
152 case 192000:
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
153 alsa_rate = SND_PCM_RATE_192000;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
154 break;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
155 default:
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
156 alsa_rate = SND_PCM_RATE_CONTINUOUS;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
157 break;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
158 }
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
159
3095
981a9e5118ce interface to libao2 changed ao_plugin added
anders
parents: 3087
diff changeset
160 alsa_format.rate = ao_data.samplerate;
9670
88e4f274df48 10l to arpi with commit r1.12, noticed by Daniel Mario Vega <dv5a@dc.uba.ar>
alex
parents: 9633
diff changeset
161 alsa_format.voices = ao_data.channels;
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
162 alsa_format.interleave = 1;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
163
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
164 if ((err = snd_pcm_open(&alsa_handler, 0, 0, SND_PCM_OPEN_PLAYBACK)) < 0)
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
165 {
13383
c1955840883d mp_msg transition of unmaintained audio output drivers.
ivo
parents: 12145
diff changeset
166 mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_PlayBackError, snd_strerror(err));
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
167 return(0);
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
168 }
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
169
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
170 if ((err = snd_pcm_info(alsa_handler, &info)) < 0)
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
171 {
13383
c1955840883d mp_msg transition of unmaintained audio output drivers.
ivo
parents: 12145
diff changeset
172 mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_PcmInfoError, snd_strerror(err));
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
173 return(0);
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
174 }
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
175
13383
c1955840883d mp_msg transition of unmaintained audio output drivers.
ivo
parents: 12145
diff changeset
176 mp_msg(MSGT_AO, MSGL_INFO, MSGTR_AO_ALSA5_SoundcardsFound,
5902
2639d60fe5c2 play() fix by Jimen Ching <jching@flex.com>, additional printf->mp_msg conversions (for coming i18n support)
alex
parents: 5790
diff changeset
177 cards, info.name);
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
178
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
179 if (info.flags & SND_PCM_INFO_PLAYBACK)
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
180 {
3700
91f801a94a59 memset is more portable than bzero ("BSD"ism)
pl
parents: 3095
diff changeset
181 memset(&chninfo, 0, sizeof(chninfo));
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
182 chninfo.channel = SND_PCM_CHANNEL_PLAYBACK;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
183 if ((err = snd_pcm_channel_info(alsa_handler, &chninfo)) < 0)
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
184 {
13383
c1955840883d mp_msg transition of unmaintained audio output drivers.
ivo
parents: 12145
diff changeset
185 mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_PcmChanInfoError, snd_strerror(err));
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
186 return(0);
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
187 }
3095
981a9e5118ce interface to libao2 changed ao_plugin added
anders
parents: 3087
diff changeset
188
3087
08947e067d80 compiling under qnx, hope it works on all qnx release :)
alex
parents: 1111
diff changeset
189 #ifndef __QNX__
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
190 if (chninfo.buffer_size)
3095
981a9e5118ce interface to libao2 changed ao_plugin added
anders
parents: 3087
diff changeset
191 ao_data.buffersize = chninfo.buffer_size;
3087
08947e067d80 compiling under qnx, hope it works on all qnx release :)
alex
parents: 1111
diff changeset
192 #endif
3095
981a9e5118ce interface to libao2 changed ao_plugin added
anders
parents: 3087
diff changeset
193
5902
2639d60fe5c2 play() fix by Jimen Ching <jching@flex.com>, additional printf->mp_msg conversions (for coming i18n support)
alex
parents: 5790
diff changeset
194 mp_msg(MSGT_AO, MSGL_V, "alsa-init: setting preferred buffer size from driver: %d bytes\n",
2639d60fe5c2 play() fix by Jimen Ching <jching@flex.com>, additional printf->mp_msg conversions (for coming i18n support)
alex
parents: 5790
diff changeset
195 ao_data.buffersize);
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
196 }
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
197
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
198 memset(&params, 0, sizeof(params));
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
199 params.channel = SND_PCM_CHANNEL_PLAYBACK;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
200 params.mode = SND_PCM_MODE_STREAM;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
201 params.format = alsa_format;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
202 params.start_mode = SND_PCM_START_DATA;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
203 params.stop_mode = SND_PCM_STOP_ROLLOVER;
3095
981a9e5118ce interface to libao2 changed ao_plugin added
anders
parents: 3087
diff changeset
204 params.buf.stream.queue_size = ao_data.buffersize;
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
205 params.buf.stream.fill = SND_PCM_FILL_NONE;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
206
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
207 if ((err = snd_pcm_channel_params(alsa_handler, &params)) < 0)
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
208 {
13383
c1955840883d mp_msg transition of unmaintained audio output drivers.
ivo
parents: 12145
diff changeset
209 mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_CantSetParms, snd_strerror(err));
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
210 return(0);
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
211 }
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
212
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
213 memset(&setup, 0, sizeof(setup));
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
214 setup.channel = SND_PCM_CHANNEL_PLAYBACK;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
215 setup.mode = SND_PCM_MODE_STREAM;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
216 setup.format = alsa_format;
3095
981a9e5118ce interface to libao2 changed ao_plugin added
anders
parents: 3087
diff changeset
217 setup.buf.stream.queue_size = ao_data.buffersize;
981a9e5118ce interface to libao2 changed ao_plugin added
anders
parents: 3087
diff changeset
218 setup.msbits_per_sample = ao_data.bps;
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
219
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
220 if ((err = snd_pcm_channel_setup(alsa_handler, &setup)) < 0)
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
221 {
13383
c1955840883d mp_msg transition of unmaintained audio output drivers.
ivo
parents: 12145
diff changeset
222 mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_CantSetChan, snd_strerror(err));
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
223 return(0);
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
224 }
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
225
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
226 if ((err = snd_pcm_channel_prepare(alsa_handler, SND_PCM_CHANNEL_PLAYBACK)) < 0)
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
227 {
13383
c1955840883d mp_msg transition of unmaintained audio output drivers.
ivo
parents: 12145
diff changeset
228 mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_ChanPrepareError, snd_strerror(err));
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
229 return(0);
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
230 }
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
231
5902
2639d60fe5c2 play() fix by Jimen Ching <jching@flex.com>, additional printf->mp_msg conversions (for coming i18n support)
alex
parents: 5790
diff changeset
232 mp_msg(MSGT_AO, MSGL_INFO, "AUDIO: %d Hz/%d channels/%d bps/%d bytes buffer/%s\n",
7659
b10df387019c updated for libaf...
arpi
parents: 5902
diff changeset
233 ao_data.samplerate, ao_data.channels, ao_data.bps, ao_data.buffersize,
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
234 snd_pcm_get_format_name(alsa_format.format));
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
235 return(1);
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
236 }
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
237
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
238 /* close audio device */
12145
99798c3cdb93 uninit immed flag
alex
parents: 11678
diff changeset
239 static void uninit(int immed)
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
240 {
1055
50c49c976f23 Added missing declaration of variables 'err'.
bertrand
parents: 1046
diff changeset
241 int err;
50c49c976f23 Added missing declaration of variables 'err'.
bertrand
parents: 1046
diff changeset
242
1046
59fc1f75e486 audio_pause/resume implementacio es kozmetikai valtoztatasok
al3x
parents: 1038
diff changeset
243 if ((err = snd_pcm_playback_drain(alsa_handler)) < 0)
59fc1f75e486 audio_pause/resume implementacio es kozmetikai valtoztatasok
al3x
parents: 1038
diff changeset
244 {
13383
c1955840883d mp_msg transition of unmaintained audio output drivers.
ivo
parents: 12145
diff changeset
245 mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_DrainError, snd_strerror(err));
1046
59fc1f75e486 audio_pause/resume implementacio es kozmetikai valtoztatasok
al3x
parents: 1038
diff changeset
246 return;
59fc1f75e486 audio_pause/resume implementacio es kozmetikai valtoztatasok
al3x
parents: 1038
diff changeset
247 }
59fc1f75e486 audio_pause/resume implementacio es kozmetikai valtoztatasok
al3x
parents: 1038
diff changeset
248
59fc1f75e486 audio_pause/resume implementacio es kozmetikai valtoztatasok
al3x
parents: 1038
diff changeset
249 if ((err = snd_pcm_channel_flush(alsa_handler, SND_PCM_CHANNEL_PLAYBACK)) < 0)
59fc1f75e486 audio_pause/resume implementacio es kozmetikai valtoztatasok
al3x
parents: 1038
diff changeset
250 {
13383
c1955840883d mp_msg transition of unmaintained audio output drivers.
ivo
parents: 12145
diff changeset
251 mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_FlushError, snd_strerror(err));
1046
59fc1f75e486 audio_pause/resume implementacio es kozmetikai valtoztatasok
al3x
parents: 1038
diff changeset
252 return;
59fc1f75e486 audio_pause/resume implementacio es kozmetikai valtoztatasok
al3x
parents: 1038
diff changeset
253 }
59fc1f75e486 audio_pause/resume implementacio es kozmetikai valtoztatasok
al3x
parents: 1038
diff changeset
254
59fc1f75e486 audio_pause/resume implementacio es kozmetikai valtoztatasok
al3x
parents: 1038
diff changeset
255 if ((err = snd_pcm_close(alsa_handler)) < 0)
59fc1f75e486 audio_pause/resume implementacio es kozmetikai valtoztatasok
al3x
parents: 1038
diff changeset
256 {
13383
c1955840883d mp_msg transition of unmaintained audio output drivers.
ivo
parents: 12145
diff changeset
257 mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_PcmCloseError, snd_strerror(err));
1046
59fc1f75e486 audio_pause/resume implementacio es kozmetikai valtoztatasok
al3x
parents: 1038
diff changeset
258 return;
59fc1f75e486 audio_pause/resume implementacio es kozmetikai valtoztatasok
al3x
parents: 1038
diff changeset
259 }
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
260 }
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
261
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
262 /* stop playing and empty buffers (for seeking/pause) */
18915
99e20a22d5d0 modifies function declarations without parameters from ()
reynaldo
parents: 14264
diff changeset
263 static void reset(void)
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
264 {
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
265 int err;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
266
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
267 if ((err = snd_pcm_playback_drain(alsa_handler)) < 0)
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
268 {
13383
c1955840883d mp_msg transition of unmaintained audio output drivers.
ivo
parents: 12145
diff changeset
269 mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_ResetDrainError, snd_strerror(err));
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
270 return;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
271 }
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
272
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
273 if ((err = snd_pcm_channel_flush(alsa_handler, SND_PCM_CHANNEL_PLAYBACK)) < 0)
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
274 {
13383
c1955840883d mp_msg transition of unmaintained audio output drivers.
ivo
parents: 12145
diff changeset
275 mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_ResetFlushError, snd_strerror(err));
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
276 return;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
277 }
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
278
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
279 if ((err = snd_pcm_channel_prepare(alsa_handler, SND_PCM_CHANNEL_PLAYBACK)) < 0)
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
280 {
13383
c1955840883d mp_msg transition of unmaintained audio output drivers.
ivo
parents: 12145
diff changeset
281 mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_ResetChanPrepareError, snd_strerror(err));
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
282 return;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
283 }
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
284 }
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
285
1038
b36fb1ae4b53 applied solaris8/netbsd/other fixes patch by J¸«ärgen Keil <jk@tools.de>
arpi_esp
parents: 996
diff changeset
286 /* stop playing, keep buffers (for pause) */
18915
99e20a22d5d0 modifies function declarations without parameters from ()
reynaldo
parents: 14264
diff changeset
287 static void audio_pause(void)
1038
b36fb1ae4b53 applied solaris8/netbsd/other fixes patch by J¸«ärgen Keil <jk@tools.de>
arpi_esp
parents: 996
diff changeset
288 {
1046
59fc1f75e486 audio_pause/resume implementacio es kozmetikai valtoztatasok
al3x
parents: 1038
diff changeset
289 int err;
59fc1f75e486 audio_pause/resume implementacio es kozmetikai valtoztatasok
al3x
parents: 1038
diff changeset
290
59fc1f75e486 audio_pause/resume implementacio es kozmetikai valtoztatasok
al3x
parents: 1038
diff changeset
291 if ((err = snd_pcm_playback_drain(alsa_handler)) < 0)
59fc1f75e486 audio_pause/resume implementacio es kozmetikai valtoztatasok
al3x
parents: 1038
diff changeset
292 {
13383
c1955840883d mp_msg transition of unmaintained audio output drivers.
ivo
parents: 12145
diff changeset
293 mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_PauseDrainError, snd_strerror(err));
1046
59fc1f75e486 audio_pause/resume implementacio es kozmetikai valtoztatasok
al3x
parents: 1038
diff changeset
294 return;
59fc1f75e486 audio_pause/resume implementacio es kozmetikai valtoztatasok
al3x
parents: 1038
diff changeset
295 }
59fc1f75e486 audio_pause/resume implementacio es kozmetikai valtoztatasok
al3x
parents: 1038
diff changeset
296
59fc1f75e486 audio_pause/resume implementacio es kozmetikai valtoztatasok
al3x
parents: 1038
diff changeset
297 if ((err = snd_pcm_channel_flush(alsa_handler, SND_PCM_CHANNEL_PLAYBACK)) < 0)
59fc1f75e486 audio_pause/resume implementacio es kozmetikai valtoztatasok
al3x
parents: 1038
diff changeset
298 {
13383
c1955840883d mp_msg transition of unmaintained audio output drivers.
ivo
parents: 12145
diff changeset
299 mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_PauseFlushError, snd_strerror(err));
1046
59fc1f75e486 audio_pause/resume implementacio es kozmetikai valtoztatasok
al3x
parents: 1038
diff changeset
300 return;
59fc1f75e486 audio_pause/resume implementacio es kozmetikai valtoztatasok
al3x
parents: 1038
diff changeset
301 }
1038
b36fb1ae4b53 applied solaris8/netbsd/other fixes patch by J¸«ärgen Keil <jk@tools.de>
arpi_esp
parents: 996
diff changeset
302 }
b36fb1ae4b53 applied solaris8/netbsd/other fixes patch by J¸«ärgen Keil <jk@tools.de>
arpi_esp
parents: 996
diff changeset
303
b36fb1ae4b53 applied solaris8/netbsd/other fixes patch by J¸«ärgen Keil <jk@tools.de>
arpi_esp
parents: 996
diff changeset
304 /* resume playing, after audio_pause() */
18915
99e20a22d5d0 modifies function declarations without parameters from ()
reynaldo
parents: 14264
diff changeset
305 static void audio_resume(void)
1038
b36fb1ae4b53 applied solaris8/netbsd/other fixes patch by J¸«ärgen Keil <jk@tools.de>
arpi_esp
parents: 996
diff changeset
306 {
1055
50c49c976f23 Added missing declaration of variables 'err'.
bertrand
parents: 1046
diff changeset
307 int err;
1046
59fc1f75e486 audio_pause/resume implementacio es kozmetikai valtoztatasok
al3x
parents: 1038
diff changeset
308 if ((err = snd_pcm_channel_prepare(alsa_handler, SND_PCM_CHANNEL_PLAYBACK)) < 0)
59fc1f75e486 audio_pause/resume implementacio es kozmetikai valtoztatasok
al3x
parents: 1038
diff changeset
309 {
13383
c1955840883d mp_msg transition of unmaintained audio output drivers.
ivo
parents: 12145
diff changeset
310 mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_ResumePrepareError, snd_strerror(err));
1046
59fc1f75e486 audio_pause/resume implementacio es kozmetikai valtoztatasok
al3x
parents: 1038
diff changeset
311 return;
59fc1f75e486 audio_pause/resume implementacio es kozmetikai valtoztatasok
al3x
parents: 1038
diff changeset
312 }
1038
b36fb1ae4b53 applied solaris8/netbsd/other fixes patch by J¸«ärgen Keil <jk@tools.de>
arpi_esp
parents: 996
diff changeset
313 }
b36fb1ae4b53 applied solaris8/netbsd/other fixes patch by J¸«ärgen Keil <jk@tools.de>
arpi_esp
parents: 996
diff changeset
314
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
315 /*
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
316 plays 'len' bytes of 'data'
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
317 returns: number of bytes played
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
318 */
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
319 static int play(void* data, int len, int flags)
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
320 {
5902
2639d60fe5c2 play() fix by Jimen Ching <jching@flex.com>, additional printf->mp_msg conversions (for coming i18n support)
alex
parents: 5790
diff changeset
321 int got_len;
2639d60fe5c2 play() fix by Jimen Ching <jching@flex.com>, additional printf->mp_msg conversions (for coming i18n support)
alex
parents: 5790
diff changeset
322
2639d60fe5c2 play() fix by Jimen Ching <jching@flex.com>, additional printf->mp_msg conversions (for coming i18n support)
alex
parents: 5790
diff changeset
323 if (!len)
2639d60fe5c2 play() fix by Jimen Ching <jching@flex.com>, additional printf->mp_msg conversions (for coming i18n support)
alex
parents: 5790
diff changeset
324 return(0);
2639d60fe5c2 play() fix by Jimen Ching <jching@flex.com>, additional printf->mp_msg conversions (for coming i18n support)
alex
parents: 5790
diff changeset
325
2639d60fe5c2 play() fix by Jimen Ching <jching@flex.com>, additional printf->mp_msg conversions (for coming i18n support)
alex
parents: 5790
diff changeset
326 if ((got_len = snd_pcm_write(alsa_handler, data, len)) < 0)
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
327 {
5902
2639d60fe5c2 play() fix by Jimen Ching <jching@flex.com>, additional printf->mp_msg conversions (for coming i18n support)
alex
parents: 5790
diff changeset
328 if (got_len == -EPIPE) /* underrun? */
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
329 {
13383
c1955840883d mp_msg transition of unmaintained audio output drivers.
ivo
parents: 12145
diff changeset
330 mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_Underrun);
5902
2639d60fe5c2 play() fix by Jimen Ching <jching@flex.com>, additional printf->mp_msg conversions (for coming i18n support)
alex
parents: 5790
diff changeset
331 if ((got_len = snd_pcm_channel_prepare(alsa_handler, SND_PCM_CHANNEL_PLAYBACK)) < 0)
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
332 {
13383
c1955840883d mp_msg transition of unmaintained audio output drivers.
ivo
parents: 12145
diff changeset
333 mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_PlaybackPrepareError, snd_strerror(got_len));
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
334 return(0);
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
335 }
5902
2639d60fe5c2 play() fix by Jimen Ching <jching@flex.com>, additional printf->mp_msg conversions (for coming i18n support)
alex
parents: 5790
diff changeset
336 if ((got_len = snd_pcm_write(alsa_handler, data, len)) < 0)
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
337 {
13383
c1955840883d mp_msg transition of unmaintained audio output drivers.
ivo
parents: 12145
diff changeset
338 mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_WriteErrorAfterReset,
5902
2639d60fe5c2 play() fix by Jimen Ching <jching@flex.com>, additional printf->mp_msg conversions (for coming i18n support)
alex
parents: 5790
diff changeset
339 snd_strerror(got_len));
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
340 return(0);
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
341 }
5902
2639d60fe5c2 play() fix by Jimen Ching <jching@flex.com>, additional printf->mp_msg conversions (for coming i18n support)
alex
parents: 5790
diff changeset
342 return(got_len); /* 2nd write was ok */
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
343 }
13383
c1955840883d mp_msg transition of unmaintained audio output drivers.
ivo
parents: 12145
diff changeset
344 mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_ALSA5_OutPutError, snd_strerror(got_len));
5902
2639d60fe5c2 play() fix by Jimen Ching <jching@flex.com>, additional printf->mp_msg conversions (for coming i18n support)
alex
parents: 5790
diff changeset
345 return(0);
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
346 }
5902
2639d60fe5c2 play() fix by Jimen Ching <jching@flex.com>, additional printf->mp_msg conversions (for coming i18n support)
alex
parents: 5790
diff changeset
347 return(got_len);
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
348 }
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
349
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
350 /* how many byes are free in the buffer */
18915
99e20a22d5d0 modifies function declarations without parameters from ()
reynaldo
parents: 14264
diff changeset
351 static int get_space(void)
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
352 {
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
353 snd_pcm_channel_status_t ch_stat;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
354
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
355 ch_stat.channel = SND_PCM_CHANNEL_PLAYBACK;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
356
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
357 if (snd_pcm_channel_status(alsa_handler, &ch_stat) < 0)
11678
972d1998bde9 occured --> occurred typo patch by Clinton Roy <croy@dstc.edu.au>
diego
parents: 10366
diff changeset
358 return(0); /* error occurred */
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
359 else
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
360 return(ch_stat.free);
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
361 }
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
362
3095
981a9e5118ce interface to libao2 changed ao_plugin added
anders
parents: 3087
diff changeset
363 /* delay in seconds between first and last sample in buffer */
18915
99e20a22d5d0 modifies function declarations without parameters from ()
reynaldo
parents: 14264
diff changeset
364 static float get_delay(void)
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
365 {
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
366 snd_pcm_channel_status_t ch_stat;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
367
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
368 ch_stat.channel = SND_PCM_CHANNEL_PLAYBACK;
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
369
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
370 if (snd_pcm_channel_status(alsa_handler, &ch_stat) < 0)
11678
972d1998bde9 occured --> occurred typo patch by Clinton Roy <croy@dstc.edu.au>
diego
parents: 10366
diff changeset
371 return((float)ao_data.buffersize/(float)ao_data.bps); /* error occurred */
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
372 else
3095
981a9e5118ce interface to libao2 changed ao_plugin added
anders
parents: 3087
diff changeset
373 return((float)ch_stat.count/(float)ao_data.bps);
996
a97eb50a2c3b initial alsa support by al3x
pontscho
parents:
diff changeset
374 }