繁体   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