0

我正在使用 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);

我想重新分配 m_data 和 c_jpeg_buffer 以防 _jpegSize 或 (tj_width*tj_height) 太大。turbojpeg 文档表明,如果我使用 tjCompress2(...) 或 tjTransform(...),这将自动发生。它没有说明在这种情况下会发生什么。假设我重新分配缓冲区 - 使用 tjFree() 是否仍然安全?

4

1 回答 1

0

对于 turboJpeg 的未来用户... RTFM...

如果你发送一个预分配的缓冲区,你需要传递它的大小。两者都缓冲本身,并且大小可能会更改。

于 2013-10-24T07:17:01.550 回答