簡體   English   中英

在某些使用MediaCodec高分辨率解碼H264流的三星設備上,dequeueOutputBuffer始終返回-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 )。

有人遇到這個問題嗎? 我嘗試在queueInputBufferdequeueOutputBuffer時修改參數,但無法修復。

原因是由於使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM