aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_oss.c
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2005-03-24 00:55:40 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2005-03-24 00:55:40 +0000
commit74ffe75c3831e7d538146b9849cfaa57db884eea (patch)
tree0d9d4e68c82c6c7bf78259766cf18b0674de4bbe /channels/chan_oss.c
parent7957f8152cc34fe91ba09e54235b2771f9742cf2 (diff)
fix endianness of OSS/Alsa (bug #3839)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@5241 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_oss.c')
-rwxr-xr-xchannels/chan_oss.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/channels/chan_oss.c b/channels/chan_oss.c
index 1a34a5eb5..316529c94 100755
--- a/channels/chan_oss.c
+++ b/channels/chan_oss.c
@@ -34,6 +34,7 @@
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
+#include <endian.h>
#ifdef __linux
#include <linux/soundcard.h>
#elif defined(__FreeBSD__)
@@ -350,7 +351,13 @@ static int setformat(void)
int fmt, desired, res, fd = sounddev;
static int warnedalready = 0;
static int warnedalready2 = 0;
+
+#if __BYTE_ORDER == __LITTLE_ENDIAN
fmt = AFMT_S16_LE;
+#else
+ fmt = AFMT_S16_BE;
+#endif
+
res = ioctl(fd, SNDCTL_DSP_SETFMT, &fmt);
if (res < 0) {
ast_log(LOG_WARNING, "Unable to set format to 16-bit signed\n");