关于fpaq0算术压缩器代码的技术问询:ct数组、cxt及解码器等问题
关于fpaq0算术压缩器代码的疑问
我正在尝试啃fpaq0.cpp的算术压缩代码,目前已经搞懂了算术编码器的基础原理,也能理解void update(int y) { if (++ct[cxt][y] > 65534)...这段概率更新的逻辑,但还有几个核心点始终摸不透:
- 完全搞不懂
ct[512][2]和cxt的工作机制,这两个变量在代码里是怎么配合完成上下文建模的? - 对解码器的整体工作原理还是一头雾水,它是如何逆向还原出原始数据的?
- 还有个细节让我困惑:为什么在编码每个字符前都要调用
e.encode(0)?这一步到底起到什么作用?
内容的提问来源于stack exchange,提问作者Anany Shah
相关产品推荐
相关产品推荐

