diff options
author | Joshua Colp <jcolp@digium.com> | 2017-03-10 16:02:08 -0600 |
---|---|---|
committer | Gerrit Code Review <gerrit2@gerrit.digium.api> | 2017-03-10 16:02:08 -0600 |
commit | 018e01543dd7392fd99873090b1781c05362b3cf (patch) | |
tree | 97e33b6bf3c314e044134cac47f75d495e9d03c2 | |
parent | 87aaaef8bbf74b772074c446a559a3befdc8a4b0 (diff) | |
parent | 36fed726146dcc32c5bc02b5f2ef69aec141f1e7 (diff) |
Merge "pjsip/cli_commands: pjsip show channelstats shows wrong codec"
-rw-r--r-- | channels/pjsip/cli_commands.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/channels/pjsip/cli_commands.c b/channels/pjsip/cli_commands.c index 8ea39d144..fc14b25a8 100644 --- a/channels/pjsip/cli_commands.c +++ b/channels/pjsip/cli_commands.c @@ -344,11 +344,10 @@ static int cli_channelstats_print_body(void *obj, void *arg, int flags) struct ast_sip_channel_pvt *cpvt = channel ? ast_channel_tech_pvt(channel) : NULL; struct chan_pjsip_pvt *pvt = cpvt ? cpvt->pvt : NULL; struct ast_sip_session_media *media = pvt ? pvt->media[SIP_MEDIA_AUDIO] : NULL; - struct ast_rtp_codecs *codecs = media && media->rtp ? ast_rtp_instance_get_codecs(media->rtp) : NULL; - struct ast_format *format = codecs ? ast_rtp_codecs_get_payload_format(codecs, 0) : NULL; struct ast_rtp_instance_stats stats; char *print_name = NULL; char *print_time = alloca(32); + char codec_in_use[7]; ast_assert(context->output_buffer != NULL); @@ -358,6 +357,16 @@ static int cli_channelstats_print_body(void *obj, void *arg, int flags) return -1; } + codec_in_use[0] = '\0'; + + if (channel) { + ast_channel_lock(channel); + if (ast_channel_rawreadformat(channel)) { + ast_copy_string(codec_in_use, ast_format_get_name(ast_channel_rawreadformat(channel)), sizeof(codec_in_use)); + } + ast_channel_unlock(channel); + } + print_name = ast_strdupa(snapshot->name); /* Skip the PJSIP/. We know what channel type it is and we need the space. */ print_name += 6; @@ -372,7 +381,7 @@ static int cli_channelstats_print_body(void *obj, void *arg, int flags) snapshot->bridgeid, print_name, print_time, - format ? ast_format_get_name(format) : "", + codec_in_use, stats.rxcount > 100000 ? stats.rxcount / 1000 : stats.rxcount, stats.rxcount > 100000 ? "K": " ", stats.rxploss > 100000 ? stats.rxploss / 1000 : stats.rxploss, @@ -389,7 +398,6 @@ static int cli_channelstats_print_body(void *obj, void *arg, int flags) ); } - ao2_cleanup(format); ao2_cleanup(channel); return 0; |