我正在使用turbojpeg读取图像。
我正在沿着以下路线做一些事情:
m_data = tjAlloc(MAX_RAW_SIZE);
c_jpeg_buffer = tjAlloc(MAX_RAW_SIZE);
tjDecompressHeader2(jpegDecompressor, c_jpeg_buffer, _jpegSize, &tj_width, &tj_height, &jpegSubsamp);
tjDecompress2(c_jpegDecompressor, m_data, _jpegSize, c_jpeg_buffer, tj_width, 0/*pitch*/, tj_height, TJPF_GRAY, TJFLAG_FASTDCT);
tjFree(c_jpeg_buffer);
tjFree(m_data);
如果_jpegSize或(tj_width*tj_height)太大,我想重新分配m_data和c_jpeg_buffer。turbojpeg文档表明,如果我使用tjCompress2(…)或tjTransform(…),这将自动发生。它没有说明在这种情况下会发生什么。假设我重新分配缓冲区-使用tjFree()是否仍然安全?
对于未来的turboJpeg用户。。。RTFM。。。
如果你发送一个预先分配的缓冲区,你需要传递它的大小。缓冲区本身和大小都可能更改。