首页 > 解决方案 > 库在 zlib 压缩/放气代码中的哪个位置决定应该将块作为未压缩的形式复制到压缩流中?

问题描述

zlib 技术细节的“最大扩展因子”部分中指出“在最坏的可能情况下,其他块类型会扩展数据,通缩回落到存储(未压缩)块。”

我很难弄清楚这个决定在 zlib compress / deflate代码中实际发生的位置。I can see that deflate_storedis called when the selected levelis 0, which makes sense, but besides that I don't see it being used.

如果有人能指出我正确的方向,那将很有帮助。

此外,做出这些决定的块粒度(就未压缩数据而言)是多少?我知道在放气时,未压缩的块可以达到 64KB,但是压缩块没有定义的块大小。显然,这与霍夫曼代码对块的有用程度有关,但如果知道做出这些决定时是否存在块大小,那就太好了。

标签: compressionzlibdeflate

解决方案


块级别的决定在 tree.c ( https://github.com/madler/zlib/blob/master/trees.c )


推荐阅读