fix endianness (bug #3839)

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-0@5333 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Russell Bryant
2005-04-01 04:09:45 +00:00
parent 1e2baaf12e
commit f066af663f
2 changed files with 14 additions and 1 deletions

View File

@@ -27,6 +27,7 @@
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
#include <endian.h>
#define ALSA_PCM_NEW_HW_PARAMS_API #define ALSA_PCM_NEW_HW_PARAMS_API
#define ALSA_PCM_NEW_SW_PARAMS_API #define ALSA_PCM_NEW_SW_PARAMS_API
@@ -59,8 +60,13 @@
/* Don't switch between read/write modes faster than every 300 ms */ /* Don't switch between read/write modes faster than every 300 ms */
#define MIN_SWITCH_TIME 600 #define MIN_SWITCH_TIME 600
#if __BYTE_ORDER == __LITTLE_ENDIAN
static snd_pcm_format_t format = SND_PCM_FORMAT_S16_LE; static snd_pcm_format_t format = SND_PCM_FORMAT_S16_LE;
//static int block = O_NONBLOCK; #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 indevname[50] = ALSA_INDEV;
static char outdevname[50] = ALSA_OUTDEV; static char outdevname[50] = ALSA_OUTDEV;

View File

@@ -34,6 +34,7 @@
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
#include <endian.h>
#ifdef __linux #ifdef __linux
#include <linux/soundcard.h> #include <linux/soundcard.h>
#elif defined(__FreeBSD__) #elif defined(__FreeBSD__)
@@ -322,7 +323,13 @@ static int setformat(void)
int fmt, desired, res, fd = sounddev; int fmt, desired, res, fd = sounddev;
static int warnedalready = 0; static int warnedalready = 0;
static int warnedalready2 = 0; static int warnedalready2 = 0;
#if __BYTE_ORDER == __LITTLE_ENDIAN
fmt = AFMT_S16_LE; fmt = AFMT_S16_LE;
#else
fmt = AFMT_S16_BE;
#endif
res = ioctl(fd, SNDCTL_DSP_SETFMT, &fmt); res = ioctl(fd, SNDCTL_DSP_SETFMT, &fmt);
if (res < 0) { if (res < 0) {
ast_log(LOG_WARNING, "Unable to set format to 16-bit signed\n"); ast_log(LOG_WARNING, "Unable to set format to 16-bit signed\n");