From a988c192abb17d35e948e1e9ee3f8eb35c495170 Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Fri, 6 Jan 2012 21:21:45 +0900 Subject: [PATCH] Fix OSS sound. YAY!!! Much thanks to Spirit from quaddicted for his patient help in testing, and Spike for his heckling ;) --- libs/audio/targets/snd_oss.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/libs/audio/targets/snd_oss.c b/libs/audio/targets/snd_oss.c index 5e5ad5320..b1281cddd 100644 --- a/libs/audio/targets/snd_oss.c +++ b/libs/audio/targets/snd_oss.c @@ -250,7 +250,8 @@ try_open (int rw) return 0; } - sn.frames = info.fragstotal; + sn.frames = info.fragstotal * info.fragsize; + sn.frames /= sn.channels * sn.samplebits / 8; sn.submission_chunk = 1; if (mmaped_io) { // memory map the dma buffer @@ -260,7 +261,8 @@ try_open (int rw) len = (len + sz - 1) & ~(sz - 1); sn.buffer = (byte *) mmap (NULL, len, mmmode, mmflags, audio_fd, 0); if (sn.buffer == MAP_FAILED) { - Sys_Printf ("Could not mmap %s: %s\n", snd_dev, strerror (errno)); + Sys_MaskPrintf (SYS_SND, "Could not mmap %s: %s\n", snd_dev, + strerror (errno)); close (audio_fd); return 0; } @@ -326,7 +328,7 @@ SNDDMA_GetDMAPos (void) } // sn.samplepos = (count.bytes / (sn.samplebits / 8)) & (sn.samples-1); // fprintf(stderr, "%d \r", count.ptr); - sn.framepos = count.ptr / (sn.samplebits / 8); + sn.framepos = count.ptr / (sn.channels * sn.samplebits / 8); return sn.framepos;