]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Simplify this code with a suggestion from Luigi on the asterisk-dev list.
authorRussell Bryant <russell@russellbryant.com>
Fri, 11 Jan 2008 00:14:59 +0000 (00:14 +0000)
committerRussell Bryant <russell@russellbryant.com>
Fri, 11 Jan 2008 00:14:59 +0000 (00:14 +0000)
Instead of using is16kHz(), implement a format_rate() function.

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

main/translate.c

index 05d002a7d2524ca081ab3706545b7a08c5c0b392..ba115ed6254e27feb3eaac7e4597a7f6bc4df7b5 100644 (file)
@@ -294,12 +294,12 @@ struct ast_trans_pvt *ast_translator_build_path(int dest, int source)
        return head;
 }
 
-static inline int is16kHz(int format)
+static inline int format_rate(int format)
 {
        if (format == AST_FORMAT_G722)
-               return 1;
+               return 16000;
 
-       return 0;
+       return 8000;
 }
 
 /*! \brief do the actual translation */
@@ -320,11 +320,6 @@ struct ast_frame *ast_translate(struct ast_trans_pvt *path, struct ast_frame *f,
 
        /* XXX hmmm... check this below */
        if (!ast_tvzero(f->delivery)) {
-               int in_rate = 8000;
-
-               if (is16kHz(f->subclass))
-                       in_rate = 16000;
-               
                if (!ast_tvzero(path->nextin)) {
                        /* Make sure this is in line with what we were expecting */
                        if (!ast_tveq(path->nextin, f->delivery)) {
@@ -343,7 +338,7 @@ struct ast_frame *ast_translate(struct ast_trans_pvt *path, struct ast_frame *f,
                        path->nextout = f->delivery;
                }
                /* Predict next incoming sample */
-               path->nextin = ast_tvadd(path->nextin, ast_samp2tv(f->samples, in_rate));
+               path->nextin = ast_tvadd(path->nextin, ast_samp2tv(f->samples, format_rate(f->subclass)));
        }
        delivery = f->delivery;
        for ( ; out && p ; p = p->next) {
@@ -356,11 +351,6 @@ struct ast_frame *ast_translate(struct ast_trans_pvt *path, struct ast_frame *f,
                return NULL;
        /* we have a frame, play with times */
        if (!ast_tvzero(delivery)) {
-               int out_rate = 8000;
-
-               if (is16kHz(out->subclass))
-                       out_rate = 16000;
-
                /* Regenerate prediction after a discontinuity */
                if (ast_tvzero(path->nextout))
                        path->nextout = ast_tvnow();
@@ -370,7 +360,7 @@ struct ast_frame *ast_translate(struct ast_trans_pvt *path, struct ast_frame *f,
                
                /* Predict next outgoing timestamp from samples in this
                   frame. */
-               path->nextout = ast_tvadd(path->nextout, ast_samp2tv(out->samples, out_rate));
+               path->nextout = ast_tvadd(path->nextout, ast_samp2tv(out->samples, format_rate(out->subclass)));
        } else {
                out->delivery = ast_tv(0, 0);
                out->has_timing_info = has_timing_info;
@@ -393,10 +383,7 @@ static void calc_cost(struct ast_translator *t, int seconds)
        struct ast_trans_pvt *pvt;
        struct timeval start;
        int cost;
-       int out_rate = 8000;
-
-       if (is16kHz(t->dstfmt))
-               out_rate = 16000;
+       int out_rate = format_rate(t->dstfmt);
 
        if (!seconds)
                seconds = 1;