diff options
author | zuul <zuul@gerrit.asterisk.org> | 2017-02-22 11:40:02 -0600 |
---|---|---|
committer | Gerrit Code Review <gerrit2@gerrit.digium.api> | 2017-02-22 11:40:02 -0600 |
commit | 6c22d4b32012af7596bfcc29a95f9ca19a80b392 (patch) | |
tree | 9293754c7fc2d4848c2139792cd2fed78200a284 /main | |
parent | 10302fa63ffa97f1db90d2fc90480095e12ac468 (diff) | |
parent | f58aefba5be6ab8ada6899ff50c6148830032814 (diff) |
Merge "core: Show streams in "core show channel"."
Diffstat (limited to 'main')
-rw-r--r-- | main/cli.c | 19 | ||||
-rw-r--r-- | main/stream.c | 18 |
2 files changed, 37 insertions, 0 deletions
diff --git a/main/cli.c b/main/cli.c index ccdbb97c3..06f2d55b2 100644 --- a/main/cli.c +++ b/main/cli.c @@ -61,6 +61,7 @@ #include "asterisk/stasis_channels.h" #include "asterisk/stasis_bridges.h" #include "asterisk/vector.h" +#include "asterisk/stream.h" /*! * \brief List of restrictions per user. @@ -1542,6 +1543,7 @@ static char *handle_showchan(struct ast_cli_entry *e, int cmd, struct ast_cli_ar struct ast_bridge *bridge; ast_callid callid; char callid_buf[32]; + int stream_num; switch (cmd) { case CLI_INIT: @@ -1668,6 +1670,7 @@ static char *handle_showchan(struct ast_cli_entry *e, int cmd, struct ast_cli_ar S_OR(ast_channel_data(chan), "(Empty)"), S_OR(callid_buf, "(None)") ); + ast_str_append(&output, 0, " Variables:\n"); AST_LIST_TRAVERSE(ast_channel_varshead(chan), var, entries) { @@ -1679,6 +1682,22 @@ static char *handle_showchan(struct ast_cli_entry *e, int cmd, struct ast_cli_ar ast_str_append(&output, 0, " CDR Variables:\n%s\n", ast_str_buffer(obuf)); } + ast_str_append(&output, 0, " -- Streams --\n"); + for (stream_num = 0; stream_num < ast_stream_topology_get_count(ast_channel_get_stream_topology(chan)); stream_num++) { + struct ast_stream *stream = ast_stream_topology_get_stream(ast_channel_get_stream_topology(chan), stream_num); + + ast_str_append(&output, 0, + "Name: %s\n" + " Type: %s\n" + " State: %s\n" + " Formats: %s\n", + ast_stream_get_name(stream), + ast_codec_media_type2str(ast_stream_get_type(stream)), + ast_stream_state2str(ast_stream_get_state(stream)), + ast_format_cap_get_names(ast_stream_get_formats(stream), &codec_buf) + ); + } + ast_channel_unlock(chan); ast_cli(a->fd, "%s", ast_str_buffer(output)); diff --git a/main/stream.c b/main/stream.c index aacd33f17..8bee2fdd0 100644 --- a/main/stream.c +++ b/main/stream.c @@ -168,6 +168,24 @@ void ast_stream_set_state(struct ast_stream *stream, enum ast_stream_state state stream->state = state; } +const char *ast_stream_state2str(enum ast_stream_state state) +{ + switch (state) { + case AST_STREAM_STATE_REMOVED: + return "removed"; + case AST_STREAM_STATE_SENDRECV: + return "sendrecv"; + case AST_STREAM_STATE_SENDONLY: + return "sendonly"; + case AST_STREAM_STATE_RECVONLY: + return "recvonly"; + case AST_STREAM_STATE_INACTIVE: + return "inactive"; + default: + return "<unknown>"; + } +} + int ast_stream_get_position(const struct ast_stream *stream) { ast_assert(stream != NULL); |