Merge "channel: Add support for writing to a specific stream."

This commit is contained in:
zuul
2017-02-24 11:16:13 -06:00
committed by Gerrit Code Review
4 changed files with 498 additions and 12 deletions

View File

@@ -670,6 +670,9 @@ struct ast_channel_tech {
/*! \brief Write a frame, in standard format (see frame.h) */
int (* const write)(struct ast_channel *chan, struct ast_frame *frame);
/*! \brief Write a frame on a specific stream, in standard format (see frame.h) */
int (* const write_stream)(struct ast_channel *chan, int stream_num, struct ast_frame *frame);
/*! \brief Display or transmit text */
int (* const send_text)(struct ast_channel *chan, const char *text);
@@ -1968,6 +1971,18 @@ int ast_write_video(struct ast_channel *chan, struct ast_frame *frame);
*/
int ast_write_text(struct ast_channel *chan, struct ast_frame *frame);
/*!
* \brief Write a frame to a stream
* This function writes the given frame to the indicated stream on the channel.
* \param chan destination channel of the frame
* \param stream_num destination stream on the channel
* \param frame frame that will be written
* \return It returns 0 on success, -1 on failure.
* \note If -1 is provided as the stream number and a media frame is provided the
* function will write to the default stream of the type of media.
*/
int ast_write_stream(struct ast_channel *chan, int stream_num, struct ast_frame *frame);
/*! \brief Send empty audio to prime a channel driver */
int ast_prod(struct ast_channel *chan);
@@ -4768,4 +4783,17 @@ struct ast_stream_topology *ast_channel_get_stream_topology(
struct ast_stream_topology *ast_channel_set_stream_topology(
struct ast_channel *chan, struct ast_stream_topology *topology);
/*!
* \brief Retrieve the default stream of a specific media type on a channel
*
* \param channel The channel to get the stream from
* \param type The media type of the default stream
*
* \pre chan is locked
*
* \retval non-NULL success
* \retval NULL failure
*/
struct ast_stream *ast_channel_get_default_stream(struct ast_channel *chan, enum ast_media_type type);
#endif /* _ASTERISK_CHANNEL_H */