我的应用程序创建了几个MediaCodec实例,它们作为视频/音频解码器和编码器并行工作。
我知道视频编解码器有限制缓冲区空间,这个限制取决于设备。
例如,在三星 SM-P600 选项卡上,我可以创建四个分辨率为 720p 的 MediaCodecs:
1280*720*4=3686400
但不是五个:
1280*720*5=4608000
因为编解码器在配置过程中会返回错误:
E/OMX: setParam sum(4608000) > max resolution(4177920)
E/ACodec: [OMX.Exynos.AVC.Encoder] failed to set input port definition parameters.
E/ACodec: configureCodec multi window instance fail appPid : 17054
E/ACodec: [OMX.Exynos.AVC.Encoder] configureCodec returning error -1021
E/ACodec: signalError(omxError 0x80001001, internalError -1021)
E/MediaCodec: Codec reported err 0xfffffc03, actionCode 0, while in state 3
E/MediaCodec: configure failed with err 0xfffffc03, resetting...
在配置 MediaCodecs 以计算我需要的所有 MediaCodecs 的最大可用分辨率之前,如何获得最大分辨率(4177920) ?