#include <string.h>
#include <stdlib.h>
#include <stdio.h>
+#include <endian.h>
#define ALSA_PCM_NEW_HW_PARAMS_API
#define ALSA_PCM_NEW_SW_PARAMS_API
/* Don't switch between read/write modes faster than every 300 ms */
#define MIN_SWITCH_TIME 600
+#if __BYTE_ORDER == __LITTLE_ENDIAN
static snd_pcm_format_t format = SND_PCM_FORMAT_S16_LE;
+#else
+static snd_pcm_format_t format = SND_PCM_FORMAT_S16_BE;
+#endif
+
/* static int block = O_NONBLOCK; */
static char indevname[50] = ALSA_INDEV;
static char outdevname[50] = ALSA_OUTDEV;
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
+#include <endian.h>
#ifdef __linux
#include <linux/soundcard.h>
#elif defined(__FreeBSD__)
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");