lzma_easy_encoder函数源码
时间: 2024-03-16 10:40:55 浏览: 66
`lzma_easy_encoder`函数是liblzma库中的一个封装函数,它的源码如下:
```
lzma_ret lzma_easy_encoder(lzma_stream *strm, uint32_t preset, lzma_check check) {
// 初始化压缩器状态
lzma_ret ret = lzma_easy_encoder_memusage(preset);
if (ret != LZMA_OK) {
return ret;
}
ret = lzma_stream_encoder(strm, &lzma_preset[preset]);
if (ret != LZMA_OK) {
lzma_end(strm);
return ret;
}
// 设置检验方式
ret = lzma_stream_encoder_mt(strm, lzma_mt, check);
if (ret != LZMA_OK) {
lzma_end(strm);
return ret;
}
return LZMA_OK;
}
```
该函数首先调用`lzma_easy_encoder_memusage`函数计算指定压缩级别所需的内存大小,并进行相应的内存分配和初始化。然后调用`lzma_stream_encoder`函数初始化压缩器状态,并将预设的压缩参数传递给压缩器。接下来调用`lzma_stream_encoder_mt`函数设置检验方式,并开启多线程压缩。最后返回压缩器状态码。如果出现错误,需要调用`lzma_end`函数释放内存。
阅读全文