aboutsummaryrefslogtreecommitdiffstats
path: root/frame.c
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2002-09-03 15:11:04 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2002-09-03 15:11:04 +0000
commit1a9cb34a53315eec094c7937b4a0e3db1ce841bc (patch)
tree434d7ea56f356809784d8476aedb96acc85ed798 /frame.c
parent3083c13a2823feea44f13981f7c7f434498b7bd1 (diff)
Version 0.2.0 from FTP
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@514 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'frame.c')
-rwxr-xr-xframe.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/frame.c b/frame.c
index e5db38427..d5c60bfc3 100755
--- a/frame.c
+++ b/frame.c
@@ -44,9 +44,11 @@ struct ast_smoother {
struct ast_smoother *ast_smoother_new(int size)
{
struct ast_smoother *s;
+ if (size < 1)
+ return NULL;
s = malloc(sizeof(struct ast_smoother));
if (s) {
- memset(s, 0, sizeof(s));
+ memset(s, 0, sizeof(struct ast_smoother));
s->size = size;
}
return s;
@@ -77,21 +79,22 @@ int ast_smoother_feed(struct ast_smoother *s, struct ast_frame *f)
struct ast_frame *ast_smoother_read(struct ast_smoother *s)
{
/* Make sure we have enough data */
- if (s->len < s->size)
+ if (s->len < s->size) {
return NULL;
+ }
/* Make frame */
s->f.frametype = AST_FRAME_VOICE;
s->f.subclass = s->format;
- s->f.data = s->framedata;
+ s->f.data = s->framedata + AST_FRIENDLY_OFFSET;
s->f.offset = AST_FRIENDLY_OFFSET;
s->f.datalen = s->size;
s->f.timelen = s->size * s->timeperbyte;
/* Fill Data */
- memcpy(s->f.data + AST_FRIENDLY_OFFSET, s->f.data, s->size);
+ memcpy(s->f.data, s->data, s->size);
s->len -= s->size;
/* Move remaining data to the front if applicable */
if (s->len)
- memmove(s->f.data, s->f.data + s->size, s->len);
+ memmove(s->data, s->data + s->size, s->len);
/* Return frame */
return &s->f;
}
@@ -296,6 +299,8 @@ int ast_getformatbyname(char *name)
return AST_FORMAT_LPC10;
else if (!strcasecmp(name, "adpcm"))
return AST_FORMAT_ADPCM;
+ else if (!strcasecmp(name, "speex"))
+ return AST_FORMAT_SPEEX;
else if (!strcasecmp(name, "all"))
return 0x7FFFFFFF;
return 0;