From a1d1c2beaa54f76bbf92b2a5fd83c4a582a0316b Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 28 Feb 2011 00:09:45 +0100 Subject: [PATCH] output/oss: disable 24 bit playback on FreeBSD See code comment. --- NEWS | 1 + src/output/oss_plugin.c | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/NEWS b/NEWS index 64353a7c0..38fcd4155 100644 --- a/NEWS +++ b/NEWS @@ -5,6 +5,7 @@ ver 0.16.2 (2011/??/??) * output: - httpd: fix uninitialized variable - oss: AFMT_S24_PACKED is little-endian + - oss: disable 24 bit playback on FreeBSD ver 0.16.1 (2011/01/09) diff --git a/src/output/oss_plugin.c b/src/output/oss_plugin.c index 26d674e33..9261b423c 100644 --- a/src/output/oss_plugin.c +++ b/src/output/oss_plugin.c @@ -41,6 +41,15 @@ # include #endif /* !(defined(__OpenBSD__) || defined(__NetBSD__) */ +/* We got bug reports from FreeBSD users who said that the two 24 bit + formats generate white noise on FreeBSD, but 32 bit works. This is + a workaround until we know what exactly is expected by the kernel + audio drivers. */ +#ifndef __linux__ +#undef AFMT_S24_PACKED +#undef AFMT_S24_NE +#endif + struct oss_data { int fd; const char *device;