aboutsummaryrefslogtreecommitdiffstats
path: root/sound/usb/caiaq/audio.c
diff options
context:
space:
mode:
authorDaniel Mack <daniel@caiaq.de>2009-04-27 06:18:05 -0400
committerTakashi Iwai <tiwai@suse.de>2009-04-27 06:32:52 -0400
commita9b487fa1e00b42f9667abfeca4a5295a71333db (patch)
treedcf782b896b9e9afc46af1086cd2ae99075c466d /sound/usb/caiaq/audio.c
parent936e7d03394bc6238091db10d060326622c87ed7 (diff)
ALSA: snd-usb-caiaq: fix reported elapsed periods
Reset the internal period position counter upon stream startup. This fixes initial aplay underruns and problems related to latency picky applications such as pulseaudio. Bumped the version number to 1.3.14. Signed-off-by: Daniel Mack <daniel@caiaq.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/usb/caiaq/audio.c')
-rw-r--r--sound/usb/caiaq/audio.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/sound/usb/caiaq/audio.c b/sound/usb/caiaq/audio.c
index 3f45c0fe61ab..b13ce767ac72 100644
--- a/sound/usb/caiaq/audio.c
+++ b/sound/usb/caiaq/audio.c
@@ -195,11 +195,14 @@ static int snd_usb_caiaq_pcm_prepare(struct snd_pcm_substream *substream)
195 195
196 debug("%s(%p)\n", __func__, substream); 196 debug("%s(%p)\n", __func__, substream);
197 197
198 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) 198 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
199 dev->period_out_count[index] = BYTES_PER_SAMPLE + 1;
199 dev->audio_out_buf_pos[index] = BYTES_PER_SAMPLE + 1; 200 dev->audio_out_buf_pos[index] = BYTES_PER_SAMPLE + 1;
200 else 201 } else {
202 dev->period_in_count[index] = BYTES_PER_SAMPLE;
201 dev->audio_in_buf_pos[index] = BYTES_PER_SAMPLE; 203 dev->audio_in_buf_pos[index] = BYTES_PER_SAMPLE;
202 204 }
205
203 if (dev->streaming) 206 if (dev->streaming)
204 return 0; 207 return 0;
205 208
@@ -300,8 +303,7 @@ static void check_for_elapsed_periods(struct snd_usb_caiaqdev *dev,
300 if (!sub) 303 if (!sub)
301 continue; 304 continue;
302 305
303 pb = frames_to_bytes(sub->runtime, 306 pb = snd_pcm_lib_period_bytes(sub);
304 sub->runtime->period_size);
305 cnt = (sub->stream == SNDRV_PCM_STREAM_PLAYBACK) ? 307 cnt = (sub->stream == SNDRV_PCM_STREAM_PLAYBACK) ?
306 &dev->period_out_count[stream] : 308 &dev->period_out_count[stream] :
307 &dev->period_in_count[stream]; 309 &dev->period_in_count[stream];