]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Fix bug where the samples were not accurate when in G723 mode, which would
authorShaun Ruffell <sruffell@digium.com>
Wed, 20 Aug 2008 19:52:25 +0000 (19:52 +0000)
committerShaun Ruffell <sruffell@digium.com>
Wed, 20 Aug 2008 19:52:25 +0000 (19:52 +0000)
cause the timestamp field of the RTP header to be invalid.

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

codecs/codec_dahdi.c

index 321dac4d7bb75eee25863427ccdd38ad0215ed4d..a68b3dcab375b6fadc5458523f5b63d86785bf65 100644 (file)
@@ -108,11 +108,7 @@ static AST_LIST_HEAD_STATIC(translators, translator);
 struct pvt {
        int fd;
        int fake;
-       unsigned int g729b_warning:1;
-#ifdef DEBUG_TRANSCODE
-       int totalms;
-       int lasttotalms;
-#endif
+       int samples;
        struct dahdi_transcoder_formats fmts;
 };
 
@@ -172,7 +168,7 @@ static struct ast_frame *zap_frameout(struct ast_trans_pvt *pvt)
                                return NULL;
                        }
                } else {
-                       pvt->f.samples = res;
+                       pvt->f.samples = ztp->samples;
                        pvt->f.datalen = res;
                        pvt->datalen = 0;
                        pvt->f.frametype = AST_FRAME_VOICE;
@@ -268,6 +264,20 @@ static int zap_translate(struct ast_trans_pvt *pvt, int dest, int source)
 
        switch (ztp->fmts.dstfmt) {
        case AST_FORMAT_G729A:
+               ztp->samples = 160;
+               break;
+       case AST_FORMAT_G723_1:
+               ztp->samples = 240;
+               break;
+       default:
+               ztp->samples = 160;
+               break;
+       };
+
+       switch (ztp->fmts.dstfmt) {
+       case AST_FORMAT_G729A:
+               ast_atomic_fetchadd_int(&channels.encoders, +1);
+               break;
        case AST_FORMAT_G723_1:
                ast_atomic_fetchadd_int(&channels.encoders, +1);
                break;