aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_alsa.c
diff options
context:
space:
mode:
Diffstat (limited to 'channels/chan_alsa.c')
-rwxr-xr-xchannels/chan_alsa.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/channels/chan_alsa.c b/channels/chan_alsa.c
index acf80b857..3da955a6b 100755
--- a/channels/chan_alsa.c
+++ b/channels/chan_alsa.c
@@ -27,6 +27,7 @@
#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
@@ -59,8 +60,13 @@
/* 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;
-//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 outdevname[50] = ALSA_OUTDEV;
@@ -863,7 +869,7 @@ static int console_sendtext(int fd, int argc, char *argv[])
struct ast_frame f = { AST_FRAME_TEXT, 0 };
char text2send[256] = "";
text2send[0] = '\0';
- while(tmparg <= argc) {
+ while(tmparg < argc) {
strncat(text2send, argv[tmparg++], sizeof(text2send) - strlen(text2send) - 1);
strncat(text2send, " ", sizeof(text2send) - strlen(text2send) - 1);
}
@@ -1047,10 +1053,12 @@ int load_module()
int unload_module()
{
int x;
+
+ ast_channel_unregister(type);
for (x=0;x<sizeof(myclis)/sizeof(struct ast_cli_entry); x++)
ast_cli_unregister(myclis + x);
- close(readdev);
- close(writedev);
+ snd_pcm_close(alsa.icard);
+ snd_pcm_close(alsa.ocard);
if (sndcmd[0] > 0) {
close(sndcmd[0]);
close(sndcmd[1]);