translate: Show sample rate for silk, speex, and slin in translation table.
authorAlexander Traud <pabstraud@compuserve.com>
Sat, 25 Nov 2017 10:09:08 +0000 (11:09 +0100)
committerAlexander Traud <pabstraud@compuserve.com>
Sat, 25 Nov 2017 10:09:08 +0000 (11:09 +0100)
ASTERISK-24662

Change-Id: I3822956984292c99c48bca8e97807e498ccc0e88

main/translate.c

index f2aa588..30f1649 100644 (file)
@@ -945,7 +945,8 @@ static void handle_cli_recalc(struct ast_cli_args *a)
 static char *handle_show_translation_table(struct ast_cli_args *a)
 {
        int x, y, i, k;
-       int longest = 0, num_codecs = 0, curlen = 0;
+       int longest = 7; /* slin192 */
+       int num_codecs = 0, curlen = 0;
        struct ast_str *out = ast_str_create(1024);
        struct ast_codec *codec;
 
@@ -982,6 +983,7 @@ static char *handle_show_translation_table(struct ast_cli_args *a)
 
                ast_str_set(&out, 0, " ");
                for (k = 0; k < num_codecs; k++) {
+                       int adjust = 0;
                        struct ast_codec *col = k ? ast_codec_get_by_id(k) : NULL;
 
                        y = -1;
@@ -997,6 +999,12 @@ static char *handle_show_translation_table(struct ast_cli_args *a)
 
                        if (k > 0) {
                                curlen = strlen(col->name);
+                               if (!strcmp(col->name, "slin") ||
+                                       !strcmp(col->name, "speex") ||
+                                       !strcmp(col->name, "silk")) {
+                                       adjust = log10(col->sample_rate / 1000) + 1;
+                                       curlen = curlen + adjust;
+                               }
                        }
 
                        if (curlen < 5) {
@@ -1008,10 +1016,25 @@ static char *handle_show_translation_table(struct ast_cli_args *a)
                                ast_str_append(&out, 0, "%*u", curlen + 1, (matrix_get(x, y)->table_cost/100));
                        } else if (i == 0 && k > 0) {
                                /* Top row - use a dynamic size */
-                               ast_str_append(&out, 0, "%*s", curlen + 1, col->name);
+                               if (!strcmp(col->name, "slin") ||
+                                       !strcmp(col->name, "speex") ||
+                                       !strcmp(col->name, "silk")) {
+                                       ast_str_append(&out, 0, "%*s%u", curlen - adjust + 1,
+                                               col->name, col->sample_rate / 1000);
+                               } else {
+                                       ast_str_append(&out, 0, "%*s", curlen + 1, col->name);
+                               }
                        } else if (k == 0 && i > 0) {
                                /* Left column - use a static size. */
-                               ast_str_append(&out, 0, "%*s", longest, row->name);
+                               if (!strcmp(row->name, "slin") ||
+                                       !strcmp(row->name, "speex") ||
+                                       !strcmp(row->name, "silk")) {
+                                       int adjust_row = log10(row->sample_rate / 1000) + 1;
+                                       ast_str_append(&out, 0, "%*s%u", longest - adjust_row,
+                                               row->name, row->sample_rate / 1000);
+                               } else {
+                                       ast_str_append(&out, 0, "%*s", longest, row->name);
+                               }
                        } else if (x >= 0 && y >= 0) {
                                /* Codec not supported */
                                ast_str_append(&out, 0, "%*s", curlen + 1, "-");