[asterisk-commits] file: branch group/media_formats r406135 - /team/group/media_formats/main/

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Tue Jan 21 16:17:27 CST 2014


Author: file
Date: Tue Jan 21 16:17:21 2014
New Revision: 406135

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=406135
Log:
Move "core show codecs" over to the new codec API.

Modified:
    team/group/media_formats/main/codec.c
    team/group/media_formats/main/format.c

Modified: team/group/media_formats/main/codec.c
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats/main/codec.c?view=diff&rev=406135&r1=406134&r2=406135
==============================================================================
--- team/group/media_formats/main/codec.c (original)
+++ team/group/media_formats/main/codec.c Tue Jan 21 16:17:21 2014
@@ -36,6 +36,7 @@
 #include "asterisk/astobj2.h"
 #include "asterisk/strings.h"
 #include "asterisk/module.h"
+#include "asterisk/cli.h"
 
 /*! \brief Number of buckets to use for codecs (should be prime for performance reasons) */
 #define CODEC_BUCKETS 53
@@ -97,9 +98,82 @@
 	return CMP_MATCH;
 }
 
+static char *show_codecs(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
+{
+	struct ao2_iterator i;
+	struct ast_codec *codec;
+
+	switch (cmd) {
+	case CLI_INIT:
+		e->command = "core show codecs [audio|video|image|text]";
+		e->usage =
+			"Usage: core show codecs [audio|video|image|text]\n"
+			"       Displays codec mapping\n";
+		return NULL;
+	case CLI_GENERATE:
+		return NULL;
+	}
+
+	if ((a->argc < 3) || (a->argc > 4)) {
+		return CLI_SHOWUSAGE;
+	}
+
+	if (!ast_opt_dont_warn) {
+		ast_cli(a->fd, "Disclaimer: this command is for informational purposes only.\n"
+				"\tIt does not indicate anything about your configuration.\n");
+	}
+
+	ast_cli(a->fd, "%8s %5s %8s %s\n","ID","TYPE","NAME","DESCRIPTION");
+	ast_cli(a->fd, "-----------------------------------------------------------------------------------\n");
+
+	ao2_rdlock(codecs);
+	i = ao2_iterator_init(codecs, 0);
+
+	for (; (codec = ao2_iterator_next(&i)); ao2_ref(codec, -1)) {
+		if (a->argc == 4) {
+			if (!strcasecmp(a->argv[3], "audio")) {
+				if (codec->type != AST_MEDIA_TYPE_AUDIO) {
+					continue;
+				}
+			} else if (!strcasecmp(a->argv[3], "video")) {
+				if (codec->type != AST_MEDIA_TYPE_VIDEO) {
+					continue;
+				}
+			} else if (!strcasecmp(a->argv[3], "image")) {
+				if (codec->type != AST_MEDIA_TYPE_IMAGE) {
+					continue;
+				}
+			} else if (!strcasecmp(a->argv[3], "text")) {
+				if (codec->type != AST_MEDIA_TYPE_TEXT) {
+					continue;
+				}
+			} else {
+				continue;
+			}
+		}
+
+		ast_cli(a->fd, "%8u %5s %8s (%s)\n",
+			codec->id,
+			ast_codec_media_type2str(codec->type),
+			codec->name,
+			codec->description);
+	}
+
+	ao2_iterator_destroy(&i);
+	ao2_unlock(codecs);
+
+	return CLI_SUCCESS;
+}
+
+/* Builtin Asterisk CLI-commands for debugging */
+static struct ast_cli_entry codec_cli[] = {
+	AST_CLI_DEFINE(show_codecs, "Displays a list of registered codecs"),
+};
+
 /*! \brief Function called when the process is shutting down */
 static void codec_shutdown(void)
 {
+	ast_cli_unregister_multiple(codec_cli, ARRAY_LEN(codec_cli));
 	ao2_cleanup(codecs);
 }
 
@@ -110,6 +184,7 @@
 		return -1;
 	}
 
