From: George Joseph Date: Thu, 20 Aug 2020 13:32:03 +0000 (-0600) Subject: stream.c: Added 2 more debugging utils and added pos to stream string X-Git-Tag: certified/16.8-cert4-rc3~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fb78adce210bae296099a8e8a5df1f3918a39f54;p=thirdparty%2Fasterisk.git stream.c: Added 2 more debugging utils and added pos to stream string * Added ast_stream_to_stra and ast_stream_topology_to_stra() macros which are shortcuts for ast_str_tmp(256, ast_stream_to_str(stream, &STR_TMP)) * Added the stream position to the string representation of the stream. * Fixed some formatting in ast_stream_to_str(). Change-Id: Idaf4cb0affa46d4dce58a73a111f35435331cc4b --- diff --git a/include/asterisk/stream.h b/include/asterisk/stream.h index a91124b0ef..caffef48be 100644 --- a/include/asterisk/stream.h +++ b/include/asterisk/stream.h @@ -197,6 +197,19 @@ void ast_stream_set_type(struct ast_stream *stream, enum ast_media_type type); */ const char *ast_stream_to_str(const struct ast_stream *stream, struct ast_str **buf); +/*! + * \brief Get a stack allocated string representing the stream for debugging/display purposes + * + * \param stream A stream + * + * \returns a stack allocated pointer to a string representing the stream. + * + * \warning No attempt should ever be made to free the returned + * char* as it is allocated from the stack. + * + */ +#define ast_stream_to_stra(__stream) ast_str_tmp(128, ast_stream_to_str(__stream, &STR_TMP)) + /*! * \brief Get the count of the current negotiated formats of a stream * @@ -610,4 +623,17 @@ int ast_stream_topology_get_active_count(const struct ast_stream_topology *topol */ const char *ast_stream_topology_to_str(const struct ast_stream_topology *topology, struct ast_str **buf); +/*! + * \brief Get a stack allocated string representing the topology for debugging/display purposes + * + * \param topology A topology + * + * \returns a stack allocated pointer to a string representing the topology. + * + * \warning No attempt should ever be made to free the returned + * char* as it is allocated from the stack. + * + */ +#define ast_stream_topology_to_stra(__topology) ast_str_tmp(256, ast_stream_topology_to_str(__topology, &STR_TMP)) + #endif /* _AST_STREAM_H */ diff --git a/main/stream.c b/main/stream.c index 091eb1c5d0..b02e09b767 100644 --- a/main/stream.c +++ b/main/stream.c @@ -196,22 +196,23 @@ struct ast_format_cap *ast_stream_get_formats(const struct ast_stream *stream) const char *ast_stream_to_str(const struct ast_stream *stream, struct ast_str **buf) { - if (!buf || !*buf) { - return ""; - } + if (!buf || !*buf) { + return ""; + } - if (!stream) { - ast_str_append(buf, 0, "(null stream)"); - return ast_str_buffer(*buf); - } + if (!stream) { + ast_str_append(buf, 0, "(null stream)"); + return ast_str_buffer(*buf); + } - ast_str_append(buf, 0, "%s:%s:%s ", - S_OR(stream->name, "noname"), - ast_codec_media_type2str(stream->type), - ast_stream_state_map[stream->state]); - ast_format_cap_append_names(stream->formats, buf); + ast_str_append(buf, 0, "%d:%s:%s:%s ", + stream->position, + S_OR(stream->name, "noname"), + ast_codec_media_type2str(stream->type), + ast_stream_state_map[stream->state]); + ast_format_cap_append_names(stream->formats, buf); - return ast_str_buffer(*buf); + return ast_str_buffer(*buf); } int ast_stream_get_format_count(const struct ast_stream *stream) @@ -522,18 +523,18 @@ int ast_stream_topology_get_count(const struct ast_stream_topology *topology) int ast_stream_topology_get_active_count(const struct ast_stream_topology *topology) { - int i; - int count = 0; - ast_assert(topology != NULL); + int i; + int count = 0; + ast_assert(topology != NULL); - for (i = 0; i < AST_VECTOR_SIZE(&topology->streams); i++) { - struct ast_stream *stream = AST_VECTOR_GET(&topology->streams, i); - if (stream->state != AST_STREAM_STATE_REMOVED) { - count++; - } - } + for (i = 0; i < AST_VECTOR_SIZE(&topology->streams); i++) { + struct ast_stream *stream = AST_VECTOR_GET(&topology->streams, i); + if (stream->state != AST_STREAM_STATE_REMOVED) { + count++; + } + } - return count; + return count; } struct ast_stream *ast_stream_topology_get_stream( @@ -630,6 +631,7 @@ struct ast_stream_topology *ast_stream_topology_create_from_format_cap( ast_stream_topology_free(topology); return NULL; } + /* We're transferring the initial ref so no bump needed */ stream->formats = new_cap; stream->state = AST_STREAM_STATE_SENDRECV;