![](/img/trans.png)
[英]MediaCodec raw H264 decoding issue - times out and decoder.dequeueOutputBuffer always return -1
[英]on some Samsung devices decoding H264 stream at hight resolution with MediaCodec, dequeueOutputBuffer always return -1
我正在嘗試使用MediaCodec API與Android客戶端一起解碼H264流。 樣例代碼:
int decoderStatus = decoder.dequeueOutputBuffer(mBufferInfo, TIMEOUT_USEC);
當遠程H264流分辨率較大(例如:1600 * 1200)時,此函數將始終返回-1(MediaCodec.INFO_TRY_AGAIN_LATER)
,因此解碼將失敗,但無法捕獲任何異常。 如果分辨率較低(例如1920 * 1080、1280 * 720),則解碼機制工作正常。
這僅在某些三星設備上發生:Galaxy S3,Note2和note。
我還檢查了這些支持H264配置文件級別的機器,它們都是4級設備,理論上可以支持最大分辨率大小2048 * 1024( https://en.wikipedia.org/wiki/H.264/MPEG-4_AVC#Levels )。
有人遇到這個問題嗎? 我嘗試在queueInputBuffer
和dequeueOutputBuffer
時修改參數,但無法修復。
原因是由於使用EXYNOS4412 / EXYNOS4210處理器的Samsung設備。 這些類型的處理器使用Mali-400 MP4 GPU。
SoC集成了ARM Mali-400 MP4 GPU(在440 MHz下為15.8 GFLOPS)。 即使在1280 x 720像素等高分辨率下,典型的智能手機游戲(2012年)也將流暢運行。 可以通過多格式視頻解碼器(1080p AVI,WMV,H.264,H.263,VC1,MPEG2,MPEG4)加速視頻。 ( http://www.notebookcheck.net/Samsung-Exynos-4412-Quad-ARM-SoC.86876.0.html )
因此,如果視頻分辨率超過1080P,則解碼器將凍結。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.