+	ast_cli_register_multiple(codec_cli, ARRAY_LEN(codec_cli));
 	ast_register_atexit(codec_shutdown);
 
 	return 0;

Modified: team/group/media_formats/main/format.c
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats/main/format.c?view=diff&rev=406135&r1=406134&r2=406135
==============================================================================
--- team/group/media_formats/main/format.c (original)
+++ team/group/media_formats/main/format.c Tue Jan 21 16:17:21 2014
@@ -812,79 +812,6 @@
 	}
 }
 
-static char *show_codecs(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
-{
-	int x, found=0;
-	size_t f_len;
-	const struct ast_format_list *f_list;
-
-	switch (cmd) {
-	case CLI_INIT:
-		e->command = "core show codecs [audio|video|image|text]";
-		e->usage =
-			"Usage: core show codecs [audio|video|image|text]\n"
-			"       Displays codec mapping\n";
-		return NULL;
-	case CLI_GENERATE:
-		return NULL;
-	}
-
-	if ((a->argc < 3) || (a->argc > 4)) {
-		return CLI_SHOWUSAGE;
-	}
-
-	f_list = ast_format_list_get(&f_len);
-	if (!ast_opt_dont_warn) {
-		ast_cli(a->fd, "Disclaimer: this command is for informational purposes only.\n"
-				"\tIt does not indicate anything about your configuration.\n");
-	}
-
-	ast_cli(a->fd, "%8s %5s %8s %s\n","ID","TYPE","NAME","DESCRIPTION");
-	ast_cli(a->fd, "-----------------------------------------------------------------------------------\n");
-
-	for (x = 0; x < f_len; x++) {
-		if (a->argc == 4) {
-			if (!strcasecmp(a->argv[3], "audio")) {
-				if (AST_FORMAT_GET_TYPE(f_list[x].format.id) != AST_FORMAT_TYPE_AUDIO) {
-					continue;
-				}
-			} else if (!strcasecmp(a->argv[3], "video")) {
-				if (AST_FORMAT_GET_TYPE(f_list[x].format.id) != AST_FORMAT_TYPE_VIDEO) {
-					continue;
-				}
-			} else if (!strcasecmp(a->argv[3], "image")) {
-				if (AST_FORMAT_GET_TYPE(f_list[x].format.id) != AST_FORMAT_TYPE_IMAGE) {
-					continue;
-				}
-			} else if (!strcasecmp(a->argv[3], "text")) {
-				if (AST_FORMAT_GET_TYPE(f_list[x].format.id) != AST_FORMAT_TYPE_TEXT) {
-					continue;
-				}
-			} else {
-				continue;
-			}
-		}
-
-		ast_cli(a->fd, "%8u %5s %8s (%s)\n",
-			f_list[x].format.id,
-			(AST_FORMAT_GET_TYPE(f_list[x].format.id) == AST_FORMAT_TYPE_AUDIO) ? "audio" :
-			(AST_FORMAT_GET_TYPE(f_list[x].format.id)  == AST_FORMAT_TYPE_IMAGE)  ? "image" :
-			(AST_FORMAT_GET_TYPE(f_list[x].format.id)  == AST_FORMAT_TYPE_VIDEO) ? "video" :
-			(AST_FORMAT_GET_TYPE(f_list[x].format.id)  == AST_FORMAT_TYPE_TEXT)  ? "text"  :
-			"(unk)",
-			f_list[x].name,
-			f_list[x].desc);
-		found = 1;
-	}
-
-	f_list = ast_format_list_destroy(f_list);
-	if (!found) {
-		return CLI_SHOWUSAGE;
-	} else {
-		return CLI_SUCCESS;
-	}
-}
-
 static char *show_codec_n(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
 	enum ast_format_id format_id;
@@ -931,7 +858,6 @@
 
 /* Builtin Asterisk CLI-commands for debugging */
 static struct ast_cli_entry my_clis[] = {
-	AST_CLI_DEFINE(show_codecs, "Displays a list of codecs"),
 	AST_CLI_DEFINE(show_codec_n, "Shows a specific codec"),
 };
 




More information about the asterisk-commits mailing list