8.1 解码器框架设计(Decoder Framework Design)
第七章结尾,我们许下了一个承诺:亲手造一台播放器。造播放器的第一块基石,是解码器——把第七章运抵的码流还原成帧的那台机器。第六章学编码时我们站在 "生产比特" 的一侧,本章要翻到硬币的另一面:消费比特。
这一翻,问题的性质就变了。编码规格只约束 "码流长什么样",从不规定 "代码该怎么写"——同一个 H.264 码流,可以用查表加速、可以用 SIMD 并行、可以省掉一切花哨优化只求正确。规格给定的是结果,过程的全部自由度与全部责任,都压在工程设计上。解码器框架,就是接住这份责任的那套骨架。
本节按 "本质 → 架构 → 管线 → 暗坑" 的顺序递进:
- 8.1.1 从规格到代码:解码器的本质:编码四环的逆运算长什么样;为什么解码器不止是数学,更是一台状态机
- 8.1.2 FFmpeg 六库:分层的艺术:avformat/avcodec/avutil/swscale/swresample/avfilter 的正交职责;工业级分层如何消化复杂性
- 8.1.3 收发分离:解码 API 的状态机:send/receive 解耦的深意;EAGAIN 背压与排干模式;为什么 "喂一个包出一帧" 是错觉
- 8.1.4 管线与 seek:工程落地的暗坑:PTS/DTS 铁律与 B 帧重排;seek 的三层组合拳;ffplay 参考实现的线程形态
完成本节后,我们将手握解码器框架的完整设计图——8.2 的播放器核心系统,就建在这张图上。