WebRTC M80:VP9 多层(SVC/联播)崩溃问题定位与分析
1. 问题背景
现象:在 VP9 编码场景下,开启 FlexFEC 时会触发 WebRTC 内部断言,导致崩溃。具体表现如下:
numSimulcastLayers = 1时正常numSimulcastLayers = 2时崩溃(在pc.setRemoteDescription()后触发编码线程崩溃)典型的崩溃日志:
Fatal error in .../vp9_impl.cc Check failed: ref_buf_.find(fb_idx) != ref_buf_.end()2. 核心结论
并非"内存只分配了两个 buffer"
ref_buf_是引用缓存映射,崩溃时仅有 key0/1,但编码配置要求引用fb_idx=2,导致断言失败。根本原因在于 VP9 SVC 参考链状态不同步(M80 旧路径问题),不是 FlexFEC 单点问题。
常见触发条件:多层 +