摘要:本期就分享幾個關于DVPP圖片解碼問題的典型案例,并給出原因分析及解決方法,
本文分享自華為云社區《DVPP媒體資料處理圖片解碼問題案例》,作者:昇騰CANN ,
DVPP(Digital Vision Pre-Processing)是昇騰AI處理器內置的影像處理單元,通過AscendCL媒體資料處理介面提供強大的媒體處理硬加速能力,主要功能包括影像編解碼、視頻編解碼、影像摳圖縮放等,
本期就分享幾個關于DVPP圖片解碼問題的典型案例,并給出原因分析及解決方法:
- 圖片格式不支持或圖片資料不完整,圖片解碼失敗
- 影像解碼行程超時退出
01圖片格式不支持或圖片資料不完整,圖片解碼失敗
問題現象資訊
圖片解碼失敗,查看日志有類似如下報錯資訊:
日志片段舉例1:
Unsupported subsample format, just support jpeg with YUV 444 440 422 420 400 do not support progressive mode do not support arithmetic code, support huffman code only
日志片段舉例2:
EOI segment of the stream is invalid
原因分析
分析上面日志資訊,可能存在以下可能原因:
- 資料格式不支持
- 圖片資料不完整
解決措施
針對上述可能原因,請按以下方式處理:
1、目前不支持的超規格影像格式,建議用戶自行使用第三方軟體解碼,
解碼JPEG圖片,只支持JPEG圖片為huffman編碼(colorspace: yuv, subsample: 444/440/422/420/400 ),不支持算術編碼,不支持漸進編碼,不支持jpeg2000格式,
2、圖片資料不完整,根據報錯提示,通過第三方軟體查看原影像二進制進行確認,
影像缺失最后的EOI結束符,對應影像二進制類似下圖所示,正常JPEG圖片最后應該由標記碼FF D9結束,該資料最后缺失FF D9標記碼,
如果確認原圖資料不完整,報錯屬于正常現象,需更換圖片,
3、原影像資料完整,可能資料在傳輸程序中存在損壞,需要在呼叫圖片解碼介面前,通過fwrite函式將送入解碼介面的的圖片碼流保存下來,與原JPEG圖進行二進制比較,如果不一致,傳輸程序出現資料缺失,需進一步定位傳輸程序資料缺失問題后,再重新解碼圖片,
02影像解碼行程超時退出
問題現象資訊
用戶行程退出,
查看應用類日志,發現類似ERROR日志“task timeout, userData= https://www.cnblogs.com/huaweiyun/p/..., timeout=30, duration=…”和WARNING日志“frames statistic: ACL receive(n), send(n-1)”,n表示處理任務數量,需根據實際情況確定,
日志片段舉例如下:
[ERROR] AICPU(pid,pName):DateTimeMS [dvpp_timeout_manager.cc:33][OnPulse][tid:2581][DVPP_KERNELS] WaitId[10] task timeout, userData=https://www.cnblogs.com/huaweiyun/p/0xe7ffe0001280, timeout=30, duration=30.930062. [INFO] AICPU(pid,pName):DateTimeMS [dvpp_kernel_base.cc:222][SendTaskCompleteToTs][tid:2581][DVPP_KERNELS] Send task complete to ts success, taskId=2, streamId=44, errorCode=1. [WARNING] DVPP(pid,pName):DateTimeMS [JpegdAsyncManager.cpp:405][API] [PrintFrameCount:405] [T208] DFX [JPEGD]: frames statistic: ACL receive(16), send(15)
原因分析
多路并發解碼JPEG圖片場景下,如果每一路解碼的JPEG圖片中,都包含帶旋轉資訊的大解析度圖片,例如3840*2160解析度及以上的圖片,則可能導致圖片解碼時間過長,從而導致用戶行程超時退出,
解決措施
1、確定大解析度的圖片是否包含旋轉資訊,
使用JPEG碼流分析工具(例如JPEGsnoop)決議大解析度的圖片,查看其是否包含旋轉資訊,若Orientation資訊為1,則表示不旋轉;否則,都帶有一定角度的旋轉,例如下圖決議出來的Orientation資訊為8,表示順時針旋轉270°,
2、如果無法更換圖片,確定這些圖片是帶旋轉的大解析度圖片,則建議用戶先呼叫第三方庫(例如OpenCV)進行解碼,
03更多介紹
[1]昇騰檔案中心:https://www.hiascend.com/zh/document
[2]昇騰社區在線課程:https://www.hiascend.com/zh/edu/courses
[3]昇騰論壇:https://www.hiascend.com/forum
點擊關注,第一時間了解華為云新鮮技術~
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/554450.html
標籤:其他
下一篇:返回列表
