我正在使用libjpeg解碼jpeg文件。 當解碼一個大的圖像時,用戶可能會切換到另一個jpeg文件,那麼libjpeg支持的decode-interrupt? 非常感謝!在libjpeg中是否支持decode-interrupt?
回答
我不知道我明白你的問題。
據我記得你做的通常鍋爐板達jpeg_start_decompress()
,然後你開始通過jpeg_read_scanlines()
反覆讀線。如果您需要取消操作,請跳出讀取掃描線的循環。
如果您需要更好的響應能力,請閱讀更小的塊。
是不是你的問題真:
"is libjpg thread safe?"
我認爲這基本上是,如果底層stdio庫是或不使用jpeg_stdio_src。然而,爲了處於「生命的光明一面」,我會按照Georg的建議,在每個read_scanline之後檢查一個掛起的中斷(您的中斷處理程序可以設置中斷掛起標誌)。這就是我解決這個問題的方式(我需要搶先調度線程)。
你確定嗎?因爲http://www.imagemagick.org/discourse-server/viewtopic.php?t=8702表示它不是 – 2017-08-03 14:11:08
Libjpeg有一個I/O suspension feature。因此,您可以暫停編碼/解碼過程(稍後恢復),或者乾脆中斷它(不希望以後繼續)。
您可以提供一個自定義的輸入例程到libjpeg(通過設置jpeg_source_mgr
結構),然後使用libjpeg提供的I/O Suspension。
從文檔的libjpeg引用,懸浮液是非常簡單的:
對於減壓懸浮液,(錯誤恢復期間也許除了,如下面所討論的)使用fill_input_buffer()例程,簡單地返回FALSE。這將導致解壓縮器返回其呼叫者,並指示暫停已發生。
暫停可能發生在早期階段(如致電jpeg_read_header
時)。同樣來自DOC:
這可以在四個地方發生:
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.
懸架實現了一些回溯,以提供一種方法來「恢復」的編碼/解碼過程。它可能很昂貴(我對此毫無頭緒),因此您可以測試它是否符合您的需求。
- 1. 在tomcat中是否存在支持salt的JDBCRealm的支持?
- 2. Safari中是否支持XSLTProcessor()?
- 3. Confluence是否支持中文?
- 4. 是否支持MSNP9?
- 5. 是否支持DataGrid?
- 6. 是否支持ARC?
- 7. 是否在maven中支持kapt?
- 8. Mysqli在查詢中是否支持MAX?
- 9. 是否在QuarkIQ中支持MQTT?
- 10. 在Silverlight中是否支持iso-8859-1?
- 11. 是否在Google Chrome中支持JSON?
- 12. python中是否有libjpeg的實現?
- 13. Firefox是否支持enablePrivilege(「UniversalBrowserRead」)?
- 14. Xcode 4.3是否支持distcc?
- 15. GCC是否支持C++ AMP
- 16. PySide是否支持Python 3?
- 17. AlertDialog是否支持WebView?
- 18. GWT是否支持php?
- 19. 是否正式支持android.speech.extra.DICTATION_MODE?
- 20. Android 4.0.3是否支持SIP?
- 21. 是否支持WSE 3.0?
- 22. logback是否支持log4j appenders?
- 23. py2app是否支持python3?
- 24. Freemarker是否支持MethodDescriptors?
- 25. JOGL是否支持NURBS?
- 26. System.Data.OracleClient是否支持oracle 11g?
- 27. Dapper是否支持枚舉?
- 28. Azure是否支持AIX?
- 29. WCF + net.tcp是否支持3DES?
- 30. Xcode 4是否支持AVX?
非常感謝! 所以你的意思是,如果我想中斷解碼,我需要修改libjpeg源代碼,對吧? – user25749 2009-10-21 09:43:42
你想打斷什麼? 'jpeg_read_scanlines()'? – 2009-10-21 09:53:14
解碼圖像需要1000ms,在300ms我決定取消解碼。 我希望解碼器能夠立即中斷 – user25749 2009-10-22 01:35:58