首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >libjpeg是否支持decode-interrupt?

libjpeg是否支持decode-interrupt?
EN

Stack Overflow用户
提问于 2009-10-21 02:19:09
回答 3查看 575关注 0票数 0

我使用libjpeg来解码jpeg文件。当解码大图时,用户可能会切换到其他jpeg文件,那么libjpeg是否支持decode-interrupt?非常感谢!

EN

回答 3

Stack Overflow用户

发布于 2011-12-13 07:52:22

Libjpeg有一个I/O suspension feature。所以,是的,你可以暂停一个编码/解码过程(稍后恢复),或者简单地中断它(不希望以后继续)。

您可以为libjpeg提供自定义的输入例程(通过设置jpeg_source_mgr结构),然后使用libjpeg提供的I/O Suspension

引用libjpeg文档中的话说,挂起非常简单:

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

挂起可能发生在早期阶段(比如调用jpeg_read_header时)。同样来自文档:

这可能发生在四个地方:

代码语言:javascript
复制
jpeg_read_header(): will return JPEG_SUSPENDED.
jpeg_start_decompress(): will return FALSE, rather than its usual TRUE.
jpeg_read_scanlines(): will return the number of scanlines already completed (possibly 0).
jpeg_finish_decompress(): will return FALSE, rather than its usual TRUE.

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

票数 2
EN

Stack Overflow用户

发布于 2009-10-21 10:35:17

我不太明白你的问题。

就我所记得的,您按照通常的样板操作一直到jpeg_start_decompress(),然后开始通过jpeg_read_scanlines()迭代地读取代码行。如果需要取消操作,请中断读取扫描线的循环。

如果你需要更好的响应性,可以阅读更小的部分。

票数 1
EN

Stack Overflow用户

发布于 2011-12-13 05:14:20

你的问题不是真的:

代码语言:javascript
复制
"is libjpg thread safe?"

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1598413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档