Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ libjpeg是否支持解码中断?_C++_Jpeg_Libjpeg - Fatal编程技术网

C++ libjpeg是否支持解码中断?

C++ libjpeg是否支持解码中断?,c++,jpeg,libjpeg,C++,Jpeg,Libjpeg,我正在使用libjpeg对jpeg文件进行解码。 在解码大图像时,用户可能会切换到另一个jpeg文件,所以libjpeg是否支持解码中断? 非常感谢 我不太明白你的问题 据我记忆所及,您使用常规的锅炉板,直到jpeg\u start\u decompress(),然后开始通过jpeg\u read\u scanlines()迭代地读取行。如果需要取消操作,请中断读取扫描线的循环。 如果您需要更好的响应能力,请从小到大阅读。我不确定我是否理解您的问题 据我记忆所及,您使用常规的锅炉板,直到jpeg

我正在使用libjpeg对jpeg文件进行解码。 在解码大图像时,用户可能会切换到另一个jpeg文件,所以libjpeg是否支持解码中断?
非常感谢

我不太明白你的问题

据我记忆所及,您使用常规的锅炉板,直到
jpeg\u start\u decompress()
,然后开始通过
jpeg\u read\u scanlines()
迭代地读取行。如果需要取消操作,请中断读取扫描线的循环。

如果您需要更好的响应能力,请从小到大阅读。

我不确定我是否理解您的问题

据我记忆所及,您使用常规的锅炉板,直到
jpeg\u start\u decompress()
,然后开始通过
jpeg\u read\u scanlines()
迭代地读取行。如果需要取消操作,请中断读取扫描线的循环。

如果您需要更好的响应能力,请分小段阅读。

您的问题不是真的:

"is libjpg thread safe?"

我认为基本上是这样的,如果底层stdio库是或者您没有使用jpeg\u stdio\u src。然而,为了“生活的光明面”,我会遵循Georg的建议,在每次读取扫描线之后检查是否有挂起的中断(您的中断处理程序可以设置一个中断挂起标志)。这就是我解决这个问题的方法(我需要抢先安排线程)。

你的问题不是真的吗:

"is libjpg thread safe?"
我认为基本上是这样的,如果底层stdio库是或者您没有使用jpeg\u stdio\u src。然而,为了“生活的光明面”,我会遵循Georg的建议,在每次读取扫描线之后检查是否有挂起的中断(您的中断处理程序可以设置一个中断挂起标志)。这就是我解决这个问题的方法(我需要抢占式线程调度)。

Libjpeg有一个解决方案。因此,是的,您可以暂停编码/解码过程(稍后再继续),或者只是中断它(以后不想继续)

您可以为libjpeg提供自定义的输入例程(通过设置
jpeg\u source\u mgr
结构),然后使用libjpeg提供的

引用libjpeg文档,暂停非常简单:

对于解压暂停,使用fill_input_buffer()例程,该例程只返回FALSE(错误恢复期间除外,如下所述)。这将导致解压缩程序返回其调用者,并指示已发生暂停

暂停可能发生在早期阶段(如调用
jpeg\u read\u头时)。此外,从文件:

这可能发生在四个地方:

Suspension实现一些回溯,以便提供一种“恢复”编码/解码过程的方法。它可能很昂贵(我对此一无所知),所以您可以测试它,看看它是否适合您的需要。

Libjpeg有一个。因此,是的,您可以暂停编码/解码过程(稍后再继续),或者只是中断它(以后不想继续)

您可以为libjpeg提供自定义的输入例程(通过设置
jpeg\u source\u mgr
结构),然后使用libjpeg提供的

引用libjpeg文档,暂停非常简单:

对于解压暂停,使用fill_input_buffer()例程,该例程只返回FALSE(错误恢复期间除外,如下所述)。这将导致解压缩程序返回其调用者,并指示已发生暂停

暂停可能发生在早期阶段(如调用
jpeg\u read\u头时)。此外,从文件:

这可能发生在四个地方:


Suspension实现一些回溯,以便提供一种“恢复”编码/解码过程的方法。它可能很贵(我对此一无所知),所以您可以测试一下它是否适合您的需要。

非常感谢!你的意思是,如果我想中断解码,我需要修改libjpeg源代码,对吗?解码一幅图像需要1000毫秒,300毫秒时我决定取消解码。我希望解码器能够立即中断,而解码图像可能需要1000毫秒,如果你阅读小块,调用jpeg_read_scanlines()应该很快。非常感谢!你的意思是,如果我想中断解码,我需要修改libjpeg源代码,对吗?解码一幅图像需要1000毫秒,300毫秒时我决定取消解码。我希望解码器能够立即中断,而解码图像可能需要1000毫秒,如果读取小块图像,调用jpeg_read_scanlines()应该很快。你确定吗?因为他说这不是皮重你确定吗?因为他说不是