Blocked revisions 47323 via svnmerge
[asterisk/asterisk.git] / codecs / codec_a_mu.c
index 2f5400d..b9c1c49 100644 (file)
  * \ingroup codecs
  */
 
+#include "asterisk.h"
+
+ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
+
 #include <fcntl.h>
 #include <netinet/in.h>
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
 
-#include "asterisk.h"
-
-ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
-
 #include "asterisk/lock.h"
 #include "asterisk/logger.h"
 #include "asterisk/module.h"
@@ -55,28 +55,32 @@ static unsigned char a2mu[256];
 /*! \brief convert frame data and store into the buffer */
 static int alawtoulaw_framein(struct ast_trans_pvt *pvt, struct ast_frame *f)
 {
-       int x;
+       int x = f->samples;
        unsigned char *src = f->data;
        unsigned char *dst = (unsigned char *)pvt->outbuf + pvt->samples;
 
-       for ( x = 0 ; x < f->samples; x++)
-               dst[x] = a2mu[src[x]];
-       pvt->samples += f->samples;
-       pvt->datalen += f->datalen;
+       pvt->samples += x;
+       pvt->datalen += x;
+
+       while (x--)
+               *dst++ = a2mu[*src++];
+
        return 0;
 }
 
 /*! \brief convert frame data and store into the buffer */
 static int ulawtoalaw_framein(struct ast_trans_pvt *pvt, struct ast_frame *f)
 {
-       int x;
+       int x = f->samples;
        unsigned char *src = f->data;
        unsigned char *dst = (unsigned char *)pvt->outbuf + pvt->samples;
 
-       for ( x = 0 ; x < f->samples; x++)
-               dst[x] = mu2a[src[x]];
-       pvt->samples += f->samples;
-       pvt->datalen += f->datalen;
+       pvt->samples += x;
+       pvt->datalen += x;
+
+       while (x--)
+               *dst++ = mu2a[*src++];
+
        return 0;
 }
 
@@ -111,8 +115,6 @@ static struct ast_frame *ulawtoalaw_sample(void)
        return &f;
 }
 
-static struct ast_module_lock me = { .usecnt = -1 };
-
 static struct ast_translator alawtoulaw = {
        .name = "alawtoulaw",
        .srcfmt = AST_FORMAT_ALAW,
@@ -121,7 +123,6 @@ static struct ast_translator alawtoulaw = {
        .sample = alawtoulaw_sample,
        .buffer_samples = BUFFER_SAMPLES,
        .buf_size = BUFFER_SAMPLES,
-       .lockp = &me,
 };
 
 static struct ast_translator ulawtoalaw = {
@@ -132,27 +133,25 @@ static struct ast_translator ulawtoalaw = {
        .sample = ulawtoalaw_sample,
        .buffer_samples = BUFFER_SAMPLES,
        .buf_size = BUFFER_SAMPLES,
-       .lockp = &me,
 };
 
 /*! \brief standard module glue */
 
-int unload_module(void)
+static int unload_module(void)
 {
        int res;
-       ast_mutex_lock(&me.lock);
+
        res = ast_unregister_translator(&ulawtoalaw);
        res |= ast_unregister_translator(&alawtoulaw);
-       if (me.usecnt)
-               res = -1;
-       ast_mutex_unlock(&me.lock);
+
        return res;
 }
 
-int load_module(void)
+static int load_module(void)
 {
        int res;
        int x;
+
        for (x=0;x<256;x++) {
                mu2a[x] = AST_LIN2A(AST_MULAW(x));
                a2mu[x] = AST_LIN2MU(AST_ALAW(x));
@@ -162,20 +161,8 @@ int load_module(void)
                res = ast_register_translator(&ulawtoalaw);
        else
                ast_unregister_translator(&alawtoulaw);
-       return res;
-}
 
-const char *description(void)
-{
-       return "A-law and Mulaw direct Coder/Decoder";
-}
-
-int usecount(void)
-{
-       return me.usecnt;
+       return res;
 }
 
-const char *key()
-{
-       return ASTERISK_GPL_KEY;
-}
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "A-law and Mulaw direct Coder/Decoder");