A trunk that builds is a productive trunk.
[asterisk/asterisk.git] / codecs / codec_adpcm.c
index e9ee5b3..7469f05 100644 (file)
@@ -27,6 +27,9 @@
  * \ingroup codecs
  */
 
+#include "asterisk.h"
+
+ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 
 #include <fcntl.h>
 #include <netinet/in.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/linkedlists.h"
@@ -239,13 +238,13 @@ struct adpcm_decoder_pvt {
 static int adpcmtolin_framein(struct ast_trans_pvt *pvt, struct ast_frame *f)
 {
        struct adpcm_decoder_pvt *tmp = pvt->pvt;
-       int x;
+       int x = f->datalen;
        unsigned char *src = f->data;
        int16_t *dst = (int16_t *)pvt->outbuf + pvt->samples;
 
-       for (x=0; x < f->datalen; x++) {
-               *dst++ = decode((src[x] >> 4) & 0xf, &tmp->state);
-               *dst++ = decode(src[x] & 0x0f, &tmp->state);
+       while (x--) {
+               *dst++ = decode((*src >> 4) & 0xf, &tmp->state);
+               *dst++ = decode(*src++ & 0x0f, &tmp->state);
        }
        pvt->samples += f->samples;
        pvt->datalen += 2*f->samples;
@@ -368,40 +367,38 @@ static void parse_config(void)
 }
 
 /*! \brief standard module glue */
-static int reload(void *mod)
+static int reload(void)
 {
        parse_config();
        return 0;
 }
 
-static int unload_module(void *mod)
+static int unload_module(void)
 {
        int res;
+
        res = ast_unregister_translator(&lintoadpcm);
        res |= ast_unregister_translator(&adpcmtolin);
+
        return res;
 }
 
-static int load_module(void *mod)
+static int load_module(void)
 {
        int res;
+
        parse_config();
-       res = ast_register_translator(&adpcmtolin, mod);
+       res = ast_register_translator(&adpcmtolin);
        if (!res)
-               res = ast_register_translator(&lintoadpcm, mod);
+               res = ast_register_translator(&lintoadpcm);
        else
                ast_unregister_translator(&adpcmtolin);
-       return res;
-}
-
-static const char *description(void)
-{
-       return "Adaptive Differential PCM Coder/Decoder";
-}
 
-static const char *key(void)
-{
-       return ASTERISK_GPL_KEY;
+       return res;
 }
 
-STD_MOD(MOD_1, reload, NULL, NULL);
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Adaptive Differential PCM Coder/Decoder",
+               .load = load_module,
+               .unload = unload_module,
+               .reload = reload,
+              );