projects
/
lcr.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed trace bug
[lcr.git]
/
tones.c
diff --git
a/tones.c
b/tones.c
index
5d64125
..
fd85529
100644
(file)
--- a/
tones.c
+++ b/
tones.c
@@
-9,15
+9,6
@@
** **
\*****************************************************************************/
** **
\*****************************************************************************/
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <dirent.h>
-#include <errno.h>
#include "main.h"
/*
#include "main.h"
/*
@@
-38,12
+29,12
@@
the read_tone() will return law or 16bit mono. the read_tone will convert all ot
struct fmt {
unsigned short stereo; /* 1 = pcm, 2 = adpcm */
unsigned short channels; /* number of channels */
struct fmt {
unsigned short stereo; /* 1 = pcm, 2 = adpcm */
unsigned short channels; /* number of channels */
- unsigned
long
sample_rate; /* sample rate */
- unsigned
long
data_rate; /* data rate */
+ unsigned
int
sample_rate; /* sample rate */
+ unsigned
int
data_rate; /* data rate */
unsigned short bytes_sample; /* bytes per sample (all channels) */
unsigned short bits_sample; /* bits per sample (one channel) */
};
unsigned short bytes_sample; /* bytes per sample (all channels) */
unsigned short bits_sample; /* bits per sample (one channel) */
};
-int open_tone(char *file, int *codec, signed
long *length, signed long
*left)
+int open_tone(char *file, int *codec, signed
int *length, signed int
*left)
{
int fh;
char filename[256];
{
int fh;
char filename[256];
@@
-51,7
+42,7
@@
int open_tone(char *file, int *codec, signed long *length, signed long *left)
unsigned char buffer[256];
struct fmt *fmt;
int channels, bytes;
unsigned char buffer[256];
struct fmt *fmt;
int channels, bytes;
- unsigned
long
size, chunk;
+ unsigned
int
size, chunk;
int gotfmt = 0;
struct stat _stat;
int linksize;
int gotfmt = 0;
struct stat _stat;
int linksize;
@@
-155,7
+146,7
@@
int open_tone(char *file, int *codec, signed long *length, signed long *left)
read(fh, buffer, 8);
chunk=(buffer[4]) + (buffer[5]<<8) + (buffer[6]<<16) + (buffer[7]<<24);
size -= (8+chunk);
read(fh, buffer, 8);
chunk=(buffer[4]) + (buffer[5]<<8) + (buffer[6]<<16) + (buffer[7]<<24);
size -= (8+chunk);
-// printf("%c%c%c%c leng
ht
=%d\n",buffer[0],buffer[1],buffer[2],buffer[3],chunk);
+// printf("%c%c%c%c leng
th
=%d\n",buffer[0],buffer[1],buffer[2],buffer[3],chunk);
if (size < 0)
{
close(fh);
if (size < 0)
{
close(fh);
@@
-165,7
+156,7
@@
int open_tone(char *file, int *codec, signed long *length, signed long *left)
}
if (!strncmp((char *)buffer, "fmt ", 4))
{
}
if (!strncmp((char *)buffer, "fmt ", 4))
{
- if (chunk
!=
16)
+ if (chunk
<
16)
{
close(fh);
errno = 0;
{
close(fh);
errno = 0;
@@
-214,27
+205,28
@@
int open_tone(char *file, int *codec, signed long *length, signed long *left)
if (codec)
*codec = CODEC_MONO;
if (length)
if (codec)
*codec = CODEC_MONO;
if (length)
- *length = ((signed
long
)chunk)>>1;
+ *length = ((signed
int
)chunk)>>1;
if (left)
if (left)
- *left = ((signed long)chunk)>>1;
+ *left = ((signed int)chunk)>>1;
+// printf("left=%d\n",*left);
} else
if (bytes==2 && channels==2)
{
if (codec)
*codec = CODEC_STEREO;
if (length)
} else
if (bytes==2 && channels==2)
{
if (codec)
*codec = CODEC_STEREO;
if (length)
- *length = ((signed
long
)chunk)>>2;
+ *length = ((signed
int
)chunk)>>2;
if (left)
if (left)
- *left = ((signed
long
)chunk)>>2;
+ *left = ((signed
int
)chunk)>>2;
} else
if (bytes==1 && channels==1)
{
if (codec)
*codec = CODEC_8BIT;
if (length)
} else
if (bytes==1 && channels==1)
{
if (codec)
*codec = CODEC_8BIT;
if (length)
- *length = (signed
long
)chunk;
+ *length = (signed
int
)chunk;
if (left)
if (left)
- *left = (signed
long
)chunk;
+ *left = (signed
int
)chunk;
} else
{
close(fh);
} else
{
close(fh);
@@
-278,10
+270,15
@@
int open_tone(char *file, int *codec, signed long *length, signed long *left)
* the len must be the number of samples, NOT for the bytes to read!!
* the data returned is law-code
*/
* the len must be the number of samples, NOT for the bytes to read!!
* the data returned is law-code
*/
-int read_tone(int fh,
void *buffer, int codec, int len, signed long size, signed long
*left, int speed)
+int read_tone(int fh,
unsigned char *buffer, int codec, int len, signed int size, signed int
*left, int speed)
{
int l;
int offset;
{
int l;
int offset;
+ signed short buffer16[len], *buf16 = buffer16;
+ signed short buffer32[len<<1], *buf32 = buffer32;
+ unsigned char buffer8[len], *buf8 = buffer8;
+ signed int sample;
+ int i = 0;
//printf("left=%ld\n",*left);
/* if no *left is given (law has unknown length) */
//printf("left=%ld\n",*left);
/* if no *left is given (law has unknown length) */
@@
-320,9
+317,6
@@
int read_tone(int fh, void *buffer, int codec, int len, signed long size, signed
break;
case CODEC_MONO:
break;
case CODEC_MONO:
- signed short buffer16[len], *buf16 = buffer16;
- signed long sample;
- int i = 0;
l = read(fh, buf16, len<<1);
if (l>0)
{
l = read(fh, buf16, len<<1);
if (l>0)
{
@@
-342,9
+336,6
@@
int read_tone(int fh, void *buffer, int codec, int len, signed long size, signed
case CODEC_STEREO:
{
case CODEC_STEREO:
{
- signed short buffer32[len<<1], *buf32 = buffer32;
- signed long sample;
- int i = 0;
l = read(fh, buf32, len<<2);
if (l>0)
{
l = read(fh, buf32, len<<2);
if (l>0)
{
@@
-365,8
+356,6
@@
int read_tone(int fh, void *buffer, int codec, int len, signed long size, signed
case CODEC_8BIT:
{
case CODEC_8BIT:
{
- unsigned char buffer8[len], *buf8 = buffer8;
- int i = 0;
l = read(fh, buf8, len);
if (l>0)
{
l = read(fh, buf8, len);
if (l>0)
{
@@
-380,8
+369,7
@@
int read_tone(int fh, void *buffer, int codec, int len, signed long size, signed
break;
default:
break;
default:
- PERROR("codec %d is not supported, exitting...\n", codec);
- exit(-1);
+ FATAL("codec %d is not supported.\n", codec);
}
if (l>0 && left)
}
if (l>0 && left)
@@
-409,12
+397,12
@@
void free_tones(void)
{
temp = tonesettone_temp;
tonesettone_temp = tonesettone_temp->next;
{
temp = tonesettone_temp;
tonesettone_temp = tonesettone_temp->next;
-
free(temp
);
+
FREE(temp, sizeof(struct tonesettone)
);
memuse--;
}
temp = toneset_temp;
toneset_temp = toneset_temp->next;
memuse--;
}
temp = toneset_temp;
toneset_temp = toneset_temp->next;
-
free(temp
);
+
FREE(temp, sizeof(struct toneset)
);
memuse--;
}
toneset_first = NULL;
memuse--;
}
toneset_first = NULL;
@@
-434,8
+422,8
@@
int fetch_tones(void)
char filename[256], name[256];
int fh;
int tone_codec;
char filename[256], name[256];
int fh;
int tone_codec;
- signed
long
tone_size, tone_left;
- unsigned
long
memory = 0;
+ signed
int
tone_size, tone_left;
+ unsigned
int
memory = 0;
int samples = 0;
/* if disabled */
int samples = 0;
/* if disabled */
@@
-468,15
+456,9
@@
int fetch_tones(void)
printf("PBX: Fetching tones '%s'\n", p);
PDEBUG(DEBUG_PORT, "fetching tones directory '%s'\n", p);
printf("PBX: Fetching tones '%s'\n", p);
PDEBUG(DEBUG_PORT, "fetching tones directory '%s'\n", p);
- *toneset_nextpointer = (struct toneset *)calloc(1, sizeof(struct toneset));
- if (*toneset_nextpointer == NULL)
- {
- PERROR("No memory for tone set: '%s'\n",p);
- return(0);
- }
+ *toneset_nextpointer = (struct toneset *)MALLOC(sizeof(struct toneset));
memuse++;
memory += sizeof(struct toneset);
memuse++;
memory += sizeof(struct toneset);
- memset(*toneset_nextpointer, 0 , sizeof(struct toneset));
SCPY((*toneset_nextpointer)->directory, p);
tonesettone_nextpointer = &(*toneset_nextpointer)->first;
SCPY((*toneset_nextpointer)->directory, p);
tonesettone_nextpointer = &(*toneset_nextpointer)->first;
@@
-529,18
+511,10
@@
int fetch_tones(void)
continue;
}
continue;
}
- /* allocate tone */
- *tonesettone_nextpointer = (struct tonesettone *)calloc(1, sizeof(struct tonesettone)+tone_size);
- if (*toneset_nextpointer == NULL)
- {
- PERROR("No memory for tone set: '%s'\n",p);
- close(fh);
- fduse--;
- return(0);
- }
+ /* Allocate tone */
+ *tonesettone_nextpointer = (struct tonesettone *)MALLOC(sizeof(struct tonesettone)+tone_size);
memuse++;
//printf("tone:%s, %ld bytes\n", name, tone_size);
memuse++;
//printf("tone:%s, %ld bytes\n", name, tone_size);
- memset(*tonesettone_nextpointer, 0 , sizeof(struct tonesettone)+tone_size);
memory += sizeof(struct tonesettone)+tone_size;
samples ++;
memory += sizeof(struct tonesettone)+tone_size;
samples ++;
@@
-570,7
+544,7
@@
int fetch_tones(void)
/*
* opens the fetched tone (if available)
*/
/*
* opens the fetched tone (if available)
*/
-void *open_tone_fetched(char *dir, char *file, int *codec, signed
long *length, signed long
*left)
+void *open_tone_fetched(char *dir, char *file, int *codec, signed
int *length, signed int
*left)
{
struct toneset *toneset;
struct tonesettone *tonesettone;
{
struct toneset *toneset;
struct tonesettone *tonesettone;
@@
-619,7
+593,7
@@
void *open_tone_fetched(char *dir, char *file, int *codec, signed long *length,
* read from fetched tone, check size
* the len must be the number of samples, NOT for the bytes to read!!
*/
* read from fetched tone, check size
* the len must be the number of samples, NOT for the bytes to read!!
*/
-int read_tone_fetched(void **fetched, void *buffer, int len, signed
long size, signed long
*left, int speed)
+int read_tone_fetched(void **fetched, void *buffer, int len, signed
int size, signed int
*left, int speed)
{
int l;
//printf("left=%ld\n",*left);
{
int l;
//printf("left=%ld\n",*left);