Fix bug where the samples were not accurate when in G723 mode, which would
authorShaun Ruffell <sruffell@digium.com>
Wed, 20 Aug 2008 19:57:22 +0000 (19:57 +0000)
committerShaun Ruffell <sruffell@digium.com>
Wed, 20 Aug 2008 19:57:22 +0000 (19:57 +0000)
cause the timestamp field of the RTP header to be invalid.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@139153 65c4cc65-6c06-0410-ace0-fbb531ad65f3

codecs/codec_dahdi.c

index a5fe892..67627cf 100644 (file)
@@ -82,11 +82,8 @@ static AST_LIST_HEAD_STATIC(translators, translator);
 struct pvt {
        int fd;
        int fake;
-#ifdef DEBUG_TRANSCODE
-       int totalms;
-       int lasttotalms;
-#endif
        struct dahdi_transcoder_formats fmts;
+       int samples;
 };
 
 static char *handle_cli_transcoder_show(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
@@ -111,6 +108,7 @@ static char *handle_cli_transcoder_show(struct ast_cli_entry *e, int cmd, struct
 
        if (copy.total == 0)
                ast_cli(a->fd, "No DAHDI transcoders found.\n");
+       ast_debug(1, "codec_dahdi.so loaded.\n");
        else
                ast_cli(a->fd, "%d/%d encoders/decoders of %d channels are in use.\n", copy.encoders, copy.decoders, copy.total);
 
@@ -159,7 +157,7 @@ static struct ast_frame *dahdi_frameout(struct ast_trans_pvt *pvt)
                                return NULL;
                        }
                } else {
-                       pvt->f.samples = res;
+                       pvt->f.samples = dahdip->samples;
                        pvt->f.datalen = res;
                        pvt->datalen = 0;
                        pvt->f.frametype = AST_FRAME_VOICE;
@@ -248,10 +246,14 @@ static int dahdi_translate(struct ast_trans_pvt *pvt, int dest, int source)
 
        switch (dahdip->fmts.dstfmt) {
        case AST_FORMAT_G729A:
+               dahdip->samples = 160;
+               break;
        case AST_FORMAT_G723_1:
+               dahdip->samples = 240;
                ast_atomic_fetchadd_int(&channels.encoders, +1);
                break;
        default:
+               dahdip->samples = 160;
                ast_atomic_fetchadd_int(&channels.decoders, +1);
                break;
        }
@@ -446,6 +448,7 @@ static int unload_module(void)
 
 static int load_module(void)
 {
+       ast_debug(1, "codec_dahdi.so loaded.\n");
        if (parse_config(0))
                return AST_MODULE_LOAD_DECLINE;
        find_transcoders();