diff --git a/res/res_rtp_asterisk.c b/res/res_rtp_asterisk.c index ad9cb7d6cc0b3fd860952ce99f29b9358992decd..403c397f6c48fc07f0a510c256a33f0d010bf374 100644 --- a/res/res_rtp_asterisk.c +++ b/res/res_rtp_asterisk.c @@ -5926,6 +5926,26 @@ static const char *rtcp_payload_type2str(unsigned int pt) return str; } +static const char *rtcp_payload_subtype2str(unsigned int pt, unsigned int subtype) +{ + switch (pt) { + case AST_RTP_RTCP_RTPFB: + if (subtype == AST_RTP_RTCP_FMT_NACK) { + return "NACK"; + } + break; + case RTCP_PT_PSFB: + if (subtype == AST_RTP_RTCP_FMT_REMB) { + return "REMB"; + } + break; + default: + break; + } + + return NULL; +} + /*! \pre instance is locked */ static int ast_rtp_rtcp_handle_nack(struct ast_rtp_instance *instance, unsigned int *nackdata, unsigned int position, unsigned int length) @@ -6255,10 +6275,16 @@ static struct ast_frame *ast_rtcp_interpret(struct ast_rtp_instance *instance, s } if (rtcp_debug_test_addr(addr)) { + const char *subtype = rtcp_payload_subtype2str(pt, rc); + ast_verbose("\n"); ast_verbose("RTCP from %s\n", ast_sockaddr_stringify(addr)); - ast_verbose("PT: %u(%s)\n", pt, rtcp_payload_type2str(pt)); - ast_verbose("Reception reports: %u\n", rc); + ast_verbose("PT: %u (%s)\n", pt, rtcp_payload_type2str(pt)); + if (subtype) { + ast_verbose("Packet Subtype: %u (%s)\n", rc, subtype); + } else { + ast_verbose("Reception reports: %u\n", rc); + } ast_verbose("SSRC of sender: %u\n", ssrc); }