mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-12 15:45:18 +00:00
func_jitterbuffer: Add audio/video sync support.
This change adds support to the JITTERBUFFER dialplan function for audio and video synchronization. When enabled the RTCP SR report is used to produce an NTP timestamp for both the audio and video streams. Using this information the video frames are queued until their NTP timestamp is equal to or behind the NTP timestamp of the audio. The audio jitterbuffer acts as the leader deciding when to shrink/grow the jitterbuffer when adaptive is in use. For both adaptive and fixed the video buffer follows the size of the audio jitterbuffer. ASTERISK-28533 Change-Id: I3fd75160426465e6d46bb2e198c07b9d314a4492
This commit is contained in:
@@ -44,7 +44,8 @@ struct ast_frame;
|
||||
enum {
|
||||
AST_JB_ENABLED = (1 << 0),
|
||||
AST_JB_FORCED = (1 << 1),
|
||||
AST_JB_LOG = (1 << 2)
|
||||
AST_JB_LOG = (1 << 2),
|
||||
AST_JB_SYNC_VIDEO = (1 << 3)
|
||||
};
|
||||
|
||||
enum ast_jb_type {
|
||||
@@ -89,6 +90,7 @@ struct ast_jb_conf
|
||||
#define AST_JB_CONF_TARGET_EXTRA "targetextra"
|
||||
#define AST_JB_CONF_IMPL "impl"
|
||||
#define AST_JB_CONF_LOG "log"
|
||||
#define AST_JB_CONF_SYNC_VIDEO "syncvideo"
|
||||
|
||||
/* Hooks for the abstract jb implementation */
|
||||
/*! \brief Create */
|
||||
|
@@ -2800,6 +2800,17 @@ struct ast_json *ast_rtp_convert_stats_json(const struct ast_rtp_instance_stats
|
||||
*/
|
||||
struct ast_json *ast_rtp_instance_get_stats_all_json(struct ast_rtp_instance *instance);
|
||||
|
||||
/*!
|
||||
* \brief Retrieve the sample rate of a format according to RTP specifications
|
||||
* \since 16.7.0
|
||||
* \since 17.1.0
|
||||
*
|
||||
* \param format The media format
|
||||
*
|
||||
* \retval The sample rate
|
||||
*/
|
||||
int ast_rtp_get_rate(const struct ast_format *format);
|
||||
|
||||
/*!
|
||||
* \since 12
|
||||
* \brief \ref stasis topic for RTP and RTCP related messages
|
||||
|
Reference in New Issue
Block a user