FEC前向纠错码源码解析 (0) 整体介绍

68 阅读1分钟

在实时音视频的网络传输中,我们需要平衡数据传输的时效性数据的完整性,FEC(Forward Error Correction 前向纠错)技术可以帮助我们实现这一目标。

FEC的原理: 在发送端对原始报文数据进行编码,生成一些额外的恢复包。当一部分原始数据包在网络传输中丢失时,只要收到足够数量的剩余包(无论是原始的还是恢复的),接收端能通过解码把丢失的数据完美地复原出来。这对于保证在不可靠网络上数据传输的完整性至关重要,并且不依赖报文重传,实现了实时通信。

本教程将详细介绍FEC的原理、实现和应用,帮助你更好地理解和使用FEC技术。

  • 如果仅想了解如何调用使用FEC库,可只阅读第1章节FEC 公共接口 (FEC Public Interface)。
  • 如果进一步想了解FEC的内部编码器/解码器实现原理,可阅读后续章节。

本项目源码参考的源码 GitHub 仓库地址为:github.com/catid/fecal

使用这个项目代码的原因:

  • 代码相对比较简单,性能足够满足常见音视频场景
  • 我比较熟悉,在自己开发的raylink、镭速产品中有参考应用

** 整体结构介绍

flowchart TD
    A0["FEC 公共接口 (FEC Public Interface)"]
    A1["伽罗瓦域 (GF(256)) 运算"]
    A2["编码器 (Encoder)"]
    A3["解码器 (Decoder)"]
    A4["恢复矩阵 (Recovery Matrix)"]
    A5["数据窗口 (AppDataWindow)"]
    A0 -- "创建和封装" --> A2
    A0 -- "创建和封装" --> A3
    A2 -- "应用运算生成恢复数据" --> A1
    A2 -- "组织原始数据" --> A5
    A3 -- "使用矩阵求解" --> A4
    A3 -- "追踪数据状态" --> A5
    A4 -- "应用运算求解方程" --> A1
    A4 -- "查询丢失数据信息" --> A5
    A3 -- "应用运算恢复数据" --> A1

章节

  1. FEC 公共接口 (FEC Public Interface)
  2. 编码器 (Encoder)
  3. 解码器 (Decoder)
  4. 数据窗口 (AppDataWindow)
  5. 恢复矩阵 (Recovery Matrix)
  6. 伽罗瓦域 (GF(256)) 运算