前面我们分析了音视频同步中的两种策略:视频同步到音频,以及音频同步到视频。接下来要分析的是第三种,音频和视频都同步到外部时钟。 先回顾下前面两种同步策略。 视频同步到音频主要由函数compute_target_delay
计算出lastvp应显示时长,并通过frame_timer对比系统时间控制输出,最后在video_refresh
中更新了video clock。
static double compute_target_delay(double delay, VideoState *is)
{
//A. 只要主时钟不是video,就需要作同步校正
if (get_master_sync_type(is)